Hi everybody,
I created a tool that uses this site's XML export featureto create a multi-column "Karaoke List" PDF of the songs in your Rock Band collection:
http://www.tdavis.org/rockband/
Instructions are at the address above. Note that you must be a donor to MyRockBandSongs.com to have access to the Custom Print Booklet feature that my tool requires. My booklet printed from this site is 18 pages, while my Karaoke List is only four. :-)
Rob, if you'd like to create a link directly to this tool from a user's saved booklet (e.g. next to the "XML" link), you can do so by linking to:
http://www.tdavis.org/rockband/?rbs_url=[URL]
Where [URL] is the full URL to the booklet's XML URL.
Please consider this the "official" support and feature request thread, should anyone besides me even use this thing. :-)
Update March 28th
=================
* By msignore's suggestions, you can choose to group and sort songs alphabetically by the first letter in the title.
* You can choose US Letter or A4 paper size for the final PDF.
Update April 7th
================
* By pmpboarder's suggestion, you can choose the number of columns on the page.
Update April 12th
=================
* By pmpboarder's suggestion, you can choose from a few different font sizes.
* Five columns can now be chosen (mainly useful for the small font size).
* Footer now shows "Page X of Y"
Update April 20th
=================
* A few changes to support DLCQuickPlay.com. Note that the URL has changed (the old one will redirect to the new one):
Update May 19th
===============
* You can now chose to include a cover page with your latest song additions (enabled by default).
Update August 30th
==================
* You can now chose to group songs by genre. The "song grouping" option that already existed will further divide songs within genres.
Update November 29th
====================
* By risser's suggestion, you can now chose to group songs by decade. The "song grouping" option has been renamed to "top grouping", and the genre grouping option moved there.
rob (Admin) on
March 8, 2011 at 9:12 PM
Looks great! Glad the xml feature can be put to use :) . I see you only use the song/artist info... that was my biggest problem with doing any multi-column support (which I still have on my list to tackle..) i was trying to fit as much data as possible + make it multi column... but this works well for those who only need song/artist. I'll see what I can do to link it up
Glad someone will find it useful after all.
As for the technical problem you mentioned, I'm also hard pressed to see how it would be possible to create a multi-column layout using nothing other than XHTML *and* get it from the browser to physical paper in a way that works consistently.
I did get one mock-up of such a thing working, but it would have required the user to manually input the number of rows of text per column, and the only way to figure out that would have been to load it, print a page, count the number of rows that fit, then go back and do it again. Hence just doing it in PDF.
This looks great, thanks a lot!
Hey Troy, can you make a "by song" karaoke book? often people know the name of a song but cant remember the artist name...
thx,
marty
Mr. Davis, I tried it but I got the following error when I clicked on the "Generate PDF" button...
Mr. Rob, I've never used XML before, so I don't know if this is supposed to happen, but when I try the XML link I get a page that has all of the info without any page breaks and the following up at the top:
"This page contains the following errors:
error on line 3604 at column 18: Encoding error
Below is a rendering of the page up to the first error."
Am I doing something wrong?
That should also read no line breaks as well as no page breaks...
It sounds like that error is generating from Rob's site, not mine (I see nothing in my error logs), but give me the booklet's XML address (as you would paste into the first field on the form on my web site) and I'll take a look, too.
My first guess is there's some UTF8 character in an artist or band name (accented or umlaut vowels, etc.) that's not been converted into an HTML entity.
msignore: That's possible, but a by-song book is going to be many times longer than a by-artist book. It's the grouping by artist that keeps the by-artist book so condensed. You might as well use Rob's printing features for such a book, but I'm open to layout suggestions.
Just tried this out. Worked fine and looked great!
I'm getting an error from one of the European singles, "Peut-Être une Angine" by Anaïs. (UTF8? More like... WTF8.) Any way around that?
http://myrockbandsongs.com/pmpboarder/print-booklet/xml/1556/
ERROR FROM ROB'S SITE:
XML Parsing Error: not well-formed
Location:
http://myrockbandsongs.com/pmpboarder/print-booklet/xml/1556/
Line Number 276, Column 23: < song>< ![CDATA[Peut-tre une Angine]]>< /song>
------------------------------------^
ERROR FROM TROY'S SITE:
Error generating PDF: :276: parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xCA 0x74 0x72 0x65 < song>< ![CDATA[Peut-Être une Angine]]>< /song> ^ at /usr/lib/perl5/XML/LibXML/SAX/Parser.pm line 31
Rob: Your server is not sending a charset in the Content-Type header, so us-ascii is the assumed default per RFC 3023, but it appears you're sending iso-8859-1. You'll have to encode those 8-bit characters as entities (or send a correct charset) for the document to be well-formed.
In the meantime I have a stopgap fix in place, so pmpboarder, rockbandblarney, and anyone else with artists or songs with non-ASCII names should be able to print a list from my site.
rob (Admin) on
March 28, 2011 at 10:30 AM
I converted them all to html entities, so hopefully that fixes it. If not, let me know. I'm not an expert at xml, so if there is something different I should be placing in the top of the file for the version and encoding type, just let me know :)
I'm afraid I may have made things more complicated. :-) There are two different problems now.
I'm guessing that since you're a PHP guy, you're using htmlentities() to convert characters to entities. The first problem is that there's a difference between HTML named character entities and XML named character entities. XML defines only five named character entities:
< - <
> - >
& - &
" - "
' - '
HTML defines further named entities for e.g. accented letters (such as í in Juanes' song "Fíjate Bien"), but they are invalid in XML. All other entities in XML must be numeric entities.
More info:
http://perl-xml.sourceforge.net/faq/#undefined_entity
Second, I've just noticed that you're outputting each field wrapped in <![CDATA[ ... ]]> tags. These are character data fields, and XML parsers do not interpret any entities found in those fields. The purpose is to allow you to send large blocks of text with characters that normally must be converted into entities, similar to how [code]...[/code] tags behave on some message boards.
So when your side sends this:
<song><![CDATA[3's & 7's]]></song>
A valid XML parser must interpret it as the literal string "3's & 7's", and not what you probably meant, which was "3's & 7's". Either of these are valid fixes:
<song>3's & 7's</song>
<song><![CDATA[3's & 7's]]></song>
Similarly, your side sends:
<song><![CDATA[Fíjate Bien]]></song>
And this is the fix:
<song>Fíjate Bien</song>
More info:
http://perl-xml.sourceforge.net/faq/#using_cdata
I think the roadmap for your side is:
1. Drop the use of CDATA sections.
2. Encode the five characters mentioned above to their named entities.
3. Encode all other non-7-bit ASCII characters to numeric entities.
In the PHP documentation for htmlentities():
http://php.net/manual/en/function.htmlentities.php
...search the page for the string "xml" and you'll a couple of comments from people who've already solved this problem. This comment in particular is relevant (though he doesn't handle apostrophes):
http://www.php.net/manual/en/function.htmlentities.php#97215
PHP isn't my tool of choice, so there may be some newer module or built-in command for handling this stuff.
rob (Admin) on
March 28, 2011 at 3:37 PM
Any reason they can't all be numeric entities? Or do those 5 need to be character entities?
I just fiddled around with this and there isn't a simple way to do it from what i've seen. I got it to work right now to have them all numeric, and I suppose I could just write my own function go through and string replace the numeric entities with the character ones for the ones listed above... but just curious if that is really needed or not.
All numeric entities should work fine, but there's no need to write your own function--the guy in the last link I mentioned did.
Also, I'm seeing an extra bogus > at the end of each field, before the field close tag:
<song>Just Hang On></song>
rob (Admin) on
March 28, 2011 at 3:44 PM
That's fixed, forgot to upload the changes ;)
Thanks for the help!
Yep, ampersands working fine, non-ASCII characters working fine, etc. Thanks!
Two new features added:
* By msignore's suggestion, you can choose to group and sort songs alphabetically by the first letter in the title. (It turns out this is actually shorter than by-artist even with fewer and wider columns. ;-))
* You can choose US Letter or A4 paper size for the final PDF.
http://www.tdavis.org/rockband/
For Troy and Rob:
Thanks a ton for getting both sites to work well together. Rob's site is great for printing specific information for stat-crazy people (like myself), and Troy's is great for people who don't care what instruments a song has or what year it was released. Artist. Title. Period. I appreciate all the work both of you have done and find use in both tools you offer.
Now, for Troy:
Is there a way we could do three columns instead of four? I know *most* songs fit in the four columns, but every one that doesn't just nags at my OCD. I know in the grand scheme of things, there are very few songs affected by this, but even at 3 columns, your karaoke books are really short.
Or, perhaps you could wrap the text and indent the wrapped text a little more. Something like this:
Mission of Burma
...Mica
...That's How I Escaped My Certain
......Fate
...That's When I Reached for My
......Revolver
I know that wouldn't look very good, so maybe just allow users to pick 2, 3 or 4 columns? (If this option is already available, disregard, as I completely overlooked it. But do let me know where I can find it, if it is available.)
Just a thought. Thanks!
EDIT: I wonder if "I MAED A GAM3 W1TH Z0MB1ES 1N IT!!!1" and similar, ridiculously titled tracks would even fit in three columns...
Word-wrapping won't happen (too annoying to implement, sorry), but a selectable number of columns can be done.
Awesome. I kind of figured word-wrapping would be a hassle, but I thought I'd suggest something other than fewer columns.
I look forward to your next update!
You can now choose the number of columns. :-) Keep the suggestions coming.
Thanks, Troy! Looks great. A few other things:
1) Font size
Any chance you could let us choose what font size we want on the booklet? Rob does a percentage, which I think works well. It's obvious that anything above or below 100% is larger or smaller than your default option. I may even go back to four columns if I can still read even the next font size down. Having both columns and font size selectable really gives anyone the option to make their perfectly formatted book. Huge font? 2 columns. Tiny font? 4 columns. Sweet.
2) Page number
Could this be displayed as "Page ## of ##" or simply "## of ##"? Also, could you select alignment (left/right/center)? Also, is it possible to alternate inside/outside, for people who put front/back sheets in a sleeve? (Where it's closest to the binder or the outside corner. Like reading a book. Not sure if I'm explaining myself well enough.)
3) Omit/customizable header
It's not that I'm against advertising for these sites, but I prefer the cleanliness of no headers. If you are going to force it, could you also add a dictionary-esque header? So, Page 1 for me would be ".38 Special - Boston" and Page 2 would be "Boston - Filter", and so on. This would be the same alignment as the page number. Not sure if that's easily doable. Probably not.
4) Page for new additions
Instead of bold-facing the new additions, could we just print a page specifically for them? It would cut down on the number of times we would need to print a new book. Perhaps give the following options: 'new page only', 'bold face only', 'new page + bold face'. The new page would obviously not need to be bold faced, but someone printing the entire book may want to give the new additions extra emphasis while browsing.
5) Tricky miscellany
I'm not sure how to explain this one, or if it's possible at all. But I would like something that marks the song as containing Pro guitar/bass, keys and/or harmonies. Since the library is so scattered, it would be nice to have a hint somehow. I like that Rob's site lets you show it in a column, but seeing all the 'N/A's is really bothersome. This would only show up if the song had them. I'm thinking a simple letter before the song: P, K, H, or A for All? It could be half the size of the chose font, so you could almost make a cube out of it. PK above HA. Of course, if it is A, you woulnd't need the other letters. Again, I realize this would probably be very difficult to implement.
6) Donations
You're obviously putting time and bandwidth into this project. I'm sure I'm not the only one who would like to show my appreciation.
If any of this was unclear, I can try explaining it better. Otherwise, keep up the great work! Oh, and thanks for the shout out on your site. :)
> Could this be displayed as "Page ## of ##" or simply "## of ##"?
That's an easy one, and is done.
I'll fiddle around with some of the others when I get time.
No need for donations to me. It's a fun hobby for me, and if rob hadn't already made this site first, I would have made one like it myself.
You can now choose from a few different font sizes, and up to five columns can now be chosen (mainly useful for the small font size).
[About to leave work, so sorry if any of this seems rushed or unclear.]
Badass. I played around with the new features a bit, and it looks like I'm gonna go with: small font, 4 columns. Out of curiosity, what are the font sizes of small, medium and large? No rush, but any plans to expand the selection (ie. smallest, small, medium, large, largest)?
Also, today's Fleetwood Mac/Stevie Nicks tracks are showing up bold, even though I put a '0' in the '"New" days' field. Could that be because I purchased them today (0 days ago)? On the site, it says 0 disables. Could you maybe find a more reliable way of disabling?
One other thing: how do you determine the shading/no shading? I figured it alternated with every artist, but then I started thinking it might be column/page breaks. It almost seems like if there is a new artist at the top of the column, if will shade, but there are a couple columns of mine that start without shading (even with a new artist at the very top). I only ask because it seems inconsistent, so my brain needs to know. It's strictly out of curiosity and I don't consider it a problem or anything.
Keep up the great work! You're competing with Rob for the request:implementation time ratio!
The font sizes are 6, 8, and 10 points. I don't think a font smaller than 6pt would even be legible.
"0" new days is now fixed. Songs purchased within one hour of generating the list were still bolded because the time on rob's server is Eastern and on mine it's Central.
In "artist" song grouping mode, the background color alternates with every artist, but a miscalculation prevented it from changing at the top of a new column when a blank line was left at the bottom of the previous column, which is done to avoid orphaning an artist name at the bottom of a column (separating it from its songs). That's fixed.
Yeah, 6 point is quite small. I didn't actually print one off, but the print preview made it look bigger than that. Anyway, yeah, 6, 8 and 10 should just about be perfect, considering the column options.
As for the '0 new days' time zone issue, I will keep that in mind.
That's interesting about the grouping. It all makes sense now!
Thanks for the information and fixes!
There's been a few changes to my site to support DLCQuickPlay.com. The main one that will effect users here is that address of the site has changed. The old one will redirect to the new one for now.
You can now chose to include a cover page with your latest song additions (enabled by default).
Hey,
i have 588 songs. your list says 591 songs because three NIN songs (Head like a hole, terrible lie and Sanctified) were doubled on the list...
apart from that:
GREAT WORK !
Michael080869: Try removing/readding the three duped songs and trying again.
rob: Michael080869's XML dump does indeed show three dupes:
<song>
<song>Head Like a Hole</song>
<artist>Nine Inch Nails</artist>
<date_purchased>2011-03-02 03:02:00</date_purchased>
</song>
<song>
<song>Head Like a Hole</song>
<artist>Nine Inch Nails</artist>
<date_purchased>2011-03-02 03:02:00</date_purchased>
</song>
<song>
<song>Sanctified</song>
<artist>Nine Inch Nails</artist>
<date_purchased>2011-03-02 03:02:00</date_purchased>
</song>
<song>
<song>Sanctified</song>
<artist>Nine Inch Nails</artist>
<date_purchased>2011-03-02 03:02:00</date_purchased>
</song>
<song>
<song>Terrible Lie</song>
<artist>Nine Inch Nails</artist>
<date_purchased>2011-03-02 03:02:00</date_purchased>
</song>
<song>
<song>Terrible Lie</song>
<artist>Nine Inch Nails</artist>
<date_purchased>2011-03-02 03:02:00</date_purchased>
</song>
Went to generate a booklet from the site today (XML feed:
http://myrockbandsongs.com/zorbak00/print-booklet/xml/1589/ ) and got this error:
Error generating PDF: :19: parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0x92 0x6D 0x20 0x47 When I’m Gone ^ at /usr/lib/perl5/XML/LibXML/SAX/Parser.pm line 31
I assume this is a problem with the new 3 Doors Down song. Can it be fixed?
Rob: zorbak00's problem is that "When I'm Gone" and "When You're Young" have 8-bit left single quote characters (hex 92, decimal 146) instead of the 7-bit ASCII apostrophe characters or ' entities.
I just submitted those changes to make them plain apostrophes. I'm not sure if those will get auto-approved or if Rob has to approve them.
Looks like it's fixed now, thanks!
Getting this after trying this morning:
Error generating PDF: :1725: parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0x92 0x72 0x65 0x20 Sugar, We’re Goin' Down ^ at /usr/lib/perl5/XML/LibXML/SAX/Parser.pm line 31
It looks like the apostrophe in "We're" was a weird Unicode character. I submitted a change to make it a regular apostrophe. Try it again now and let us know.
A new feature has been added: You can now group songs by genre. The "song grouping" option that already existed will further divide songs within genres.
You will need to edit your saved custom print booklet to add the "Genre" column to use this feature.
Let me know if you have any trouble with the feature.
zorbak00 on
September 30, 2011 at 11:17 AM
Tried the Genre Grouping feature when it first came out and it appeared to work fine. Now when I try it I get a "Failed to load PDF document" message. Generating a booklet without the Genre Grouping turned on works fine.
The link to my booklet is
http://myrockbandsongs.com/zorbak00/print-booklet/xml/1589/
Thanks, zorbak00
Troy, any thoughts on the Genre Grouping issue above?
Actually, I just tried it again and it appears to be working correctly now. Not sure if it was a problem on my end or yours but it seems to be all good now.
Sorry for the long delay, but I haven't been checking this thread as often as I used to.
The problem was the result of some songs not having genre information on rob's side. This is fixed now. In your case, those songs were:
The Clash - Rock the Casbah
Janis Joplin and the Full Tilt Boogie Band - Me and Bobby McGee
Limp Bizkit - Nookie
Slipknot - Left Behind
Slipknot - Pulse of the Maggots
Slipknot - Snuff
Slipknot - Wait and Bleed
So when this wasn't working for you on September 30th, and then suddenly started working again on October 5th, it was because someone had added genre information in the meantime.
You can add my vote for adding the link.
It works great and turned my 30+ into still readable 9.
Thanks!
Hey Troy,
Any way to rebrand so I can throw my business' name and URL up top?
I'd be willing to donate like it is available here.
That's doable, but I can't make any promises about implementation date. We'll see. ;-)
This is cool, but with a little Excel-fu, you can make your own booklets with a little thing called copy and paste. Hardest part was figuring out how to get Excel 2003 to include the header on all pages. Then I took out everything but song title, artist, and genre, and sorted by artist.
The advantage here is that you can fix inaccuracies, for example if you have a specific capitalisation scheme you prefer, or if you like to turn The _____ into _____, The for sorting purposes (or not). Then you can change, e.g. Tom Petty and the Heartbreakers to just Tom Petty (because, the rest is just assumed, you see Tom Petty, you know it's not just him, of course it's the whole band). And then you can remove duplicate artist names, e.g. do we really need to have AC/DC for all (18? 21?) of them? Or just the first? Or maybe we want to grey out the 2nd thru the last. So many choices, so easy to implement on the fly, change up, move around, etc.
856 songs sure uses a lot of sheets of dead tree, though. I think I printed it on 13 pages?
Dark_Reality_X,
None of us really understand computers around here. Could you explain that little thing called copy and paste? I tried putting my computer screen face down on the copier at work, but the pages didn't come out very clear. So then I tried pasting the monitor to the copier like you suggested, but that just made it worse.
I don't understand. Please help.
Your friend,
Troy Davis
A new feature has been added. You can now chose to group songs by decade. The "song grouping" option has been renamed to "top grouping", and the genre grouping option moved there.
You will need to edit your saved custom print booklet to add the "Year" column to use this feature.
TheZon on
November 29, 2011 at 10:30 PM
Is there a way I can supply a custom XML feed for this generator (i.e. one not hosted by myrockbandsongs.com)?
Nope. If you just want to use a different list of songs, the easiest way to accomplish what you want would probably be to create a second account.
Just a suggestion, not sure if it was mentioned before. It'd be nice if, when sorting by artist and the artist's songs are broken across two columns (or two pages), if the artist's name was repeated at the top of the next column. Perhaps optionally, since some people might find that more confusing, but I'd find it more readable that way
Hey Troy,
Is this still being supported? I'm getting a time-out when I try generating my PDF.
EDIT: Nevermind, it worked. That was weird.
EDIT 2: I did notice that no cover sheet printed. I added a bunch of songs today and put in 90 days, 50 days, 1 day, and never got a cover sheet to print.
The problem is that the custom print booklet you used (for which you paste in the XML address on my site) doesn't have the "Date Purchased" field selected (or the "Genre" field, if you want to use those features).