<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Game g = new Game(); &#187; groovy drums music programming</title>
	<atom:link href="http://thomasschweitzer.com/tag/groovy-drums-music-programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://thomasschweitzer.com</link>
	<description>Nerdy thoughts</description>
	<lastBuildDate>Fri, 28 May 2010 09:25:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Groovy drumming</title>
		<link>http://thomasschweitzer.com/2008/06/23/groovy-drumming/</link>
		<comments>http://thomasschweitzer.com/2008/06/23/groovy-drumming/#comments</comments>
		<pubDate>Mon, 23 Jun 2008 15:54:35 +0000</pubDate>
		<dc:creator>tom</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[groovy drums music programming]]></category>

		<guid isPermaLink="false">http://www.cyblex.at/blog/?p=83</guid>
		<description><![CDATA[Recently I bought myself a cool Roland V-Drum set.
Now I stumbled across freedrumlessons.com, a site with dozens of (you guessed it) free drum lessons on video.
In order to avoid downloading all video files manually, I wrote a little Groovy script. It greps the overview page for all links to sub-pages, and then scrapes all the [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I bought myself a cool <a href="http://www.roland.com/V-Drums/products/index.html">Roland V-Drum</a> set.</p>
<p>Now I stumbled across <a href="http://www.freedrumlessons.com/">freedrumlessons.com</a>, a site with dozens of (you guessed it) free drum lessons on video.</p>
<p>In order to avoid downloading all video files manually, I wrote a little <a href="http://www.groovy.org/">Groovy</a> script. It greps the overview page for all links to sub-pages, and then scrapes all the sub-pages for MP4-files (so I can put them on my iPod later).</p>
<p>I can&#8217;t imagine what it would have been like using plain Java&#8230;</p>
<p><span id="more-125"></span></p>
<p>Here&#8217;s the code:</p>
<p>[sourcecode language='java']<br />
println (&#8216;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8217;)<br />
def filesToDownload = []<br />
def url = &#8216;http://www.freedrumlessons.com/drum-lessons&#8217;</p>
<p>def slurper = new XmlSlurper(new org.ccil.cowan.tagsoup.Parser())</p>
<p>def html = slurper.parse(url)<br />
def lists = html.&#8217;**&#8217;.findAll { it.name() == &#8216;li&#8217;}</p>
<p>def links = lists.a*.&#8217;@href&#8217;<br />
links.removeAll([''])</p>
<p>def i = 0</p>
<p>links.each {<br />
	def scrapeurl = &#8220;http://www.freedrumlessons.com${it}&#8221;<br />
	println &#8220;Scraping ${scrapeurl}&#8230;&#8221;<br />
	def innerSlurper = new XmlSlurper(new org.ccil.cowan.tagsoup.Parser())<br />
	def innerHtml = innerSlurper.parse(scrapeurl)</p>
<p>	def files = innerHtml.depthFirst().grep{ it.name() == &#8216;a&#8217; &#038;&#038; it.@href.toString().endsWith(&#8216;.mp4&#8242;) }.&#8217;@href&#8217;</p>
<p>	files.each {<br />
		filesToDownload += it.toString()<br />
		println (&#8220;Added ${it}&#8221;)<br />
	}<br />
}</p>
<p>println (&#8216; ** &#8216;)</p>
<p>filesToDownload.each {<br />
	println (&#8220;Downloading ${it}&#8221;)<br />
	def filename = it.tokenize(&#8216;/&#8217;)[-1]<br />
	def infile = new FileOutputStream(filename)<br />
	def outfile = new BufferedOutputStream(infile)<br />
	outfile << new URL(it).openStream()<br />
	outfile.close()<br />
}</p>
<p>println &#8220;Finished&#8221;<br />
[/sourcecode]</p>



Share this:


	<a rel="nofollow"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fthomasschweitzer.com%2F2008%2F06%2F23%2Fgroovy-drumming%2F&amp;title=Groovy%20drumming&amp;source=Game+g+%3D+new+Game%28%29%3B+Nerdy+thoughts&amp;summary=Recently%20I%20bought%20myself%20a%20cool%20Roland%20V-Drum%20set.%0A%0ANow%20I%20stumbled%20across%20freedrumlessons.com%2C%20a%20site%20with%20dozens%20of%20%28you%20guessed%20it%29%20free%20drum%20lessons%20on%20video.%0A%0AIn%20order%20to%20avoid%20downloading%20all%20video%20files%20manually%2C%20I%20wrote%20a%20little%20Groovy%20script." title="LinkedIn"><img src="http://thomasschweitzer.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fthomasschweitzer.com%2F2008%2F06%2F23%2Fgroovy-drumming%2F&amp;title=Groovy%20drumming&amp;notes=Recently%20I%20bought%20myself%20a%20cool%20Roland%20V-Drum%20set.%0A%0ANow%20I%20stumbled%20across%20freedrumlessons.com%2C%20a%20site%20with%20dozens%20of%20%28you%20guessed%20it%29%20free%20drum%20lessons%20on%20video.%0A%0AIn%20order%20to%20avoid%20downloading%20all%20video%20files%20manually%2C%20I%20wrote%20a%20little%20Groovy%20script." title="del.icio.us"><img src="http://thomasschweitzer.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fthomasschweitzer.com%2F2008%2F06%2F23%2Fgroovy-drumming%2F&amp;title=Groovy%20drumming&amp;bodytext=Recently%20I%20bought%20myself%20a%20cool%20Roland%20V-Drum%20set.%0A%0ANow%20I%20stumbled%20across%20freedrumlessons.com%2C%20a%20site%20with%20dozens%20of%20%28you%20guessed%20it%29%20free%20drum%20lessons%20on%20video.%0A%0AIn%20order%20to%20avoid%20downloading%20all%20video%20files%20manually%2C%20I%20wrote%20a%20little%20Groovy%20script." title="Digg"><img src="http://thomasschweitzer.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fthomasschweitzer.com%2F2008%2F06%2F23%2Fgroovy-drumming%2F&amp;t=Groovy%20drumming" title="Facebook"><img src="http://thomasschweitzer.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fthomasschweitzer.com%2F2008%2F06%2F23%2Fgroovy-drumming%2F&amp;title=Groovy%20drumming&amp;annotation=Recently%20I%20bought%20myself%20a%20cool%20Roland%20V-Drum%20set.%0A%0ANow%20I%20stumbled%20across%20freedrumlessons.com%2C%20a%20site%20with%20dozens%20of%20%28you%20guessed%20it%29%20free%20drum%20lessons%20on%20video.%0A%0AIn%20order%20to%20avoid%20downloading%20all%20video%20files%20manually%2C%20I%20wrote%20a%20little%20Groovy%20script." title="Google Bookmarks"><img src="http://thomasschweitzer.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fthomasschweitzer.com%2F2008%2F06%2F23%2Fgroovy-drumming%2F&amp;title=Groovy%20drumming" title="StumbleUpon"><img src="http://thomasschweitzer.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="" title="TwitThis"><img src="http://thomasschweitzer.com/wp-content/plugins/sociable/images/" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://thomasschweitzer.com/2008/06/23/groovy-drumming/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
