<?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>Why So Scared &#187; Programming</title>
	<atom:link href="http://www.whysoscared.com/tag/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.whysoscared.com</link>
	<description>A blog about; Programming, Music and Random Stuff</description>
	<lastBuildDate>Thu, 10 Jun 2010 02:43:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Parse MusicBrainz XML with jQuery</title>
		<link>http://www.whysoscared.com/parse-musicbrainz-jquery/</link>
		<comments>http://www.whysoscared.com/parse-musicbrainz-jquery/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 21:17:22 +0000</pubDate>
		<dc:creator>Juo</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[tidbit]]></category>

		<guid isPermaLink="false">http://www.whysoscared.com/?p=324</guid>
		<description><![CDATA[For a project I&#8217;m working on to help people make posts over at http://www.warez-dnb.com/ i&#8217;ve been looking into parsing MusicBrainz, I thought id make a quick post to discuss the challenges and solutions I&#8217;ve come up with so far.
&#60;html&#62;
 &#60;head&#62;
 &#60;script type="text/javascript" src="jquery.js"&#62;&#60;/script&#62;
 &#60;script type="text/javascript"&#62;
 $(document).ready(function(){
	$.ajax({
		type: "GET",
		url: "http://www.warez-dnb.com/test/getid.php?name=Caspa",
		dataType: "xml",
		success: function(xml) {
			$(xml).find('artist-list').each(function() {

				alert($(this).find("name").text());
			});
		}
	});
 });
 &#60;/script&#62;
 &#60;/head&#62;
 [...]]]></description>
			<content:encoded><![CDATA[<p>For a project I&#8217;m working on to help people make posts over at http://www.warez-dnb.com/ i&#8217;ve been looking into parsing MusicBrainz, I thought id make a quick post to discuss the challenges and solutions I&#8217;ve come up with so far.</p>
<pre style="font-family: 'Bitstream Vera Sans Mono', Monaco, 'Courier New', monospace; font-size: 9pt; line-height: 1.3em; margin-top: 0em;"><span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">&lt;</span>html<span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">&gt;</span>
 <span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">&lt;</span>head<span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">&gt;</span>
 <span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">&lt;</span>script type<span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">=</span><span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #00a33f;">"text/javascript"</span> src<span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">=</span><span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #00a33f;">"jquery.js"</span><span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">&gt;</span><span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">&lt;</span>/script<span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">&gt;</span>
 <span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">&lt;</span>script type<span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">=</span><span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #00a33f;">"text/javascript"</span><span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">&gt;</span>
 <span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">$</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">(</span><span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #a535ae;">document</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">)</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">.</span>ready<span style="padding-top: 0.2em; padding-bottom: 0.1em;">(</span><span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">function</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">(</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">)</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">{</span>
	<span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">$</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">.</span>ajax<span style="padding-top: 0.2em; padding-bottom: 0.1em;">(</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">{</span>
		type: <span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #00a33f;">"GET"</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">,</span>
		url: <span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #00a33f;">"http://www.warez-dnb.com/test/getid.php?name=Caspa"</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">,</span>
		dataType: <span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #00a33f;">"xml"</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">,</span>
		<span style="padding-top: 0.2em; padding-bottom: 0.1em;"><span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #21439c;">success</span>: <span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">function</span>(<span style="padding-top: 0.2em; padding-bottom: 0.1em;">xml</span>)</span> <span style="padding-top: 0.2em; padding-bottom: 0.1em;">{</span>
			<span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">$</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">(</span>xml<span style="padding-top: 0.2em; padding-bottom: 0.1em;">)</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">.</span><span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #a535ae;">find</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">(</span><span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #00a33f;">'artist-list'</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">)</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">.</span>each<span style="padding-top: 0.2em; padding-bottom: 0.1em;">(</span><span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">function</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">(</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">)</span> <span style="padding-top: 0.2em; padding-bottom: 0.1em;">{</span>

				<span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #a535ae;">alert</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">(</span><span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">$</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">(</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">this</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">)</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">.</span><span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #a535ae;">find</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">(</span><span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #00a33f;">"name"</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">)</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">.</span><span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #a535ae;">text</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">(</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">)</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">)</span>;
			<span style="padding-top: 0.2em; padding-bottom: 0.1em;">}</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">)</span>;
		<span style="padding-top: 0.2em; padding-bottom: 0.1em;">}</span>
	<span style="padding-top: 0.2em; padding-bottom: 0.1em;">}</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">)</span>;
<span style="padding-top: 0.2em; padding-bottom: 0.1em;"> }</span><span style="padding-top: 0.2em; padding-bottom: 0.1em;">)</span>;
<span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;"> &lt;</span>/script<span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">&gt;</span>
 <span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">&lt;</span>/head<span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">&gt;</span>
 <span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">&lt;</span>body<span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">&gt;</span>

 <span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">&lt;</span>/body<span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">&gt;</span>
<span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">&lt;</span>/html<span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">&gt;</span></pre>
<pre style="font-family: 'Bitstream Vera Sans Mono', Monaco, 'Courier New', monospace; font-size: 9pt; line-height: 1.3em; margin-top: 0em;"><span style="color: #ff5600;">
</span></pre>
<pre style="font-family: 'Bitstream Vera Sans Mono', Monaco, 'Courier New', monospace; font-size: 9pt; line-height: 1.3em; margin-top: 0em;"><span style="color: #ff5600;"><span style="color: #000000;"><span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; line-height: 19px; white-space: normal; font-size: 13px;"><span style="color: #00a33f;">

</span></span></span></span></pre>
<p>This is the index.html file and jQuery code, its pretty simple, I was just testing that I could get a valid connection, then parsing the XML within artist-list and outputting anything that has the XML tag name</p>
<p>One question that might arise from looking at this code is why the url is hosted at warez-dnb, jQuery wont let you import XML from a remote web host, it has to be from the local server, i&#8217;ve written an extremely simple PHP function that will query musicbrainz and copy the result it gets to host it locally.</p>
<pre style="font-family: 'Bitstream Vera Sans Mono', Monaco, 'Courier New', monospace; font-size: 9pt; line-height: 1.3em; margin-top: 0em;"><span style="padding-top: 0.2em; padding-bottom: 0.1em;">&lt;?php
<span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #919191;">// Set your return content type</span>
<span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #a535ae;">header</span>(<span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #00a33f;">'<span style="padding-top: 0.2em; padding-bottom: 0.1em;">Content-type: application/xml</span>'</span>);

<span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #919191;">// Website url to open</span>
<span style="padding-top: 0.2em; padding-bottom: 0.1em;">$daurl</span> <span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">=</span> <span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #00a33f;">'<span style="padding-top: 0.2em; padding-bottom: 0.1em;">http://musicbrainz.org/ws/1/artist/?type=xml&amp;name=</span>'</span> <span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">.</span> <span style="padding-top: 0.2em; padding-bottom: 0.1em;">$_GET</span>[<span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #00a33f;">"<span style="padding-top: 0.2em; padding-bottom: 0.1em;">name</span>"</span>];

<span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #919191;">// Get that website's content</span>
<span style="padding-top: 0.2em; padding-bottom: 0.1em;">$handle</span> <span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">=</span> <span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #a535ae;">fopen</span>(<span style="padding-top: 0.2em; padding-bottom: 0.1em;">$daurl</span>, <span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #00a33f;">"<span style="padding-top: 0.2em; padding-bottom: 0.1em;">r</span>"</span>);

<span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #919191;">// If there is something, read and return</span>
<span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">if</span> (<span style="padding-top: 0.2em; padding-bottom: 0.1em;">$handle</span>) {
    <span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">while</span> (<span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">!</span><span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #a535ae;">feof</span>(<span style="padding-top: 0.2em; padding-bottom: 0.1em;">$handle</span>)) {
        <span style="padding-top: 0.2em; padding-bottom: 0.1em;">$buffer</span> <span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #ff5600;">=</span> <span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #a535ae;">fgets</span>(<span style="padding-top: 0.2em; padding-bottom: 0.1em;">$handle</span>, <span style="padding-top: 0.2em; padding-bottom: 0.1em;">4096</span>);
        <span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #a535ae;">echo</span> <span style="padding-top: 0.2em; padding-bottom: 0.1em;">$buffer</span>;
    }
    <span style="padding-top: 0.2em; padding-bottom: 0.1em; color: #a535ae;">fclose</span>(<span style="padding-top: 0.2em; padding-bottom: 0.1em;">$handle</span>);
}
<span style="padding-top: 0.2em; padding-bottom: 0.1em;">?</span>&gt;</span></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.whysoscared.com/parse-musicbrainz-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Scrubyt to Screenscrape</title>
		<link>http://www.whysoscared.com/using-scrubyt-to-screenscrape/</link>
		<comments>http://www.whysoscared.com/using-scrubyt-to-screenscrape/#comments</comments>
		<pubDate>Sat, 27 Jun 2009 23:24:04 +0000</pubDate>
		<dc:creator>Juo</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.whysoscared.com/?p=156</guid>
		<description><![CDATA[At http://www.warez-dnb.com/ Im working on a bit of Ruby code that when finished is going to make 20 second samples of every single post.
I decided the simplest way to do this would to have a bot that scraped the website for Rapidshare links, went away and downloaded the links, extracted them, made the sample and [...]]]></description>
			<content:encoded><![CDATA[<p>At h<a href="ttp://www.warez-dnb.com/" target="_blank">ttp://www.warez-dnb.com/</a> Im working on a bit of Ruby code that when finished is going to make 20 second samples of every single post.</p>
<p>I decided the simplest way to do this would to have a bot that scraped the website for Rapidshare links, went away and downloaded the links, extracted them, made the sample and then uploaded them to our FTP server. (I did say simplest, not most elegant)</p>
<p>After a file is upload this PHP script tests if the samples are uploaded yet. <a href="http://www.whysoscared.com/php-function-check-if-a-file-or-url-exists">http://www.whysoscared.com/php-function-check-if-a-file-or-url-exists</a></p>
<p>To make the Ruby script I needed something that could not only screen scrape the webpage but also login. I was using hpricot but then we decided to make Rapidshare links on Warez-DnB only show up to registered users.</p>
<blockquote><p>require &#8216;rubygems&#8217;<br />
require &#8217;scrubyt&#8217;</p>
<p>#only the following parts should need editing<br />
baseurl = &#8220;http://www.warez-dnb.com/&#8221;<br />
username = &#8220;User&#8221;<br />
password = &#8220;Password&#8221;</p>
<p>data = Scrubyt::Extractor.define do<br />
fetch &#8220;#{baseurl}?action=login&#8221;<br />
fill_textfield &#8216;user&#8217;, username<br />
fill_textfield &#8216;passwrd&#8217;, password<br />
submit<br />
fetch &#8220;#{baseurl}?topic=672&#8243;<br />
link &#8216;//div/code&#8217;<br />
end</p></blockquote>
<p>This is the script that will actually scan each page. Using Scrubyt is super simple first it fetches the login page at Warez-DnB fills the username and password field and submits. Now its logged in.</p>
<p>After this the plan is to use a loop based off the RSS feed to see if the post is in the listings category and extract the Rapidshare links.</p>
<p>Its in fairly simple stages at the moment but ill post the majority of the script when its completed.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.whysoscared.com/using-scrubyt-to-screenscrape/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
