<?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>Recursive Media</title>
	<atom:link href="http://recursivemedia.net/wordpress/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://recursivemedia.net/wordpress</link>
	<description>Finding my inner Muse, via Poetry in Code</description>
	<lastBuildDate>Sun, 02 Oct 2011 17:34:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Create OSX RamDisk using Python</title>
		<link>http://recursivemedia.net/wordpress/?p=110</link>
		<comments>http://recursivemedia.net/wordpress/?p=110#comments</comments>
		<pubDate>Sun, 02 Oct 2011 16:56:03 +0000</pubDate>
		<dc:creator>Airr</dc:creator>
				<category><![CDATA[OSX]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://recursivemedia.net/wordpress/?p=110</guid>
		<description><![CDATA[Here&#8217;s a quick script I created today for creating and mounting a ramdisk in OSX: 1234567891011121314151617181920212223242526272829303132333435363738394041424344#!/usr/bin/env python import os, sys from subprocess import call from getopt import gnu_getopt, GetoptError def createRamdisk&#40;vol_name, disk_size&#41;: &#160; &#160; dsize = &#40;int&#40;disk_size&#41;*1024&#41;*2 &#160; &#160; cmd = 'diskutil quiet erasevolume HFS+ &#34;%s&#34; $(hdiutil attach -nomount ram://%i)' %&#40;vol_name, dsize&#41; &#160; &#160; print <a href='http://recursivemedia.net/wordpress/?p=110'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a quick script I created today for creating and mounting a ramdisk in OSX:</p>
<div class="codecolorer-container python default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br /></div></td><td><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">os</span><span style="color: #66cc66;">,</span> <span style="color: #dc143c;">sys</span><br />
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">subprocess</span> <span style="color: #ff7700;font-weight:bold;">import</span> call<br />
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">getopt</span> <span style="color: #ff7700;font-weight:bold;">import</span> gnu_getopt<span style="color: #66cc66;">,</span> GetoptError<br />
<br />
<span style="color: #ff7700;font-weight:bold;">def</span> createRamdisk<span style="color: black;">&#40;</span>vol_name<span style="color: #66cc66;">,</span> disk_size<span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; dsize <span style="color: #66cc66;">=</span> <span style="color: black;">&#40;</span><span style="color: #008000;">int</span><span style="color: black;">&#40;</span>disk_size<span style="color: black;">&#41;</span>*<span style="color: #ff4500;">1024</span><span style="color: black;">&#41;</span>*<span style="color: #ff4500;">2</span><br />
&nbsp; &nbsp; <span style="color: #dc143c;">cmd</span> <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">'diskutil quiet erasevolume HFS+ &quot;%s&quot; $(hdiutil attach -nomount ram://%i)'</span> %<span style="color: black;">&#40;</span>vol_name<span style="color: #66cc66;">,</span> dsize<span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Creating %sMB Ramdisk...<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> %disk_size<br />
&nbsp; &nbsp; res <span style="color: #66cc66;">=</span> call<span style="color: black;">&#40;</span><span style="color: #dc143c;">cmd</span><span style="color: #66cc66;">,</span> shell<span style="color: #66cc66;">=</span><span style="color: #008000;">True</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">if</span> res <span style="color: #66cc66;">==</span> <span style="color: #ff4500;">0</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">'Ramdisk &quot;%s&quot; Successfully Created and Mounted.'</span> %vol_name<br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">else</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">'Error creating Ramdisk'</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">def</span> usage<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; <span style="color: #dc143c;">sys</span>.<span style="color: black;">exit</span><span style="color: black;">&#40;</span> <span style="color: #483d8b;">&quot;Usage: %s -n &lt;Volume Name&gt; -s &lt;size in Megabytes&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> %<span style="color: black;">&#40;</span><span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span> <span style="color: black;">&#41;</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">def</span> main<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; SIZE <span style="color: #66cc66;">=</span> VOLNAME <span style="color: #66cc66;">=</span> <span style="color: #008000;">None</span><br />
<br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">try</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; options<span style="color: #66cc66;">,</span> remainder <span style="color: #66cc66;">=</span> gnu_getopt<span style="color: black;">&#40;</span><span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span>:<span style="color: black;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">'s:n:h'</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">for</span> opt<span style="color: #66cc66;">,</span> arg <span style="color: #ff7700;font-weight:bold;">in</span> options:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">if</span> opt <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #483d8b;">'-s'</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SIZE <span style="color: #66cc66;">=</span> arg<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">elif</span> opt <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #483d8b;">'-n'</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; VOLNAME <span style="color: #66cc66;">=</span> arg<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">elif</span> opt <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #483d8b;">'-h'</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; usage<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">except</span> GetoptError<span style="color: #66cc66;">,</span> err:<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>Warning:&quot;</span><span style="color: #66cc66;">,</span>err.<span style="color: black;">msg</span><span style="color: #66cc66;">,</span><span style="color: #483d8b;">'<span style="color: #000099; font-weight: bold;">\n</span>'</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; usage<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
<br />
<br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">if</span> SIZE <span style="color: #ff7700;font-weight:bold;">and</span> VOLNAME:<br />
&nbsp; &nbsp; &nbsp; &nbsp; createRamdisk<span style="color: black;">&#40;</span>VOLNAME<span style="color: #66cc66;">,</span> SIZE<span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">else</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; usage<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ <span style="color: #66cc66;">==</span> <span style="color: #483d8b;">'__main__'</span>:<br />
&nbsp; &nbsp; main<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></div></td></tr></tbody></table></div>
<p><strong>EDIT:</strong> Here is a simplified version, using &#8216;optparse&#8217; intead of &#8216;getopt&#8217;:</p>
<div class="codecolorer-container python default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br /></div></td><td><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">os</span><span style="color: #66cc66;">,</span> <span style="color: #dc143c;">sys</span><br />
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">subprocess</span> <span style="color: #ff7700;font-weight:bold;">import</span> call<br />
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">optparse</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">def</span> createRamdisk<span style="color: black;">&#40;</span>vol_name<span style="color: #66cc66;">,</span> disk_size<span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; dsize <span style="color: #66cc66;">=</span> <span style="color: black;">&#40;</span><span style="color: #008000;">int</span><span style="color: black;">&#40;</span>disk_size<span style="color: black;">&#41;</span>*<span style="color: #ff4500;">1024</span><span style="color: black;">&#41;</span>*<span style="color: #ff4500;">2</span><br />
&nbsp; &nbsp; <span style="color: #dc143c;">cmd</span> <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">'diskutil quiet erasevolume HFS+ &quot;%s&quot; $(hdiutil attach -nomount ram://%i)'</span> %<span style="color: black;">&#40;</span>vol_name<span style="color: #66cc66;">,</span> dsize<span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Creating %sMB Ramdisk...<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> %disk_size<br />
&nbsp; &nbsp; res <span style="color: #66cc66;">=</span> call<span style="color: black;">&#40;</span><span style="color: #dc143c;">cmd</span><span style="color: #66cc66;">,</span> shell<span style="color: #66cc66;">=</span><span style="color: #008000;">True</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">if</span> res <span style="color: #66cc66;">==</span> <span style="color: #ff4500;">0</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">'Ramdisk &quot;%s&quot; Successfully Created and Mounted.'</span> %vol_name<br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">else</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">'Error creating Ramdisk'</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">def</span> main<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; p <span style="color: #66cc66;">=</span> <span style="color: #dc143c;">optparse</span>.<span style="color: black;">OptionParser</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; p.<span style="color: black;">add_option</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'--volname'</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">'-n'</span><span style="color: #66cc66;">,</span> default<span style="color: #66cc66;">=</span><span style="color: #483d8b;">'RamDisk'</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; p.<span style="color: black;">add_option</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'--volsize'</span><span style="color: #66cc66;">,</span><span style="color: #483d8b;">'-s'</span><span style="color: #66cc66;">,</span> default<span style="color: #66cc66;">=</span><span style="color: #ff4500;">256</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; options<span style="color: #66cc66;">,</span> arguments <span style="color: #66cc66;">=</span> p.<span style="color: black;">parse_args</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">if</span> options.<span style="color: black;">volsize</span> <span style="color: #ff7700;font-weight:bold;">and</span> options.<span style="color: black;">volname</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; createRamdisk<span style="color: black;">&#40;</span>options.<span style="color: black;">volname</span><span style="color: #66cc66;">,</span> options.<span style="color: black;">volsize</span><span style="color: black;">&#41;</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ <span style="color: #66cc66;">==</span> <span style="color: #483d8b;">'__main__'</span>:<br />
&nbsp; &nbsp; main<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></div></td></tr></tbody></table></div>
<p>&#8216;optparse&#8217; is the easier approach, because it handles errors for you, and also automatically displays help via the &#8216;-h&#8217; switch.</p>
<p>It provides both with no additional code required on the part of the programmer.</p>
]]></content:encoded>
			<wfw:commentRss>http://recursivemedia.net/wordpress/?feed=rss2&#038;p=110</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Changing the OSX Wallpaper on the fly using Python with the ScriptingBridge and Foundation modules</title>
		<link>http://recursivemedia.net/wordpress/?p=104</link>
		<comments>http://recursivemedia.net/wordpress/?p=104#comments</comments>
		<pubDate>Sun, 14 Aug 2011 03:47:44 +0000</pubDate>
		<dc:creator>Airr</dc:creator>
				<category><![CDATA[OSX]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://recursivemedia.net/wordpress/?p=104</guid>
		<description><![CDATA[This is a follow-up to my previous post, which required logging out before the changes took effect. This simple method changes the wallpaper on the fly, which is better. 1234567891011121314151617181920#!/usr/bin/env python2.5 from ScriptingBridge import * from Foundation import CFURLCreateWithFileSystemPath, CFURLCopyFileSystemPath def changeWallpaper&#40;wp_path&#41;: &#160; &#160; finder = SBApplication.applicationWithBundleIdentifier_&#40;&#34;com.apple.finder&#34;&#41; &#160; &#160; file_ref = CFURLCreateWithFileSystemPath&#40;None,wp_path,0,False&#41; &#160; &#160; finder.setDesktopPicture_&#40;CFURLCopyFileSystemPath&#40;file_ref,1&#41;&#41; <a href='http://recursivemedia.net/wordpress/?p=104'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>This is a follow-up to my previous post, which required logging out before the changes took effect.</p>
<p>This simple method changes the wallpaper on the fly, which is better.</p>
<div class="codecolorer-container python default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br /></div></td><td><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python2.5</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">from</span> ScriptingBridge <span style="color: #ff7700;font-weight:bold;">import</span> *<br />
<span style="color: #ff7700;font-weight:bold;">from</span> Foundation <span style="color: #ff7700;font-weight:bold;">import</span> CFURLCreateWithFileSystemPath<span style="color: #66cc66;">,</span> CFURLCopyFileSystemPath<br />
<br />
<br />
<span style="color: #ff7700;font-weight:bold;">def</span> changeWallpaper<span style="color: black;">&#40;</span>wp_path<span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; finder <span style="color: #66cc66;">=</span> SBApplication.<span style="color: black;">applicationWithBundleIdentifier_</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;com.apple.finder&quot;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; file_ref <span style="color: #66cc66;">=</span> CFURLCreateWithFileSystemPath<span style="color: black;">&#40;</span><span style="color: #008000;">None</span><span style="color: #66cc66;">,</span>wp_path<span style="color: #66cc66;">,</span><span style="color: #ff4500;">0</span><span style="color: #66cc66;">,</span><span style="color: #008000;">False</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; finder.<span style="color: black;">setDesktopPicture_</span><span style="color: black;">&#40;</span>CFURLCopyFileSystemPath<span style="color: black;">&#40;</span>file_ref<span style="color: #66cc66;">,</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><br />
<br />
<br />
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ <span style="color: #66cc66;">==</span> <span style="color: #483d8b;">&quot;__main__&quot;</span>: &nbsp; <br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">time</span> <span style="color: #ff7700;font-weight:bold;">import</span> sleep <br />
&nbsp; &nbsp; wp <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">&quot;/Users/riveraa/Pictures/ee45987c573c14b873658a0ac1ce0421.jpg&quot;</span><br />
&nbsp; &nbsp; wp2 <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">&quot;/Users/riveraa/Pictures/Snow_Leopard_Wallpaper_by_maddog1138.jpg&quot;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; changeWallpaper<span style="color: black;">&#40;</span>wp<span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; sleep<span style="color: black;">&#40;</span><span style="color: #ff4500;">5</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; changeWallpaper<span style="color: black;">&#40;</span>wp2<span style="color: black;">&#41;</span></div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://recursivemedia.net/wordpress/?feed=rss2&#038;p=104</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Modifying the OSX desktop.plist file to change the wallpaper using Python</title>
		<link>http://recursivemedia.net/wordpress/?p=101</link>
		<comments>http://recursivemedia.net/wordpress/?p=101#comments</comments>
		<pubDate>Tue, 26 Jul 2011 04:32:31 +0000</pubDate>
		<dc:creator>Airr</dc:creator>
				<category><![CDATA[OSX]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://recursivemedia.net/wordpress/?p=101</guid>
		<description><![CDATA[You&#8217;ll need to logout for the change to take effect. This is more of a deployment script&#8230; 12345678910111213141516171819202122232425262728293031323334353637383940414243444546#!/usr/bin/env python from Foundation import NSUserDefaults import os &#34;&#34;&#34;Provides Wallpaper, a class for changing the wallpaper path &#160; in the com.apple.desktop.plist &#34;&#34;&#34; __author__ = &#34;Armando I. Rivera&#34; __copyright__ = &#34;Copyright 2011, RMG Enterprises&#34; __credits__ = &#91;&#34;Armando I. Rivera&#34;&#93; <a href='http://recursivemedia.net/wordpress/?p=101'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>You&#8217;ll need to logout for the change to take effect.  This is more of a deployment script&#8230;</p>
<div class="codecolorer-container python default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br /></div></td><td><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">from</span> Foundation <span style="color: #ff7700;font-weight:bold;">import</span> NSUserDefaults<br />
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">os</span><br />
<span style="color: #483d8b;">&quot;&quot;&quot;Provides Wallpaper, a class for changing the wallpaper path<br />
&nbsp; in the com.apple.desktop.plist<br />
&quot;&quot;&quot;</span><br />
<br />
__author__ <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">&quot;Armando I. Rivera&quot;</span><br />
__copyright__ <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">&quot;Copyright 2011, RMG Enterprises&quot;</span><br />
__credits__ <span style="color: #66cc66;">=</span> <span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;Armando I. Rivera&quot;</span><span style="color: black;">&#93;</span><br />
__license__ <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">&quot;BSD Simplified&quot;</span><br />
__version__ <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">&quot;1.0.0&quot;</span><br />
__maintainer__ <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">&quot;Armando I. Rivera&quot;</span><br />
__status__ <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">&quot;Development&quot;</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">class</span> WallPaper<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp;<span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #483d8b;">&quot;&quot;&quot; Loads the com.apple.desktop.plist file, for processing&quot;&quot;&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #008000;">self</span>.<span style="color: black;">UserDefaults</span> <span style="color: #66cc66;">=</span> NSUserDefaults.<span style="color: black;">standardUserDefaults</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #008000;">self</span>.<span style="color: black;">deskTop</span> <span style="color: #66cc66;">=</span> <span style="color: #008000;">self</span>.<span style="color: black;">UserDefaults</span>.<span style="color: black;">persistentDomainForName_</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;com.apple.desktop&quot;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #008000;">self</span>.<span style="color: black;">backGrounds</span> <span style="color: #66cc66;">=</span> <span style="color: #008000;">self</span>.<span style="color: black;">deskTop</span>.<span style="color: black;">objectForKey_</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Background&quot;</span><span style="color: black;">&#41;</span><br />
<br />
&nbsp; &nbsp;<span style="color: #ff7700;font-weight:bold;">def</span> update<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: #66cc66;">,</span> new_wallpaper<span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #483d8b;">&quot;&quot;&quot; Updates the wallpaper in the desktop.plist file.<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'new_wallpaper' is the full path to the replacement wallpaper.<br />
&nbsp; &nbsp; &nbsp; &nbsp;&quot;&quot;&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #ff7700;font-weight:bold;">for</span> a <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">self</span>.<span style="color: black;">backGrounds</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #ff7700;font-weight:bold;">try</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;b <span style="color: #66cc66;">=</span> <span style="color: #008000;">self</span>.<span style="color: black;">backGrounds</span><span style="color: black;">&#91;</span>a<span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;ImageFilePath&quot;</span><span style="color: black;">&#93;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #ff7700;font-weight:bold;">if</span> b:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #008000;">self</span>.<span style="color: black;">backGrounds</span><span style="color: black;">&#91;</span>a<span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;ImageFilePath&quot;</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">=</span> new_wallpaper<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #008000;">self</span>.<span style="color: black;">backGrounds</span><span style="color: black;">&#91;</span>a<span style="color: black;">&#93;</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;NewImageFilePath&quot;</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">=</span> new_wallpaper<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #ff7700;font-weight:bold;">except</span> <span style="color: #008000;">KeyError</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #ff7700;font-weight:bold;">pass</span><br />
<br />
&nbsp; &nbsp;<span style="color: #ff7700;font-weight:bold;">def</span> write<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #483d8b;">&quot;&quot;&quot;Writes the updated plist file to disk&quot;&quot;&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #008000;">self</span>.<span style="color: black;">UserDefaults</span>.<span style="color: black;">setObject_forKey_</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">backGrounds</span><span style="color: #66cc66;">,</span><span style="color: #483d8b;">&quot;Background&quot;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #008000;">self</span>.<span style="color: black;">UserDefaults</span>.<span style="color: black;">setPersistentDomain_forName_</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">deskTop</span><span style="color: #66cc66;">,</span><span style="color: #483d8b;">&quot;com.apple.desktop&quot;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #008000;">self</span>.<span style="color: black;">UserDefaults</span>.<span style="color: black;">synchronize</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ <span style="color: #66cc66;">==</span> <span style="color: #483d8b;">&quot;__main__&quot;</span>:<br />
&nbsp; &nbsp;wp <span style="color: #66cc66;">=</span> WallPaper<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp;wp.<span style="color: black;">update</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;&lt;/path/to/my/wallpaper.jpg&gt;&quot;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp;wp.<span style="color: black;">write</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://recursivemedia.net/wordpress/?feed=rss2&#038;p=101</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Get the size of the current user&#8217;s Entourage Email Database with Python</title>
		<link>http://recursivemedia.net/wordpress/?p=95</link>
		<comments>http://recursivemedia.net/wordpress/?p=95#comments</comments>
		<pubDate>Mon, 25 Jul 2011 02:03:56 +0000</pubDate>
		<dc:creator>Airr</dc:creator>
				<category><![CDATA[OSX]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://recursivemedia.net/wordpress/?p=95</guid>
		<description><![CDATA[Here&#8217;s a way to get the size of an OSX user&#8217;s Entourage mail store without using the ScriptingBridge or NSApplescript: 123456789101112131415161718#!/usr/bin/env python2.5 import os from SystemConfiguration import SCDynamicStoreCopyConsoleUser as GetUserName def getEntourageIdentityFolder&#40;&#41;: &#160; current_user=GetUserName&#40;None,None,None&#41;&#91;0&#93; &#160; MAIL_LOC=&#34;/Users/%s/Documents/Microsoft User Data/Office 2008 Identities/&#34; %current_user &#160; f = open&#40;&#34;/Users/%s/Library/Preferences/Microsoft/Office 2008/Entourage Preferences&#34; %current_user&#41; &#160; g = f.read&#40;&#41; &#160; f.close&#40;&#41; &#160; <a href='http://recursivemedia.net/wordpress/?p=95'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a way to get the size of an OSX user&#8217;s Entourage mail store without using the ScriptingBridge or NSApplescript:</p>
<div class="codecolorer-container python default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br /></div></td><td><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python2.5</span><br />
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">os</span><br />
<span style="color: #ff7700;font-weight:bold;">from</span> SystemConfiguration <span style="color: #ff7700;font-weight:bold;">import</span> SCDynamicStoreCopyConsoleUser <span style="color: #ff7700;font-weight:bold;">as</span> GetUserName<br />
<br />
<span style="color: #ff7700;font-weight:bold;">def</span> getEntourageIdentityFolder<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:<br />
&nbsp; current_user<span style="color: #66cc66;">=</span>GetUserName<span style="color: black;">&#40;</span><span style="color: #008000;">None</span><span style="color: #66cc66;">,</span><span style="color: #008000;">None</span><span style="color: #66cc66;">,</span><span style="color: #008000;">None</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><br />
&nbsp; MAIL_LOC<span style="color: #66cc66;">=</span><span style="color: #483d8b;">&quot;/Users/%s/Documents/Microsoft User Data/Office 2008 Identities/&quot;</span> %current_user<br />
&nbsp; f <span style="color: #66cc66;">=</span> <span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;/Users/%s/Library/Preferences/Microsoft/Office 2008/Entourage Preferences&quot;</span> %current_user<span style="color: black;">&#41;</span><br />
&nbsp; g <span style="color: #66cc66;">=</span> f.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
&nbsp; f.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
&nbsp; <br />
&nbsp; ident <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">''</span>.<span style="color: black;">join</span><span style="color: black;">&#40;</span><span style="color: black;">&#91;</span>char <span style="color: #ff7700;font-weight:bold;">for</span> char <span style="color: #ff7700;font-weight:bold;">in</span> g <span style="color: #ff7700;font-weight:bold;">if</span> char.<span style="color: black;">isalnum</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">or</span> char.<span style="color: black;">isspace</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span><br />
&nbsp; <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #483d8b;">&quot;%s%s&quot;</span> %<span style="color: black;">&#40;</span>MAIL_LOC<span style="color: #66cc66;">,</span>ident.<span style="color: black;">strip</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">def</span> getEntourageDatabaseSize<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #dc143c;">os</span>.<span style="color: black;">path</span>.<span style="color: black;">getsize</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">os</span>.<span style="color: black;">path</span>.<span style="color: black;">join</span><span style="color: black;">&#40;</span>getEntourageIdentityFolder<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">,</span><span style="color: #483d8b;">&quot;Database&quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">&gt;&gt;</span><span style="color: #ff4500;">20</span><br />
&nbsp; &nbsp; <br />
<span style="color: #ff7700;font-weight:bold;">print</span> getEntourageDatabaseSize<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://recursivemedia.net/wordpress/?feed=rss2&#038;p=95</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testing different approaches to getting the size of a folder in OSX with Python</title>
		<link>http://recursivemedia.net/wordpress/?p=75</link>
		<comments>http://recursivemedia.net/wordpress/?p=75#comments</comments>
		<pubDate>Mon, 25 Jul 2011 01:02:15 +0000</pubDate>
		<dc:creator>Airr</dc:creator>
				<category><![CDATA[OSX]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://recursivemedia.net/wordpress/?p=75</guid>
		<description><![CDATA[I needed a function to get the size of a folder, for a project that I&#8217;m currently working on. I created three possible methods to accomplish this, and when I timed them I was surprised at some of the results. The three methods consist of: Method getFolderSize1, using Pure Python Method getFolderSize2, using a mixture <a href='http://recursivemedia.net/wordpress/?p=75'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>I needed a function to get the size of a folder, for a project that I&#8217;m currently working on.</p>
<p>I created three possible methods to accomplish this, and when I timed them I was surprised at some of the results.</p>
<p>The three methods consist of:</p>
<ul>
<li>Method <strong>getFolderSize1</strong>, using Pure Python</li>
<li>Method <strong>getFolderSize2</strong>, using a mixture of Python and NSFileManager from the Foundation module</li>
<li>Method <strong>getFolderSize3</strong>, using only NSFileManager from the Foundation module</li>
</ul>
<p>The folder I chose to work with is the &#8220;Main Identity&#8221; folder from my Outlook 2011 mail store.</p>
<p>Here&#8217;s a screenshot of the info I&#8217;ll be parsing:</p>
<p><a href="http://recursivemedia.net/wordpress/wp-content/uploads/2011/07/Screen-shot-2011-07-24-at-8.35.32-PM.png"><img src="http://recursivemedia.net/wordpress/wp-content/uploads/2011/07/Screen-shot-2011-07-24-at-8.35.32-PM-300x144.png" alt="" title="Main Identity Properties" width="300" height="144" class="alignnone size-medium wp-image-79" /></a></p>
<p>In order to accurately time each function call, I used the &#8220;timeit&#8221; Python module, which only returns the elapsed time for each function (no overhead from other things like importing modules, etc)</p>
<p>Here&#8217;s the code:</p>
<div class="codecolorer-container python default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br /></div></td><td><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python2.5</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">from</span> Foundation <span style="color: #ff7700;font-weight:bold;">import</span> *<br />
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">timeit</span> <span style="color: #ff7700;font-weight:bold;">import</span> Timer<br />
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">os</span><br />
<br />
<br />
<br />
<span style="color: #ff7700;font-weight:bold;">def</span> getFolderSize1<span style="color: black;">&#40;</span>path_to_folder<span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; fileSize<span style="color: #66cc66;">=</span><span style="color: #ff4500;">0</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">for</span> <span style="color: black;">&#40;</span>path<span style="color: #66cc66;">,</span> dirs<span style="color: #66cc66;">,</span>files<span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #dc143c;">os</span>.<span style="color: black;">walk</span><span style="color: black;">&#40;</span>path_to_folder<span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">for</span> theFile <span style="color: #ff7700;font-weight:bold;">in</span> files:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fileSize +<span style="color: #66cc66;">=</span> <span style="color: #dc143c;">os</span>.<span style="color: black;">path</span>.<span style="color: black;">getsize</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">os</span>.<span style="color: black;">path</span>.<span style="color: black;">join</span><span style="color: black;">&#40;</span>path<span style="color: #66cc66;">,</span>theFile<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: black;">&#40;</span>fileSize<span style="color: #66cc66;">&gt;&gt;</span><span style="color: #ff4500;">20</span><span style="color: black;">&#41;</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">def</span> getFolderSize2<span style="color: black;">&#40;</span>path_to_folder<span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; fileSize<span style="color: #66cc66;">=</span><span style="color: #ff4500;">0</span><br />
&nbsp; &nbsp; mgr <span style="color: #66cc66;">=</span> NSFileManager.<span style="color: black;">defaultManager</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; contents <span style="color: #66cc66;">=</span> mgr.<span style="color: black;">subpathsAtPath_</span><span style="color: black;">&#40;</span>thePath<span style="color: black;">&#41;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">for</span> msg <span style="color: #ff7700;font-weight:bold;">in</span> contents:<br />
&nbsp; &nbsp; &nbsp; &nbsp; theFile <span style="color: #66cc66;">=</span> <span style="color: #dc143c;">os</span>.<span style="color: black;">path</span>.<span style="color: black;">join</span><span style="color: black;">&#40;</span>thePath<span style="color: #66cc66;">,</span>msg<span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; fileSize +<span style="color: #66cc66;">=</span> <span style="color: #dc143c;">os</span>.<span style="color: black;">path</span>.<span style="color: black;">getsize</span><span style="color: black;">&#40;</span>theFile<span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: black;">&#40;</span>fileSize<span style="color: #66cc66;">&gt;&gt;</span><span style="color: #ff4500;">20</span><span style="color: black;">&#41;</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">def</span> getFolderSize3<span style="color: black;">&#40;</span>path_to_folder<span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; fileSize<span style="color: #66cc66;">=</span><span style="color: #ff4500;">0</span><br />
&nbsp; &nbsp; mgr <span style="color: #66cc66;">=</span> NSFileManager.<span style="color: black;">defaultManager</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; contents <span style="color: #66cc66;">=</span> mgr.<span style="color: black;">subpathsAtPath_</span><span style="color: black;">&#40;</span>thePath<span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; enumerator <span style="color: #66cc66;">=</span> contents.<span style="color: black;">objectEnumerator</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; filePath <span style="color: #66cc66;">=</span> enumerator.<span style="color: black;">nextObject</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">while</span> filePath:<br />
&nbsp; &nbsp; &nbsp; &nbsp; fmgr <span style="color: #66cc66;">=</span> NSFileManager.<span style="color: black;">defaultManager</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; fattrib <span style="color: #66cc66;">=</span> fmgr.<span style="color: black;">fileAttributesAtPath_traverseLink_</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">os</span>.<span style="color: black;">path</span>.<span style="color: black;">join</span><span style="color: black;">&#40;</span>thePath<span style="color: #66cc66;">,</span> filePath<span style="color: black;">&#41;</span><span style="color: #66cc66;">,</span><span style="color: #008000;">False</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; fileSize +<span style="color: #66cc66;">=</span> fattrib.<span style="color: black;">fileSize</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; filePath <span style="color: #66cc66;">=</span> enumerator.<span style="color: black;">nextObject</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: black;">&#40;</span>fileSize<span style="color: #66cc66;">&gt;&gt;</span><span style="color: #ff4500;">20</span><span style="color: black;">&#41;</span><br />
<br />
<br />
<br />
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ <span style="color: #66cc66;">==</span> <span style="color: #483d8b;">&quot;__main__&quot;</span>:<br />
<br />
&nbsp; &nbsp; thePath <span style="color: #66cc66;">=</span> <span style="color: #dc143c;">os</span>.<span style="color: black;">path</span>.<span style="color: black;">join</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">os</span>.<span style="color: black;">path</span>.<span style="color: black;">expanduser</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;~&quot;</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">,</span><span style="color: #483d8b;">&quot;Documents/Microsoft User Data/Office 2011 Identities/Main Identity&quot;</span><span style="color: black;">&#41;</span><br />
<br />
&nbsp; &nbsp; t <span style="color: #66cc66;">=</span> Timer<span style="color: black;">&#40;</span> <span style="color: #483d8b;">&quot;getFolderSize1(thePath)&quot;</span><span style="color: #66cc66;">,</span><span style="color: #483d8b;">&quot;from __main__ import getFolderSize1, thePath&quot;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Native Method completed in %0.2f seconds&quot;</span> %<span style="color: black;">&#40;</span>t.<span style="color: #dc143c;">timeit</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><br />
<br />
&nbsp; &nbsp; t <span style="color: #66cc66;">=</span> Timer<span style="color: black;">&#40;</span> <span style="color: #483d8b;">&quot;getFolderSize2(thePath)&quot;</span><span style="color: #66cc66;">,</span><span style="color: #483d8b;">&quot;from __main__ import getFolderSize2, thePath&quot;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Mixed Native and NSFileManager Method completed in %0.2f seconds&quot;</span> %<span style="color: black;">&#40;</span>t.<span style="color: #dc143c;">timeit</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span><br />
<br />
&nbsp; &nbsp; t <span style="color: #66cc66;">=</span> Timer<span style="color: black;">&#40;</span> <span style="color: #483d8b;">&quot;getFolderSize3(thePath)&quot;</span><span style="color: #66cc66;">,</span><span style="color: #483d8b;">&quot;from __main__ import getFolderSize3, thePath&quot;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;NSFileManager Method completed in %0.2f seconds&quot;</span> %<span style="color: black;">&#40;</span>t.<span style="color: #dc143c;">timeit</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></div></td></tr></tbody></table></div>
<p>The functions are timed in order, from Native Only, Mixed Native and Foundation, and Foundation Only.</p>
<p>Here are the results:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Native Method completed <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000;">10.90</span> seconds<br />
Mixed Native and NSFileManager Method completed <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000;">21.75</span> seconds<br />
NSFileManager Method completed <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000;">36.59</span> seconds</div></td></tr></tbody></table></div>
<p>I really expected the Foundation Only function implementation to perform better than that, but apparently there are two choke points within it:  the call to .subpathsAtPath and using the Foundation enumerator to loop through the files. Also, I think the bridge between Python and ObjC introduces additional overhead.</p>
<p>I had read a LOT of posts elsewhere about Python&#8217;s os.walk() call being slow, but 10 seconds to get size information on 230,730 files in 582 folders is not bad for only 5 lines of code. </p>
<p>I <strong>am</strong> thinking that a recursive function using os.listdir() would be faster, and I might add that to this test at some point&#8230;.</p>
]]></content:encoded>
			<wfw:commentRss>http://recursivemedia.net/wordpress/?feed=rss2&#038;p=75</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Get Free Drive Space with Python and NSFileManager</title>
		<link>http://recursivemedia.net/wordpress/?p=72</link>
		<comments>http://recursivemedia.net/wordpress/?p=72#comments</comments>
		<pubDate>Sun, 24 Jul 2011 19:49:02 +0000</pubDate>
		<dc:creator>Airr</dc:creator>
				<category><![CDATA[OSX]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://recursivemedia.net/wordpress/?p=72</guid>
		<description><![CDATA[Easy way to get available space on a Volume in OSX: 123456789101112#!/usr/bin/env python2.5 from Foundation import * import locale def getFreeSpace&#40;path_to_volume&#41;: &#160; &#160; mgr=NSFileManager.defaultManager&#40;&#41; &#160; &#160; freespace=mgr.fileSystemAttributesAtPath_&#40;path_to_volume&#41;.objectForKey_&#40;&#34;NSFileSystemFreeSize&#34;&#41; &#160; &#160; locale.setlocale&#40;locale.LC_ALL, &#34;en_US&#34;&#41; &#160; &#160; return locale.format&#40;&#34;%d&#34;,freespace,grouping=True&#41; print &#34;%s bytes&#34; %&#40;getFreeSpace&#40;&#34;/Volumes/Lion&#34;&#41;&#41;]]></description>
			<content:encoded><![CDATA[<p>Easy way to get available space on a Volume in OSX:</p>
<div class="codecolorer-container python default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br /></div></td><td><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python2.5</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">from</span> Foundation <span style="color: #ff7700;font-weight:bold;">import</span> *<br />
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">locale</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">def</span> getFreeSpace<span style="color: black;">&#40;</span>path_to_volume<span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; mgr<span style="color: #66cc66;">=</span>NSFileManager.<span style="color: black;">defaultManager</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; freespace<span style="color: #66cc66;">=</span>mgr.<span style="color: black;">fileSystemAttributesAtPath_</span><span style="color: black;">&#40;</span>path_to_volume<span style="color: black;">&#41;</span>.<span style="color: black;">objectForKey_</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;NSFileSystemFreeSize&quot;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #dc143c;">locale</span>.<span style="color: black;">setlocale</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">locale</span>.<span style="color: black;">LC_ALL</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">&quot;en_US&quot;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #dc143c;">locale</span>.<span style="color: black;">format</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;%d&quot;</span><span style="color: #66cc66;">,</span>freespace<span style="color: #66cc66;">,</span>grouping<span style="color: #66cc66;">=</span><span style="color: #008000;">True</span><span style="color: black;">&#41;</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;%s bytes&quot;</span> %<span style="color: black;">&#40;</span>getFreeSpace<span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;/Volumes/Lion&quot;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://recursivemedia.net/wordpress/?feed=rss2&#038;p=72</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Uninstalling Xcode</title>
		<link>http://recursivemedia.net/wordpress/?p=67</link>
		<comments>http://recursivemedia.net/wordpress/?p=67#comments</comments>
		<pubDate>Thu, 21 Jul 2011 15:27:37 +0000</pubDate>
		<dc:creator>Airr</dc:creator>
				<category><![CDATA[OSX]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://recursivemedia.net/wordpress/?p=67</guid>
		<description><![CDATA[On my laptop loaded with OSX Lion GM, I was running Xcode 4.2 DP, and with the official release of Xcode 4.1 for Lion wanted to switch to the current released version. To make sure that I didn&#8217;t have any conflicts or weirdness, I uninstalled the 4.2 version with the following command: 1sudo /Developer/Library/uninstall-devtools --mode=all <a href='http://recursivemedia.net/wordpress/?p=67'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>On my laptop loaded with OSX Lion GM, I was running Xcode 4.2 DP, and with the official release of Xcode 4.1 for Lion wanted to switch to the current released version.</p>
<p>To make sure that I didn&#8217;t have any conflicts or weirdness, I uninstalled the 4.2 version with the following command:</p>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #000000; font-weight: bold;">/</span>Developer<span style="color: #000000; font-weight: bold;">/</span>Library<span style="color: #000000; font-weight: bold;">/</span>uninstall-devtools <span style="color: #660033;">--mode</span>=all</div></td></tr></tbody></table></div>
<p>&#8220;&#8211;mode=all&#8221; removes every bit of Xcode, except for the unixdev parts.</p>
]]></content:encoded>
			<wfw:commentRss>http://recursivemedia.net/wordpress/?feed=rss2&#038;p=67</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Get Available Drive Space on OSX using Python</title>
		<link>http://recursivemedia.net/wordpress/?p=63</link>
		<comments>http://recursivemedia.net/wordpress/?p=63#comments</comments>
		<pubDate>Mon, 18 Jul 2011 22:47:57 +0000</pubDate>
		<dc:creator>Airr</dc:creator>
				<category><![CDATA[OSX]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://recursivemedia.net/wordpress/?p=63</guid>
		<description><![CDATA[12345678910#!/usr/bin/env python import os def getAvailableDriveSpace&#40;path = &#34;/&#34;&#41;: &#160; s = os.statvfs&#40;path&#41; &#160; return round&#40;&#40;s.f_frsize * s.f_bavail&#41;/1.073741824e9&#41; &#160; print &#34;Available Disk Space is: %iGB&#34; %&#40;getAvailableDriveSpace&#40;&#41;&#41;]]></description>
			<content:encoded><![CDATA[<div class="codecolorer-container python default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br /></div></td><td><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">os</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">def</span> getAvailableDriveSpace<span style="color: black;">&#40;</span>path <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">&quot;/&quot;</span><span style="color: black;">&#41;</span>:<br />
&nbsp; s <span style="color: #66cc66;">=</span> <span style="color: #dc143c;">os</span>.<span style="color: #dc143c;">statvfs</span><span style="color: black;">&#40;</span>path<span style="color: black;">&#41;</span><br />
&nbsp; <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">round</span><span style="color: black;">&#40;</span><span style="color: black;">&#40;</span>s.<span style="color: black;">f_frsize</span> * s.<span style="color: black;">f_bavail</span><span style="color: black;">&#41;</span>/<span style="color: #ff4500;">1.073741824e9</span><span style="color: black;">&#41;</span><br />
<br />
&nbsp; <br />
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;Available Disk Space is: %iGB&quot;</span> %<span style="color: black;">&#40;</span>getAvailableDriveSpace<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://recursivemedia.net/wordpress/?feed=rss2&#038;p=63</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Remove OSX User Login Item using NSUserDefaults</title>
		<link>http://recursivemedia.net/wordpress/?p=58</link>
		<comments>http://recursivemedia.net/wordpress/?p=58#comments</comments>
		<pubDate>Mon, 18 Jul 2011 02:33:11 +0000</pubDate>
		<dc:creator>Airr</dc:creator>
				<category><![CDATA[OSX]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://recursivemedia.net/wordpress/?p=58</guid>
		<description><![CDATA[1234567891011121314def removeLoginItem&#40;app_label&#41;: &#160; from Foundation import NSUserDefaults &#160; UserDefaults = NSUserDefaults.standardUserDefaults&#40;&#41; &#160; domain = UserDefaults.persistentDomainForName_&#40;&#34;loginwindow&#34;&#41; &#160; apps = domain.objectForKey_&#40;&#34;AutoLaunchedApplicationDictionary&#34;&#41; &#160; for item in apps: &#160; &#160; if item&#91;&#34;Path&#34;&#93;.find&#40;app_label&#41; &#62; 0: &#160; &#160; &#160; apps.remove&#40;item&#41; &#160; &#160; &#160; UserDefaults.setObject_forKey_&#40;apps,&#34;AutoLaunchedApplicationDictionary&#34;&#41; &#160; &#160; &#160; UserDefaults.setPersistentDomain_forName_&#40;domain,&#34;loginwindow&#34;&#41; &#160; &#160; &#160; UserDefaults.synchronize&#40;&#41; &#160; &#160; &#160; return]]></description>
			<content:encoded><![CDATA[<div class="codecolorer-container python default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br /></div></td><td><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #ff7700;font-weight:bold;">def</span> removeLoginItem<span style="color: black;">&#40;</span>app_label<span style="color: black;">&#41;</span>:<br />
&nbsp; <span style="color: #ff7700;font-weight:bold;">from</span> Foundation <span style="color: #ff7700;font-weight:bold;">import</span> NSUserDefaults<br />
<br />
&nbsp; UserDefaults <span style="color: #66cc66;">=</span> NSUserDefaults.<span style="color: black;">standardUserDefaults</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
&nbsp; domain <span style="color: #66cc66;">=</span> UserDefaults.<span style="color: black;">persistentDomainForName_</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;loginwindow&quot;</span><span style="color: black;">&#41;</span><br />
&nbsp; apps <span style="color: #66cc66;">=</span> domain.<span style="color: black;">objectForKey_</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;AutoLaunchedApplicationDictionary&quot;</span><span style="color: black;">&#41;</span><br />
<br />
&nbsp; <span style="color: #ff7700;font-weight:bold;">for</span> item <span style="color: #ff7700;font-weight:bold;">in</span> apps:<br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">if</span> item<span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;Path&quot;</span><span style="color: black;">&#93;</span>.<span style="color: black;">find</span><span style="color: black;">&#40;</span>app_label<span style="color: black;">&#41;</span> <span style="color: #66cc66;">&gt;</span> <span style="color: #ff4500;">0</span>:<br />
&nbsp; &nbsp; &nbsp; apps.<span style="color: black;">remove</span><span style="color: black;">&#40;</span>item<span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; UserDefaults.<span style="color: black;">setObject_forKey_</span><span style="color: black;">&#40;</span>apps<span style="color: #66cc66;">,</span><span style="color: #483d8b;">&quot;AutoLaunchedApplicationDictionary&quot;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; UserDefaults.<span style="color: black;">setPersistentDomain_forName_</span><span style="color: black;">&#40;</span>domain<span style="color: #66cc66;">,</span><span style="color: #483d8b;">&quot;loginwindow&quot;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; UserDefaults.<span style="color: black;">synchronize</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span></div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://recursivemedia.net/wordpress/?feed=rss2&#038;p=58</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Python and LaunchServices to retrieve the default application for a file</title>
		<link>http://recursivemedia.net/wordpress/?p=52</link>
		<comments>http://recursivemedia.net/wordpress/?p=52#comments</comments>
		<pubDate>Sat, 16 Jul 2011 04:01:24 +0000</pubDate>
		<dc:creator>Airr</dc:creator>
				<category><![CDATA[OSX]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://recursivemedia.net/wordpress/?p=52</guid>
		<description><![CDATA[Here&#8217;s a function to retrieve the default application handler for a file: 12345678from Foundation import NSURL from LaunchServices import LSGetApplicationForURL, kLSRolesAll def getDefaultApplication&#40;path&#41;: &#160; &#160; url = NSURL.fileURLWithPath_&#40;path&#41; &#160; &#160; os_status, app_ref, appurl = LSGetApplicationForURL&#40;url, kLSRolesAll, None, None&#41; &#160; &#160; if os_status != 0: return &#34;&#34; &#160; &#160; return app_ref.as_pathname&#40;&#41;]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a function to retrieve the default application handler for a file:</p>
<div class="codecolorer-container python default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #ff7700;font-weight:bold;">from</span> Foundation <span style="color: #ff7700;font-weight:bold;">import</span> NSURL<br />
<span style="color: #ff7700;font-weight:bold;">from</span> LaunchServices <span style="color: #ff7700;font-weight:bold;">import</span> LSGetApplicationForURL<span style="color: #66cc66;">,</span> kLSRolesAll<br />
<br />
<span style="color: #ff7700;font-weight:bold;">def</span> getDefaultApplication<span style="color: black;">&#40;</span>path<span style="color: black;">&#41;</span>:<br />
&nbsp; &nbsp; url <span style="color: #66cc66;">=</span> NSURL.<span style="color: black;">fileURLWithPath_</span><span style="color: black;">&#40;</span>path<span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; os_status<span style="color: #66cc66;">,</span> app_ref<span style="color: #66cc66;">,</span> appurl <span style="color: #66cc66;">=</span> LSGetApplicationForURL<span style="color: black;">&#40;</span>url<span style="color: #66cc66;">,</span> kLSRolesAll<span style="color: #66cc66;">,</span> <span style="color: #008000;">None</span><span style="color: #66cc66;">,</span> <span style="color: #008000;">None</span><span style="color: black;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">if</span> os_status <span style="color: #66cc66;">!=</span> <span style="color: #ff4500;">0</span>: <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #483d8b;">&quot;&quot;</span><br />
&nbsp; &nbsp; <span style="color: #ff7700;font-weight:bold;">return</span> app_ref.<span style="color: black;">as_pathname</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://recursivemedia.net/wordpress/?feed=rss2&#038;p=52</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

