<?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>su.percilio.us &#187; php</title>
	<atom:link href="http://su.percilio.us/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://su.percilio.us</link>
	<description>Haughtily disdainful or contemptuous</description>
	<lastBuildDate>Tue, 06 Apr 2010 15:58:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Setting Locale and Using PECL&#8217;s Imagick Library in PHP</title>
		<link>http://su.percilio.us/2010/04/setting-locale-and-using-pecls-imagick-library-in-php/</link>
		<comments>http://su.percilio.us/2010/04/setting-locale-and-using-pecls-imagick-library-in-php/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 19:13:45 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[Nerdities]]></category>
		<category><![CDATA[imagemagick]]></category>
		<category><![CDATA[imagick]]></category>
		<category><![CDATA[locale]]></category>
		<category><![CDATA[pecl]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://su.percilio.us/?p=179</guid>
		<description><![CDATA[I ran across an interesting issue today. An issue, that when I Googled it, appeared to have been resolved 2 years ago. However, I was using up-to-date versions of PHP, ImageMagick and the Imagick PECL library. So, on to my issue. I have an abstract piece of code that when given the proper variables will [...]]]></description>
			<content:encoded><![CDATA[<p>I ran across an interesting issue today. An issue, that when I Googled it, appeared to have been resolved 2 years ago. However, I was using up-to-date versions of PHP, ImageMagick and the Imagick PECL library. </p>
<p>So, on to my issue. I have an abstract piece of code that when given the proper variables will set set the locale for my application. It sets the locale thusly:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">setlocale</span><span style="color: #009900;">&#40;</span>LC_ALL<span style="color: #339933;">,</span> <span style="color: #0000ff;">'fr_CA.utf8'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Later in the application, I was trying to draw a rectangle for a gauge that would graph a number against another number. When I tried to call the Imagick rectangle method, all hell broke loose.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$gauge</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ImagickDraw<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$x1</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$config</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">position</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">x1</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$y1</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$config</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">position</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">y1</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$x2</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$config</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">position</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">x2</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$y2</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$config</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">position</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">y2</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$gauge</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rectangle</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$x1</span><span style="color: #339933;">,</span><span style="color: #000088;">$y1</span><span style="color: #339933;">,</span><span style="color: #000088;">$x2</span><span style="color: #339933;">,</span><span style="color: #000088;">$y2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>I then got this lovely message:</p>

<div class="wp_syntax"><div class="code"><pre class="log" style="font-family:monospace;">Fatal error: Uncaught exception 'ImagickException' with message 'Non-conforming drawing primitive definition `,' @ draw.c/DrawImage/3123'</pre></div></div>

<p>Googled a bit and everything said this was fixed in the PECL library as of 2007. But it&#8217;s 2010 and I&#8217;m still having the issue!</p>
<p>Turns out if you set &#8220;LC_NUMERIC&#8221; to any French language locale, it can make interpreting floats difficult, because the French use commas (,) instead of periods (.) to delimit their fractions numerically. This caused the &#8220;rectangle&#8221; function of the &#8220;Imagick&#8221; PECL library to go crazy.</p>
<p>My Solution?</p>
<p>I altered my brash locale setting code to be a little more granular:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #990000;">setlocale</span><span style="color: #009900;">&#40;</span>LC_TIME<span style="color: #339933;">,</span> <span style="color: #0000ff;">'fr_CA.utf8'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">setlocale</span><span style="color: #009900;">&#40;</span>LC_MONETARY<span style="color: #339933;">,</span> <span style="color: #0000ff;">'fr_CA.utf8'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Setting locales for &#8220;LC_TIME&#8221; and &#8220;LC_MONETARY&#8221; was enough for me to get the programmatic localization I needed. And it made sure that &#8220;LC_NUMERIC&#8221; did not get set and cause localization on floats to interfere with external libraries.</p>
<p>This is &#8220;bang your head against the wall&#8221; stuff people. I hope this helps someone.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fsu.percilio.us%2F2010%2F04%2Fsetting-locale-and-using-pecls-imagick-library-in-php%2F';
  addthis_title  = 'Setting+Locale+and+Using+PECL%26%238217%3Bs+Imagick+Library+in+PHP';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://su.percilio.us/2010/04/setting-locale-and-using-pecls-imagick-library-in-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Convio Web Services in Python and PHP</title>
		<link>http://su.percilio.us/2009/10/convio-web-services-in-python-and-php/</link>
		<comments>http://su.percilio.us/2009/10/convio-web-services-in-python-and-php/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 17:42:20 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[Nerdities]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[convio]]></category>
		<category><![CDATA[cws]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[soap]]></category>
		<category><![CDATA[suds]]></category>

		<guid isPermaLink="false">http://su.percilio.us/?p=137</guid>
		<description><![CDATA[Expanding on my last post about being able to successfully connect to Convio Web Services in three lines, I&#8217;d like to get a little more in depth and actually construct the necessary SOAP headers and make a simple call. I&#8217;ve written a small PHP implementation as well. I was able to make a successful log [...]]]></description>
			<content:encoded><![CDATA[<p>Expanding on my last post about being able to successfully connect to Convio Web Services in three lines, I&#8217;d like to get a little more in depth and actually construct the necessary SOAP headers and make a simple call. I&#8217;ve written a small PHP implementation as well. I was able to make a successful log in to CWS in just <em>2 lines</em> of PHP code!</p>
<div style="text-align: center; margin-bottom: 10px"><img class="size-medium wp-image-117" style="border: 1px solid #ccc; padding: 5px; margin: 0 auto; background: none" src="http://su.percilio.us/wp-content/uploads/2009/10/convio_logo-300x160.gif" alt="Convio Logo" title="Convio Logo" width="300" height="160"  /></div>
<p>Now, as far as CWS goes, Python and PHP may not instantly be an obvious choice as far as languages go, mainly because they are both largely scripting languages. CWS is mainly for robust data syncing operations and those tasks generally go to languages like Java or C#, however, I&#8217;m a high level language guy, so I  go with what I know. Also, Python and PHP both make SOAP exceedingly easy to work with, so there&#8217;s no real reason why you can&#8217;t, with a bit of discipline, write a perfectly excellent and robust data sync operation in either of these languages &#8230; especially Python.</p>
<p>So, here are my examples. They are exceedingly simple and easy once again. The Python example leverages suds once again and the PHP example is using PHP&#8217;s pretty impressive built in SOAP library. Each example shows you how to create the SOAP client using the Convio WSDL, make a successful log in to CWS, create a valid session header for subsequent calls, and how to make a call that grabs the number of constituents that have been added to the Convio database.</p>
<p>If you find either of these examples helpful, please let me know! Keep in mind these are just functional examples. There is no proper error handling or any sort of architecture here; they are just some bare bones examples on how to get data from CWS.</p>
<p><strong>Python</strong></p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">from</span> suds.<span style="color: black;">client</span> <span style="color: #ff7700;font-weight:bold;">import</span> Client
&nbsp;
<span style="color: #808080; font-style: italic;"># Load the WSDL                                                                                                                                                                                                                                </span>
client = Client<span style="color: black;">&#40;</span><span style="color: #483d8b;">'https://secureX.convio.net/1.0/CLIENT/wsdl'</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># Log in to CWS                                                                                                                                                                                                                                </span>
login = client.<span style="color: black;">service</span>.<span style="color: black;">Login</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'apiadmin'</span>, <span style="color: #483d8b;">'password'</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># Set the session header                                                                                                                                                                                                                       </span>
session = client.<span style="color: black;">factory</span>.<span style="color: black;">create</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'Session'</span><span style="color: black;">&#41;</span>
session.<span style="color: black;">SessionId</span> = login.<span style="color: black;">SessionId</span>
client.<span style="color: black;">set_options</span><span style="color: black;">&#40;</span>soapheaders=session<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># Get the number of constituents added since last sync                                                                                                                                                                                         </span>
data = <span style="color: #008000;">dict</span><span style="color: black;">&#40;</span>PartitionId=<span style="color: #ff4500;">1001</span>, RecordType=<span style="color: #483d8b;">'Constituent'</span>, PageSize=<span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
response = client.<span style="color: black;">service</span>.<span style="color: black;">GetIncrementalInsertsCount</span><span style="color: black;">&#40;</span><span style="color: #66cc66;">**</span>data<span style="color: black;">&#41;</span><span style="color: #66cc66;">;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># Show the number of constituents added                                                                                                                                                                                                        </span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">'%d constituents have been added since the last sync.'</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span><span style="color: #008000;">int</span><span style="color: black;">&#40;</span>response.<span style="color: black;">RecordCount</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></pre></div></div>

<p><strong>PHP</strong></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// Load the WSDL                                                                                                                                                                                                                               </span>
<span style="color: #000088;">$client</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> SoapClient<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'https://secureX.convio.net/1.0/CLIENT/wsdl'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Log in to CWS                                                                                                                                                                                                                               </span>
<span style="color: #000088;">$login</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$client</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Login</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'UserName'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">'apiadmin'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Password'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">'password'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Set the session header                                                                                                                                                                                                                      </span>
<span style="color: #000088;">$headerBody</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'SessionId'</span><span style="color: #339933;">=&gt;</span><span style="color: #000088;">$login</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Result</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">SessionId</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$header</span>     <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> SoapHeader<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'urn:soap.convio.com'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Session'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$headerBody</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$client</span><span style="color: #339933;">-&gt;</span>__setSoapHeaders<span style="color: #009900;">&#40;</span><span style="color: #000088;">$header</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Get the number of constituents added since last sync                                                                                                                                                                                        </span>
<span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span>
<span style="color: #009900;">&#40;</span>
    <span style="color: #0000ff;">'PartitionId'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">1001</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'RecordType'</span>  <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'Constituent'</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'PageSize'</span>    <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">1</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$response</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$client</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">GetIncrementalInsertsCount</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Show the number of constituents added                                                                                                                                                                                                       </span>
<span style="color: #b1b100;">print</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">sprintf</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;<span style="color: #009933; font-weight: bold;">%d</span> constituents have been added since the last sync<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#40;</span>int<span style="color: #009900;">&#41;</span> <span style="color: #000088;">$response</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Result</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">RecordCount</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fsu.percilio.us%2F2009%2F10%2Fconvio-web-services-in-python-and-php%2F';
  addthis_title  = 'Convio+Web+Services+in+Python+and+PHP';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://su.percilio.us/2009/10/convio-web-services-in-python-and-php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP Library For Convio Open API</title>
		<link>http://su.percilio.us/2009/10/php-library-for-convio-open-api/</link>
		<comments>http://su.percilio.us/2009/10/php-library-for-convio-open-api/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 17:12:08 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[Nerdities]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[convio]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://su.percilio.us/?p=118</guid>
		<description><![CDATA[If any of you out there use Convio for your non-profit&#8217;s on-line presence, ie website, donations, email campaigns, I&#8217;ve created a PHP library for connecting to their Open API. I say it&#8217;s a &#8220;Library&#8221;&#8230; it&#8217;s really just a single wrapper file that aids in connecting to, making call to, and handling responses from, the Convio [...]]]></description>
			<content:encoded><![CDATA[<p>If any of you out there use <a href="http://convio.com" target="_blank">Convio</a> for your non-profit&#8217;s on-line presence, ie website, donations, email campaigns, I&#8217;ve created a PHP library for connecting to their Open API.</p>
<div style="text-align: center; margin-bottom: 10px"><img class="size-medium wp-image-117" style="border: 1px solid #ccc; padding: 5px; margin: 0 auto; background: none" src="http://su.percilio.us/wp-content/uploads/2009/10/convio_logo-300x160.gif" alt="Convio Logo" title="Convio Logo" width="300" height="160"  /></div>
<p>I say it&#8217;s a &#8220;Library&#8221;&#8230; it&#8217;s really just a single wrapper file that aids in connecting to, making call to, and handling responses from, the Convio Open APIs.</p>
<p>There&#8217;s no documentation to speak of, but the two files included in the zip archive are pretty solidly commented, so you will probably be able to get a lot from them. The two files included in the zip are the library file itself and an example of how to implement it.</p>
<p>If you end up using it, let me know what you think!</p>
<p><strong><a href="http://su.percilio.us/files/convio-api-php.zip">Download the PHP Library for Convio Open API</a></strong></p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fsu.percilio.us%2F2009%2F10%2Fphp-library-for-convio-open-api%2F';
  addthis_title  = 'PHP+Library+For+Convio+Open+API';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://su.percilio.us/2009/10/php-library-for-convio-open-api/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Last.FM PHP Image Screen Scraper</title>
		<link>http://su.percilio.us/2008/07/lastfm-php-image-screen-scraper/</link>
		<comments>http://su.percilio.us/2008/07/lastfm-php-image-screen-scraper/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 01:21:24 +0000</pubDate>
		<dc:creator>nick</dc:creator>
				<category><![CDATA[Nerdities]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[last.fm]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://su.percilio.us/?p=32</guid>
		<description><![CDATA[I&#8217;m pretty avid user of Last.FM. I&#8217;m not big on this social networking fad, even if I do work in the industry, but I&#8217;ve found Last.FM very useful, mainly for finding new music. I&#8217;m currently building a web-based media manger in PHP and wanted a way to automatically get images for the artists. I originally [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m pretty avid user of <a title="last.fm" href="http://last.fm" target="_blank">Last.FM</a>. I&#8217;m not big on this social networking fad, even if I do work in the industry, but I&#8217;ve found Last.FM very useful, mainly for finding new music. I&#8217;m currently building a web-based media manger in PHP and wanted a way to automatically get images for the artists.</p>
<p>I originally used the <a title="discogs.com" href="http://discogs.com" target="_blank">discogs.com</a> API and although it was pretty easy to use and reasonably comprehensive, I was really disappointed in the quality of the images, not to mention I was constantly getting back images of electronic and ambient artists who had names similar to the rock bands in my collection, rather than the rock band themselves. I&#8217;m sorry, but when make a call to get images for &#8220;Cream&#8221; I don&#8217;t expect to get back some 14-year-old kid with a turntable and a DAT machine; I want freaking Clapton, Bruce, and Baker.</p>
<p>So, discogs.com left me a bit cold. But I soon learned about Last.FM and was delighted when I discovered their API. The image quality at Last.FM is superb, so I knew I wouldn&#8217;t be disappointed there. I started researching their API and realized that they didn&#8217;t really give me any info I needed other than the images and I didn&#8217;t want to have to sign up for an API key if all I wanted to do was download pictures of bands. Also, they only appear to provide three sizes of images and for many bands they have a whole slew of images available: large, medium, small, smaller, square; I wanted them all, not just the three provided by their API.</p>
<p>So, in the end I decided not to sign up for a Last.FM API key and instead wrote a very simple little PHP screen scraper that would bring back all of the images I wanted. Last.FM actually aided me in my goal by embedding a JSON string with just exactly what I needed right onto the artist page. It worked very well, so I decided to stick with it.</p>
<p>You can <a title="Last.FM PHP Image Screen Scraper" href="http://su.percilio.us/files/lastfm.zip" target="_self">download my simple screen scraper script here</a>. The zip file includes the class file and an example file.</p>
<p>It&#8217; an incredibly simple script. Just a basic class file with only one useable method. It&#8217;s written so it can be expanded, but as Last.FM&#8217;s API is under constant development, it probably won&#8217;t be. But if you just want a simple script to grab artist images from Last.FM, please download my script and let me know if you like it.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fsu.percilio.us%2F2008%2F07%2Flastfm-php-image-screen-scraper%2F';
  addthis_title  = 'Last.FM+PHP+Image+Screen+Scraper';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://su.percilio.us/2008/07/lastfm-php-image-screen-scraper/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
