<?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>Robus&#039;s devblog</title>
	<atom:link href="http://robus.info/devblog/feed/" rel="self" type="application/rss+xml" />
	<link>http://robus.info/devblog</link>
	<description>Where I write about the useless stuff I do</description>
	<lastBuildDate>Fri, 13 Apr 2012 14:13:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>IPv6 for Intovps</title>
		<link>http://robus.info/devblog/2012/04/ipv6-for-intovps/</link>
		<comments>http://robus.info/devblog/2012/04/ipv6-for-intovps/#comments</comments>
		<pubDate>Fri, 13 Apr 2012 14:12:38 +0000</pubDate>
		<dc:creator>Robus</dc:creator>
				<category><![CDATA[No category]]></category>
		<category><![CDATA[intovps]]></category>
		<category><![CDATA[ipv6]]></category>
		<category><![CDATA[openvz]]></category>

		<guid isPermaLink="false">http://robus.info/devblog/?p=410</guid>
		<description><![CDATA[Here&#8217;s a little fix for Intovps: auto tb iface tb inet6 manual pre-up setsid /root/tb_userspace tb IPV4_ENDPOINT &#62; /dev/null &#38; up ifconfig tb up post-up ifconfig tb inet6 add IPV6_ADDRESS/64 post-up ifconfig tb mtu 1480 post-up ip -6 route add ::/0 dev tb down ifconfig tb down post-down route -A inet6 del ::/0 dev tb [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a little fix for Intovps:</p>
<pre class="prettyprint" style="white-space: normal;">auto tb
iface tb inet6 manual
        pre-up  setsid /root/tb_userspace tb IPV4_ENDPOINT &gt; /dev/null &amp;
        up      ifconfig tb up
        post-up ifconfig tb inet6 add IPV6_ADDRESS/64
        post-up ifconfig tb mtu 1480
       <strong> post-up ip -6 route add ::/0 dev tb</strong>
        down    ifconfig tb down
        post-down       route -A inet6 del ::/0 dev tb
        post-down       killall tb_userspace</pre>
<p><a title="Source" href="http://www.nedproductions.biz/blog/ipv6-tunnelling-into-an-ipv4-openvz-vps">Original source</a></p>
]]></content:encoded>
			<wfw:commentRss>http://robus.info/devblog/2012/04/ipv6-for-intovps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Czym się zajmuję ostatnio</title>
		<link>http://robus.info/devblog/2012/03/czym-sie-zajmuje-ostatnio/</link>
		<comments>http://robus.info/devblog/2012/03/czym-sie-zajmuje-ostatnio/#comments</comments>
		<pubDate>Sat, 17 Mar 2012 14:26:14 +0000</pubDate>
		<dc:creator>Robus</dc:creator>
				<category><![CDATA[polish]]></category>
		<category><![CDATA[bramka sms]]></category>
		<category><![CDATA[play]]></category>
		<category><![CDATA[rbramka.pl]]></category>

		<guid isPermaLink="false">http://robus.info/devblog/?p=405</guid>
		<description><![CDATA[Z braku lepszego zajęcia stworzyłem własną darmową bramkę sms. Odniosła już swój pierwszy mały sukces - trafiła na główną wykopu . &#160;]]></description>
			<content:encoded><![CDATA[<p>Z braku lepszego zajęcia stworzyłem własną <a title="Stworzona przezemnie darmowa bramka SMS." href="http://rbramka.pl">darmową bramkę sms</a>. Odniosła już swój pierwszy mały sukces -<a title="Główna wykopu" href="http://www.wykop.pl/link/1026945/stworzone-z-nudow-darmowa-bramka-sms-thoughts/"> trafiła na główną wykopu</a> <img src='http://robus.info/devblog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .</p>
<p>&nbsp;</p>
<p><a href="http://rbramka.pl/"><a href="http://rbramka.pl"><img class="aligncenter size-medium wp-image-406" title="rBramka.pl" src="http://robus.info/devblog/wp-content/uploads/2012/03/Capture-300x208.png" alt="Screenshot rbramka.pl" width="300" height="208" /></a><br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://robus.info/devblog/2012/03/czym-sie-zajmuje-ostatnio/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Album art adder II</title>
		<link>http://robus.info/devblog/2011/09/album-art-adder-ii/</link>
		<comments>http://robus.info/devblog/2011/09/album-art-adder-ii/#comments</comments>
		<pubDate>Sun, 25 Sep 2011 14:06:52 +0000</pubDate>
		<dc:creator>Robus</dc:creator>
				<category><![CDATA[english]]></category>
		<category><![CDATA[album art]]></category>
		<category><![CDATA[downloader]]></category>
		<category><![CDATA[flac]]></category>
		<category><![CDATA[id3]]></category>
		<category><![CDATA[last.fm]]></category>
		<category><![CDATA[mp3]]></category>
		<category><![CDATA[music]]></category>

		<guid isPermaLink="false">http://robus.info/devblog/?p=400</guid>
		<description><![CDATA[After a couple of hours wasting my time, and then finding out the documentation for os.walk is &#8216;a little&#8217;  incomplete, here&#8217;s an improved version: #!/usr/bin/python # -*- coding: UTF-8 -*- from mutagen.flac import FLAC from mutagen.mp3 import MP3 from mutagen.id3 import ID3, APIC, error from mutagen.easyid3 import EasyID3 import urllib2,urllib, os, sys from xml.dom import [...]]]></description>
			<content:encoded><![CDATA[<p>After a couple of hours wasting my time, and then finding out <a title="Stackoverflow" href="http://stackoverflow.com/questions/7545511/os-walk-strips-polish-characters">the documentation for os.walk is &#8216;a little&#8217;  incomplete</a>, here&#8217;s an improved version:</p>
<pre class="prettyprint">#!/usr/bin/python
# -*- coding: UTF-8 -*-

from mutagen.flac import FLAC
from mutagen.mp3 import MP3
from mutagen.id3 import ID3, APIC, error
from mutagen.easyid3 import EasyID3
import urllib2,urllib, os, sys
from xml.dom import minidom
mainenc = sys.getdefaultencoding()

def getImage(artist,track):
	try:
		req = urllib2.Request(url='http://ws.audioscrobbler.com/2.0/?',
			     data=urllib.urlencode({
				'method':'track.getinfo',
				'api_key':'b25b959554ed76058ac220b7b2e0a026',
				'artist':(artist).encode('utf-8'),
				'track':(track).encode('utf-8'),
				'autocorrect':1
				}))
		f = urllib2.urlopen(req)
		xml = f.read()
	except:
		print "Failed @ %s - %s" % (artist.encode(mainenc,'ignore'),track.encode(mainenc,'ignore'))
		return None
	nodes = minidom.parseString(xml).childNodes
	try:
		url = nodes[0].getElementsByTagName('image')[-1].childNodes[0].toxml()
	except Exception, e:
		print "Nothing found for %s" % track.encode(mainenc,'ignore')
		return None
	req = urllib2.Request(url=url)
	u = urllib2.urlopen(req)
	return u

folder = unicode(raw_input("Podaj swoj folder muzyki (np. D:\muzyka):\n"))

for root, dirs, files in os.walk(folder):
	print root.encode(mainenc,'ignore')
	for i in files:
		if 'folder.jpg' in files or 'Folder.jpg' in files:
			if os.path.getsize(root+"\\"+'folder.jpg') > 0:
				break
		ext = i.split('.')[-1].lower()
		if ext in ['flac','mp3']:
			try:
				if ext == 'flac':
					audio = FLAC(root+"\\"+i)
				elif ext == 'mp3':
					audio = MP3(root+"\\"+i,ID3=EasyID3)
			except Exception, e:
				print e
				continue
			if audio:
				img = getImage(audio['artist'][0],audio['title'][0])
				if img is not None:
					print "Writing to %s" % root.encode(mainenc,'ignore')
					f= open(root+'\\folder.jpg','wb')
					f.write(img.read())
					f.close()
					break

print "Done"</pre>
<p>+ <a title="Album art adder" href="http://robus.info/devblog/wp-content/uploads/2011/09/id3.exe">bonus, executable version</a></p>
]]></content:encoded>
			<wfw:commentRss>http://robus.info/devblog/2011/09/album-art-adder-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mały patch dla ekg &#8211; multilogowanie</title>
		<link>http://robus.info/devblog/2011/08/maly-patch-dla-ekg-multilogowanie/</link>
		<comments>http://robus.info/devblog/2011/08/maly-patch-dla-ekg-multilogowanie/#comments</comments>
		<pubDate>Fri, 26 Aug 2011 17:39:32 +0000</pubDate>
		<dc:creator>Robus</dc:creator>
				<category><![CDATA[polish]]></category>
		<category><![CDATA[ekg]]></category>
		<category><![CDATA[multilogowanie]]></category>
		<category><![CDATA[łatka]]></category>

		<guid isPermaLink="false">http://robus.info/devblog/?p=397</guid>
		<description><![CDATA[Jedna rzecz która mnie ostatnio wkurzyła: ekg ani nie informuje o innych klientach, ani nie reaguje gdy coś piszą. W efekcie ktoś mógłby śledzić moje rozmowy bez mojej wiedzy (vel gg sniffer wcześniej). Stworzyłem małą łatkę by temu przeciwdziałać. Ma stosunkowo prosty cel: rozłączać wszystkich obcych klientów.]]></description>
			<content:encoded><![CDATA[<p>Jedna rzecz która mnie ostatnio wkurzyła: ekg ani nie informuje o innych klientach, ani nie reaguje gdy coś piszą. W efekcie ktoś mógłby śledzić moje rozmowy bez mojej wiedzy (vel gg sniffer wcześniej). <a href="http://robus.info/devblog/wp-content/uploads/2011/08/patch.txt">Stworzyłem małą łatkę by temu przeciwdziałać.</a> Ma stosunkowo prosty cel: rozłączać wszystkich obcych klientów.</p>
]]></content:encoded>
			<wfw:commentRss>http://robus.info/devblog/2011/08/maly-patch-dla-ekg-multilogowanie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Album art adder</title>
		<link>http://robus.info/devblog/2011/08/album-art-adder/</link>
		<comments>http://robus.info/devblog/2011/08/album-art-adder/#comments</comments>
		<pubDate>Sat, 20 Aug 2011 19:59:22 +0000</pubDate>
		<dc:creator>Robus</dc:creator>
				<category><![CDATA[english]]></category>
		<category><![CDATA[album art]]></category>
		<category><![CDATA[downloader]]></category>
		<category><![CDATA[flac]]></category>
		<category><![CDATA[id3]]></category>
		<category><![CDATA[last.fm]]></category>
		<category><![CDATA[mp3]]></category>
		<category><![CDATA[music]]></category>

		<guid isPermaLink="false">http://robus.info/devblog/?p=393</guid>
		<description><![CDATA[Minor script to add album arts to your folders, assuming you have your music organized into albums. Supports mp3 and FLAC files: from mutagen.flac import FLAC from mutagen.mp3 import MP3 from mutagen.id3 import ID3, APIC, error from mutagen.easyid3 import EasyID3 import urllib2,urllib, os from xml.dom import minidom def getImage(artist,track): req = urllib2.Request(url='http://ws.audioscrobbler.com/2.0/?', data=urllib.urlencode({ 'method':'track.getinfo', 'api_key':'b25b959554ed76058ac220b7b2e0a026', [...]]]></description>
			<content:encoded><![CDATA[<p>Minor script to add album arts to your folders, assuming you have your music organized into albums. Supports mp3 and FLAC files:</p>
<pre class="prettyprint" style="white-space: normal;">
from mutagen.flac import FLAC
from mutagen.mp3 import MP3
from mutagen.id3 import ID3, APIC, error
from mutagen.easyid3 import EasyID3
import urllib2,urllib, os
from xml.dom import minidom

def getImage(artist,track):
	req = urllib2.Request(url='http://ws.audioscrobbler.com/2.0/?',
			     data=urllib.urlencode({
				'method':'track.getinfo',
				'api_key':'b25b959554ed76058ac220b7b2e0a026',
				'artist':audio["artist"][0],
				'track':audio["title"][0]
				}))
	f = urllib2.urlopen(req)
	xml = f.read()
	try:
		nodes = minidom.parseString(xml).childNodes
		url = nodes[0].getElementsByTagName('image')[-1].childNodes[0].toxml()
		req = urllib2.Request(url=url)
		u = urllib2.urlopen(req)
		return u
	except:
		return None

for root, dirs, files in os.walk('D:\\muzyka'):
	print root
	for i in files:
		if 'folder.jpg' in files or 'Folder.jpg' in files:
			if os.path.getsize(root+"\\"+'folder.jpg') > 0:
				break
		ext = i.split('.')[-1].lower()
		if ext in ['flac','mp3']:
			try:
				if ext == 'flac':
					audio = FLAC(root+"\\"+i)
				elif ext == 'mp3':
					audio = MP3(root+"\\"+i,ID3=EasyID3)
			except:
				continue
			if audio:
				img = getImage(audio['artist'][0],audio['title'][0])
				if img is not None:
					print "Writing to %s" % root
					f= open(root+'\\folder.jpg','wb')
					f.write(getImage(audio['artist'][0],audio['title'][0]).read())
					f.close()
					break

print "Done"
</pre>
<p>Albumarts are downloaded from last.fm</p>
]]></content:encoded>
			<wfw:commentRss>http://robus.info/devblog/2011/08/album-art-adder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.133 seconds -->

