<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="" type="text/css"?>

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:rss="http://purl.org/rss/1.0/" xmlns:content="http://purl.org/rss/1.0/modules/content/">

    <rss:channel rdf:about="http://nathanvangheem.com/scripts">

        <rss:title>Scripts</rss:title>
        <rss:link>http://nathanvangheem.com/scripts</rss:link>

        
        <rss:description>Scripts RSS 1.0 feed.</rss:description>

        <rss:image rdf:resource="http://nathanvangheem.com/logo.png"/>

        <sy:updatePeriod>daily</sy:updatePeriod>
        <sy:updateFrequency>1</sy:updateFrequency>

        <rss:items>
            <rdf:Seq>
                
                <rdf:li rdf:resource="http://nathanvangheem.com/scripts/migrateflickrtopicasanokeyresize.py"/>
                
                
                <rdf:li rdf:resource="http://nathanvangheem.com/scripts/migrate-flickr-to-picasa-nokey.py"/>
                
                
                <rdf:li rdf:resource="http://nathanvangheem.com/scripts/auto_sign_in.py"/>
                
                
                <rdf:li rdf:resource="http://nathanvangheem.com/scripts/create_users_export.py"/>
                
                
                <rdf:li rdf:resource="http://nathanvangheem.com/scripts/create_product_export.py"/>
                
                
                <rdf:li rdf:resource="http://nathanvangheem.com/scripts/download-flickr-sets.py"/>
                
                
                <rdf:li rdf:resource="http://nathanvangheem.com/scripts/remove-svn-directories.py"/>
                
            </rdf:Seq>
        </rss:items>
    </rss:channel>

    <rss:image rdf:about="http://nathanvangheem.com/logo.png">
        <rss:title>Scripts</rss:title>
        <rss:link>http://nathanvangheem.com/scripts</rss:link>
        <rss:url>http://nathanvangheem.com/logo.png</rss:url>
    </rss:image>

    

    <rss:item rdf:about="http://nathanvangheem.com/scripts/migrateflickrtopicasanokeyresize.py">

        <rss:title>Migrate from Flickr to Picasa Script with Resize</rss:title>

        <rss:link>http://nathanvangheem.com/scripts/migrateflickrtopicasanokeyresize.py</rss:link>       

        

        <content:encoded>
          <![CDATA[
          <pre class="python">
<span style="color: #008000;">#! /usr/bin/python</span>
<span style="color: #008000;">#</span>
<span style="color: #008000;"># requires flickrapi and gdata</span>
<span style="color: #008000;">#</span>
<span style="color: #008000;"># It's a little ugly, but it is heavily tested and works!</span>
<span style="color: #008000;">#</span>
<span style="color: #008000;">#</span>
<span style="color: #008000;">#</span>

<span style="color: #C00000;">import</span> <span style="color: #000000;">flickrapi</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">StringIO</span>
<span style="color: #C00000;">import</span> <span style="color: #000000;">gdata</span>
<span style="color: #C00000;">import</span> <span style="color: #000000;">gdata</span><span style="color: #0000C0;">.</span><span style="color: #000000;">data</span>
<span style="color: #C00000;">import</span> <span style="color: #000000;">gdata</span><span style="color: #0000C0;">.</span><span style="color: #000000;">photos</span><span style="color: #0000C0;">.</span><span style="color: #000000;">service</span>
<span style="color: #C00000;">from</span> <span style="color: #000000;">getpass</span> <span style="color: #C00000;">import</span> <span style="color: #000000;">getpass</span>
<span style="color: #C00000;">from</span> <span style="color: #000000;">urllib</span> <span style="color: #C00000;">import</span> <span style="color: #000000;">urlretrieve</span>
<span style="color: #C00000;">from</span> <span style="color: #000000;">tempfile</span> <span style="color: #C00000;">import</span> <span style="color: #000000;">mkstemp</span>
<span style="color: #C00000;">from</span> <span style="color: #000000;">threadpool</span> <span style="color: #C00000;">import</span> <span style="color: #000000;">ThreadPool</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">WorkRequest</span>
<span style="color: #C00000;">import</span> <span style="color: #000000;">os</span>
<span style="color: #C00000;">import</span> <span style="color: #000000;">sys</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">os</span><span style="color: #0000C0;">.</span><span style="color: #000000;">path</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">StringIO</span>
<span style="color: #C00000;">import</span> <span style="color: #000000;">time</span>
<span style="color: #C00000;">import</span> <span style="color: #000000;">gdata</span><span style="color: #0000C0;">.</span><span style="color: #000000;">service</span>
<span style="color: #C00000;">import</span> <span style="color: #000000;">gdata</span>
<span style="color: #C00000;">import</span> <span style="color: #000000;">atom</span><span style="color: #0000C0;">.</span><span style="color: #000000;">service</span>
<span style="color: #C00000;">import</span> <span style="color: #000000;">atom</span>
<span style="color: #C00000;">import</span> <span style="color: #000000;">gdata</span><span style="color: #0000C0;">.</span><span style="color: #000000;">photos</span>
<span style="color: #C00000;">from</span> <span style="color: #000000;">shutil</span> <span style="color: #C00000;">import</span> <span style="color: #000000;">copyfile</span>
<span style="color: #C00000;">from</span> <span style="color: #000000;">PIL</span> <span style="color: #C00000;">import</span> <span style="color: #000000;">Image</span>

<span style="color: #C00000;">from</span> <span style="color: #000000;">gdata</span><span style="color: #0000C0;">.</span><span style="color: #000000;">photos</span><span style="color: #0000C0;">.</span><span style="color: #000000;">service</span> <span style="color: #C00000;">import</span> <span style="color: #000000;">GPHOTOS_INVALID_ARGUMENT</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">GPHOTOS_INVALID_CONTENT_TYPE</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">GooglePhotosException</span>

<span style="color: #000000;">video_too_large_save_location</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">os</span><span style="color: #0000C0;">.</span><span style="color: #000000;">path</span><span style="color: #0000C0;">.</span><span style="color: #000000;">join</span><span style="color: #0000C0;">(</span><span style="color: #000000;">os</span><span style="color: #0000C0;">.</span><span style="color: #000000;">path</span><span style="color: #0000C0;">.</span><span style="color: #000000;">sep</span><span style="color: #0000C0;">.</span><span style="color: #000000;">join</span><span style="color: #0000C0;">(</span><span style="color: #000000;">__file__</span><span style="color: #0000C0;">.</span><span style="color: #000000;">split</span><span style="color: #0000C0;">(</span><span style="color: #000000;">os</span><span style="color: #0000C0;">.</span><span style="color: #000000;">path</span><span style="color: #0000C0;">.</span><span style="color: #000000;">sep</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">[</span><span style="color: #0000C0;">:</span><span style="color: #0000C0;">-</span><span style="color: #0080C0;">1</span><span style="color: #0000C0;">]</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">,</span> <span style="color: #004080;">'picasa_videos'</span><span style="color: #0000C0;">)</span>

<span style="color: #C00000;">if</span> <span style="color: #C00000;">not</span> <span style="color: #000000;">os</span><span style="color: #0000C0;">.</span><span style="color: #000000;">path</span><span style="color: #0000C0;">.</span><span style="color: #000000;">exists</span><span style="color: #0000C0;">(</span><span style="color: #000000;">video_too_large_save_location</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">:</span>
    <span style="color: #000000;">os</span><span style="color: #0000C0;">.</span><span style="color: #000000;">mkdir</span><span style="color: #0000C0;">(</span><span style="color: #000000;">video_too_large_save_location</span><span style="color: #0000C0;">)</span>

<span style="color: #C00000;">class</span> <span style="color: #000000;">VideoEntry</span><span style="color: #0000C0;">(</span><span style="color: #000000;">gdata</span><span style="color: #0000C0;">.</span><span style="color: #000000;">photos</span><span style="color: #0000C0;">.</span><span style="color: #000000;">PhotoEntry</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">:</span>
    <span style="color: #C00000;">pass</span>

<span style="color: #000000;">gdata</span><span style="color: #0000C0;">.</span><span style="color: #000000;">photos</span><span style="color: #0000C0;">.</span><span style="color: #000000;">VideoEntry</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">VideoEntry</span>

<span style="color: #C00000;">def</span> <span style="color: #000000;">InsertVideo</span><span style="color: #0000C0;">(</span><span style="color: #000000;">self</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">album_or_uri</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">video</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">filename_or_handle</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">content_type</span><span style="color: #0000C0;">=</span><span style="color: #004080;">'image/jpeg'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">:</span>
    <span style="color: #004080;">&quot;&quot;&quot;Copy of InsertPhoto which removes protections since it *should* work&quot;&quot;&quot;</span>
    <span style="color: #C00000;">try</span><span style="color: #0000C0;">:</span>
        <span style="color: #C00000;">assert</span><span style="color: #0000C0;">(</span><span style="color: #000000;">isinstance</span><span style="color: #0000C0;">(</span><span style="color: #000000;">video</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">VideoEntry</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">)</span>
    <span style="color: #C00000;">except</span> <span style="color: #000000;">AssertionError</span><span style="color: #0000C0;">:</span>
        <span style="color: #C00000;">raise</span> <span style="color: #000000;">GooglePhotosException</span><span style="color: #0000C0;">(</span><span style="color: #0000C0;">{</span><span style="color: #004080;">'status'</span><span style="color: #0000C0;">:</span><span style="color: #000000;">GPHOTOS_INVALID_ARGUMENT</span><span style="color: #0000C0;">,</span>
            <span style="color: #004080;">'body'</span><span style="color: #0000C0;">:</span><span style="color: #004080;">'`video` must be a gdata.photos.VideoEntry instance'</span><span style="color: #0000C0;">,</span>
            <span style="color: #004080;">'reason'</span><span style="color: #0000C0;">:</span><span style="color: #004080;">'Found %s, not PhotoEntry'</span> <span style="color: #0000C0;">%</span> <span style="color: #000000;">type</span><span style="color: #0000C0;">(</span><span style="color: #000000;">video</span><span style="color: #0000C0;">)</span>
        <span style="color: #0000C0;">}</span><span style="color: #0000C0;">)</span>
    <span style="color: #C00000;">try</span><span style="color: #0000C0;">:</span>
        <span style="color: #000000;">majtype</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">mintype</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">content_type</span><span style="color: #0000C0;">.</span><span style="color: #000000;">split</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'/'</span><span style="color: #0000C0;">)</span>
        <span style="color: #008000;">#assert(mintype in SUPPORTED_UPLOAD_TYPES)</span>
    <span style="color: #C00000;">except</span> <span style="color: #0000C0;">(</span><span style="color: #000000;">ValueError</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">AssertionError</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">:</span>
        <span style="color: #C00000;">raise</span> <span style="color: #000000;">GooglePhotosException</span><span style="color: #0000C0;">(</span><span style="color: #0000C0;">{</span><span style="color: #004080;">'status'</span><span style="color: #0000C0;">:</span><span style="color: #000000;">GPHOTOS_INVALID_CONTENT_TYPE</span><span style="color: #0000C0;">,</span>
            <span style="color: #004080;">'body'</span><span style="color: #0000C0;">:</span><span style="color: #004080;">'This is not a valid content type: %s'</span> <span style="color: #0000C0;">%</span> <span style="color: #000000;">content_type</span><span style="color: #0000C0;">,</span>
            <span style="color: #004080;">'reason'</span><span style="color: #0000C0;">:</span><span style="color: #004080;">'Accepted content types:'</span>
        <span style="color: #0000C0;">}</span><span style="color: #0000C0;">)</span>
    <span style="color: #C00000;">if</span> <span style="color: #000000;">isinstance</span><span style="color: #0000C0;">(</span><span style="color: #000000;">filename_or_handle</span><span style="color: #0000C0;">,</span> <span style="color: #0000C0;">(</span><span style="color: #000000;">str</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">unicode</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">)</span> <span style="color: #C00000;">and</span> \
        <span style="color: #000000;">os</span><span style="color: #0000C0;">.</span><span style="color: #000000;">path</span><span style="color: #0000C0;">.</span><span style="color: #000000;">exists</span><span style="color: #0000C0;">(</span><span style="color: #000000;">filename_or_handle</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">:</span> <span style="color: #008000;"># it's a file name</span>
        <span style="color: #000000;">mediasource</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">gdata</span><span style="color: #0000C0;">.</span><span style="color: #000000;">MediaSource</span><span style="color: #0000C0;">(</span><span style="color: #0000C0;">)</span>
        <span style="color: #000000;">mediasource</span><span style="color: #0000C0;">.</span><span style="color: #000000;">setFile</span><span style="color: #0000C0;">(</span><span style="color: #000000;">filename_or_handle</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">content_type</span><span style="color: #0000C0;">)</span>
    <span style="color: #C00000;">elif</span> <span style="color: #000000;">hasattr</span><span style="color: #0000C0;">(</span><span style="color: #000000;">filename_or_handle</span><span style="color: #0000C0;">,</span> <span style="color: #004080;">'read'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">:</span><span style="color: #008000;"># it's a file-like resource</span>
        <span style="color: #C00000;">if</span> <span style="color: #000000;">hasattr</span><span style="color: #0000C0;">(</span><span style="color: #000000;">filename_or_handle</span><span style="color: #0000C0;">,</span> <span style="color: #004080;">'seek'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">:</span>
            <span style="color: #000000;">filename_or_handle</span><span style="color: #0000C0;">.</span><span style="color: #000000;">seek</span><span style="color: #0000C0;">(</span><span style="color: #0080C0;">0</span><span style="color: #0000C0;">)</span> <span style="color: #008000;"># rewind pointer to the start of the file</span>
        <span style="color: #008000;"># gdata.MediaSource needs the content length, so read the whole image </span>
        <span style="color: #000000;">file_handle</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">StringIO</span><span style="color: #0000C0;">.</span><span style="color: #000000;">StringIO</span><span style="color: #0000C0;">(</span><span style="color: #000000;">filename_or_handle</span><span style="color: #0000C0;">.</span><span style="color: #000000;">read</span><span style="color: #0000C0;">(</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">)</span>
        <span style="color: #000000;">name</span> <span style="color: #0000C0;">=</span> <span style="color: #004080;">'image'</span>
        <span style="color: #C00000;">if</span> <span style="color: #000000;">hasattr</span><span style="color: #0000C0;">(</span><span style="color: #000000;">filename_or_handle</span><span style="color: #0000C0;">,</span> <span style="color: #004080;">'name'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">:</span>
            <span style="color: #000000;">name</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">filename_or_handle</span><span style="color: #0000C0;">.</span><span style="color: #000000;">name</span>
        <span style="color: #000000;">mediasource</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">gdata</span><span style="color: #0000C0;">.</span><span style="color: #000000;">MediaSource</span><span style="color: #0000C0;">(</span><span style="color: #000000;">file_handle</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">content_type</span><span style="color: #0000C0;">,</span>
            <span style="color: #000000;">content_length</span><span style="color: #0000C0;">=</span><span style="color: #000000;">file_handle</span><span style="color: #0000C0;">.</span><span style="color: #000000;">len</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">file_name</span><span style="color: #0000C0;">=</span><span style="color: #000000;">name</span><span style="color: #0000C0;">)</span>
    <span style="color: #C00000;">else</span><span style="color: #0000C0;">:</span> <span style="color: #008000;">#filename_or_handle is not valid</span>
        <span style="color: #C00000;">raise</span> <span style="color: #000000;">GooglePhotosException</span><span style="color: #0000C0;">(</span><span style="color: #0000C0;">{</span><span style="color: #004080;">'status'</span><span style="color: #0000C0;">:</span><span style="color: #000000;">GPHOTOS_INVALID_ARGUMENT</span><span style="color: #0000C0;">,</span>
            <span style="color: #004080;">'body'</span><span style="color: #0000C0;">:</span><span style="color: #004080;">'`filename_or_handle` must be a path name or a file-like object'</span><span style="color: #0000C0;">,</span>
            <span style="color: #004080;">'reason'</span><span style="color: #0000C0;">:</span><span style="color: #004080;">'Found %s, not path name or object with a .read() method'</span> <span style="color: #0000C0;">%</span> \
            <span style="color: #000000;">type</span><span style="color: #0000C0;">(</span><span style="color: #000000;">filename_or_handle</span><span style="color: #0000C0;">)</span>
        <span style="color: #0000C0;">}</span><span style="color: #0000C0;">)</span>

    <span style="color: #C00000;">if</span> <span style="color: #000000;">isinstance</span><span style="color: #0000C0;">(</span><span style="color: #000000;">album_or_uri</span><span style="color: #0000C0;">,</span> <span style="color: #0000C0;">(</span><span style="color: #000000;">str</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">unicode</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">:</span> <span style="color: #008000;"># it's a uri</span>
        <span style="color: #000000;">feed_uri</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">album_or_uri</span>
    <span style="color: #C00000;">elif</span> <span style="color: #000000;">hasattr</span><span style="color: #0000C0;">(</span><span style="color: #000000;">album_or_uri</span><span style="color: #0000C0;">,</span> <span style="color: #004080;">'GetFeedLink'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">:</span> <span style="color: #008000;"># it's a AlbumFeed object</span>
        <span style="color: #000000;">feed_uri</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">album_or_uri</span><span style="color: #0000C0;">.</span><span style="color: #000000;">GetFeedLink</span><span style="color: #0000C0;">(</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">.</span><span style="color: #000000;">href</span>

    <span style="color: #C00000;">try</span><span style="color: #0000C0;">:</span>
        <span style="color: #C00000;">return</span> <span style="color: #000000;">self</span><span style="color: #0000C0;">.</span><span style="color: #000000;">Post</span><span style="color: #0000C0;">(</span><span style="color: #000000;">video</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">uri</span><span style="color: #0000C0;">=</span><span style="color: #000000;">feed_uri</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">media_source</span><span style="color: #0000C0;">=</span><span style="color: #000000;">mediasource</span><span style="color: #0000C0;">,</span>
            <span style="color: #000000;">converter</span><span style="color: #0000C0;">=</span><span style="color: #000000;">None</span><span style="color: #0000C0;">)</span>
    <span style="color: #C00000;">except</span> <span style="color: #000000;">gdata</span><span style="color: #0000C0;">.</span><span style="color: #000000;">service</span><span style="color: #0000C0;">.</span><span style="color: #000000;">RequestError</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">e</span><span style="color: #0000C0;">:</span>
        <span style="color: #C00000;">raise</span> <span style="color: #000000;">GooglePhotosException</span><span style="color: #0000C0;">(</span><span style="color: #000000;">e</span><span style="color: #0000C0;">.</span><span style="color: #000000;">args</span><span style="color: #0000C0;">[</span><span style="color: #0080C0;">0</span><span style="color: #0000C0;">]</span><span style="color: #0000C0;">)</span>

<span style="color: #000000;">gdata</span><span style="color: #0000C0;">.</span><span style="color: #000000;">photos</span><span style="color: #0000C0;">.</span><span style="color: #000000;">service</span><span style="color: #0000C0;">.</span><span style="color: #000000;">PhotosService</span><span style="color: #0000C0;">.</span><span style="color: #000000;">InsertVideo</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">InsertVideo</span>

<span style="color: #C00000;">def</span> <span style="color: #000000;">clear_input_retriever</span><span style="color: #0000C0;">(</span><span style="color: #000000;">setting</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">:</span>
    <span style="color: #C00000;">return</span> <span style="color: #000000;">raw_input</span><span style="color: #0000C0;">(</span><span style="color: #000000;">setting</span><span style="color: #0000C0;">.</span><span style="color: #000000;">name</span> <span style="color: #0000C0;">+</span> <span style="color: #004080;">&quot;:&quot;</span><span style="color: #0000C0;">)</span>

<span style="color: #C00000;">def</span> <span style="color: #000000;">passwd_input_retriever</span><span style="color: #0000C0;">(</span><span style="color: #000000;">setting</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">:</span>
    <span style="color: #C00000;">return</span> <span style="color: #000000;">getpass</span><span style="color: #0000C0;">(</span><span style="color: #000000;">setting</span><span style="color: #0000C0;">.</span><span style="color: #000000;">name</span> <span style="color: #0000C0;">+</span> <span style="color: #004080;">':'</span><span style="color: #0000C0;">)</span>

<span style="color: #C00000;">class</span> <span style="color: #000000;">Setting</span><span style="color: #0000C0;">(</span><span style="color: #000000;">object</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">:</span>

    <span style="color: #C00000;">def</span> <span style="color: #000000;">__init__</span><span style="color: #0000C0;">(</span><span style="color: #000000;">self</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">name</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">default</span><span style="color: #0000C0;">=</span><span style="color: #000000;">None</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">input_retriever</span><span style="color: #0000C0;">=</span><span style="color: #000000;">clear_input_retriever</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">empty_value</span><span style="color: #0000C0;">=</span><span style="color: #000000;">None</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">:</span>
        <span style="color: #000000;">self</span><span style="color: #0000C0;">.</span><span style="color: #000000;">name</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">name</span>
        <span style="color: #000000;">self</span><span style="color: #0000C0;">.</span><span style="color: #000000;">_value</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">default</span>
        <span style="color: #000000;">self</span><span style="color: #0000C0;">.</span><span style="color: #000000;">input_retriever</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">input_retriever</span>
        <span style="color: #000000;">self</span><span style="color: #0000C0;">.</span><span style="color: #000000;">empty_value</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">empty_value</span>

    <span style="color: #0000C0;">@</span><span style="color: #000000;">property</span>
    <span style="color: #C00000;">def</span> <span style="color: #000000;">value</span><span style="color: #0000C0;">(</span><span style="color: #000000;">self</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">:</span>
        <span style="color: #C00000;">while</span> <span style="color: #000000;">self</span><span style="color: #0000C0;">.</span><span style="color: #000000;">_value</span> <span style="color: #0000C0;">==</span> <span style="color: #000000;">self</span><span style="color: #0000C0;">.</span><span style="color: #000000;">empty_value</span><span style="color: #0000C0;">:</span>
            <span style="color: #000000;">self</span><span style="color: #0000C0;">.</span><span style="color: #000000;">_value</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">self</span><span style="color: #0000C0;">.</span><span style="color: #000000;">input_retriever</span><span style="color: #0000C0;">(</span><span style="color: #000000;">self</span><span style="color: #0000C0;">)</span>

        <span style="color: #C00000;">return</span> <span style="color: #000000;">self</span><span style="color: #0000C0;">.</span><span style="color: #000000;">_value</span>


<span style="color: #000000;">FLICKR</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">None</span>

<span style="color: #000000;">picasa_username</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">Setting</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'Picasa Username(complete email)'</span><span style="color: #0000C0;">)</span>
<span style="color: #000000;">picasa_password</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">Setting</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'Picasa Password'</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">input_retriever</span><span style="color: #0000C0;">=</span><span style="color: #000000;">passwd_input_retriever</span><span style="color: #0000C0;">)</span>

<span style="color: #000000;">flickr_api_key</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">Setting</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'Flickr API Key'</span><span style="color: #0000C0;">)</span>
<span style="color: #000000;">flickr_api_secret</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">Setting</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'Flickr API Secret'</span><span style="color: #0000C0;">)</span>

<span style="color: #000000;">flickr_usernsid</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">None</span>

<span style="color: #C00000;">def</span> <span style="color: #000000;">flickr_token_retriever</span><span style="color: #0000C0;">(</span><span style="color: #000000;">setting</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">:</span>
    <span style="color: #C00000;">global</span> <span style="color: #000000;">FLICKR</span>
    <span style="color: #C00000;">global</span> <span style="color: #000000;">flickr_usernsid</span>
    <span style="color: #C00000;">if</span> <span style="color: #000000;">FLICKR</span> <span style="color: #C00000;">is</span> <span style="color: #000000;">None</span><span style="color: #0000C0;">:</span>
        <span style="color: #000000;">FLICKR</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">flickrapi</span><span style="color: #0000C0;">.</span><span style="color: #000000;">FlickrAPI</span><span style="color: #0000C0;">(</span><span style="color: #000000;">flickr_api_key</span><span style="color: #0000C0;">.</span><span style="color: #000000;">value</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">flickr_api_secret</span><span style="color: #0000C0;">.</span><span style="color: #000000;">value</span><span style="color: #0000C0;">)</span>

    <span style="color: #0000C0;">(</span><span style="color: #000000;">token</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">frob</span><span style="color: #0000C0;">)</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">FLICKR</span><span style="color: #0000C0;">.</span><span style="color: #000000;">get_token_part_one</span><span style="color: #0000C0;">(</span><span style="color: #000000;">perms</span><span style="color: #0000C0;">=</span><span style="color: #004080;">'write'</span><span style="color: #0000C0;">)</span>

    <span style="color: #C00000;">if</span> <span style="color: #C00000;">not</span> <span style="color: #000000;">token</span><span style="color: #0000C0;">:</span> <span style="color: #000000;">raw_input</span><span style="color: #0000C0;">(</span><span style="color: #004080;">&quot;Press ENTER after you authorized this program&quot;</span><span style="color: #0000C0;">)</span>

    <span style="color: #000000;">FLICKR</span><span style="color: #0000C0;">.</span><span style="color: #000000;">get_token_part_two</span><span style="color: #0000C0;">(</span><span style="color: #0000C0;">(</span><span style="color: #000000;">token</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">frob</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">)</span>

    <span style="color: #000000;">flickr_usernsid</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">FLICKR</span><span style="color: #0000C0;">.</span><span style="color: #000000;">auth_checkToken</span><span style="color: #0000C0;">(</span><span style="color: #000000;">auth_token</span><span style="color: #0000C0;">=</span><span style="color: #000000;">token</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">.</span><span style="color: #000000;">find</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'auth'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">.</span><span style="color: #000000;">find</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'user'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">.</span><span style="color: #000000;">get</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'nsid'</span><span style="color: #0000C0;">)</span>

    <span style="color: #C00000;">return</span> <span style="color: #000000;">True</span>


<span style="color: #C00000;">def</span> <span style="color: #000000;">get_gd_client</span><span style="color: #0000C0;">(</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">:</span>

    <span style="color: #000000;">gd_client</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">gdata</span><span style="color: #0000C0;">.</span><span style="color: #000000;">photos</span><span style="color: #0000C0;">.</span><span style="color: #000000;">service</span><span style="color: #0000C0;">.</span><span style="color: #000000;">PhotosService</span><span style="color: #0000C0;">(</span><span style="color: #0000C0;">)</span>
    <span style="color: #000000;">gd_client</span><span style="color: #0000C0;">.</span><span style="color: #000000;">email</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">picasa_username</span><span style="color: #0000C0;">.</span><span style="color: #000000;">value</span>
    <span style="color: #000000;">gd_client</span><span style="color: #0000C0;">.</span><span style="color: #000000;">password</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">picasa_password</span><span style="color: #0000C0;">.</span><span style="color: #000000;">value</span>
    <span style="color: #000000;">gd_client</span><span style="color: #0000C0;">.</span><span style="color: #000000;">source</span> <span style="color: #0000C0;">=</span> <span style="color: #004080;">'migrate-flickr-to-picasa.py'</span>
    <span style="color: #000000;">gd_client</span><span style="color: #0000C0;">.</span><span style="color: #000000;">ProgrammaticLogin</span><span style="color: #0000C0;">(</span><span style="color: #0000C0;">)</span>

    <span style="color: #C00000;">return</span> <span style="color: #000000;">gd_client</span>

<span style="color: #C00000;">def</span> <span style="color: #000000;">do_migration</span><span style="color: #0000C0;">(</span><span style="color: #000000;">threadpoolsize</span><span style="color: #0000C0;">=</span><span style="color: #0080C0;">7</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">:</span>

    <span style="color: #C00000;">print</span> <span style="color: #004080;">'Authenticating with Picasa...'</span>
    <span style="color: #000000;">gd_client</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">get_gd_client</span><span style="color: #0000C0;">(</span><span style="color: #0000C0;">)</span>

    <span style="color: #C00000;">print</span> <span style="color: #004080;">'Authenticating with Flickr..'</span>
    <span style="color: #000000;">flickr_token</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">Setting</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'Flickr Token'</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">input_retriever</span><span style="color: #0000C0;">=</span><span style="color: #000000;">flickr_token_retriever</span><span style="color: #0000C0;">)</span>
    <span style="color: #000000;">token</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">flickr_token</span><span style="color: #0000C0;">.</span><span style="color: #000000;">value</span> <span style="color: #008000;"># force retrieval of authentication information...</span>

    <span style="color: #000000;">sets</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">FLICKR</span><span style="color: #0000C0;">.</span><span style="color: #000000;">photosets_getList</span><span style="color: #0000C0;">(</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">.</span><span style="color: #000000;">find</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'photosets'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">.</span><span style="color: #000000;">getchildren</span><span style="color: #0000C0;">(</span><span style="color: #0000C0;">)</span>

    <span style="color: #C00000;">print</span> <span style="color: #004080;">'Found %i sets to move over to Picasa.'</span> <span style="color: #0000C0;">%</span> <span style="color: #000000;">len</span><span style="color: #0000C0;">(</span><span style="color: #000000;">sets</span><span style="color: #0000C0;">)</span>


    <span style="color: #C00000;">def</span> <span style="color: #000000;">get_picasa_albums</span><span style="color: #0000C0;">(</span><span style="color: #000000;">id</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">aset</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">num_photos</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">:</span>
        <span style="color: #000000;">all_picasa_albums</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">gd_client</span><span style="color: #0000C0;">.</span><span style="color: #000000;">GetUserFeed</span><span style="color: #0000C0;">(</span><span style="color: #000000;">user</span><span style="color: #0000C0;">=</span><span style="color: #000000;">picasa_username</span><span style="color: #0000C0;">.</span><span style="color: #000000;">value</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">.</span><span style="color: #000000;">entry</span>
        <span style="color: #000000;">picasa_albums</span> <span style="color: #0000C0;">=</span> <span style="color: #0000C0;">[</span><span style="color: #0000C0;">]</span>
        <span style="color: #000000;">id</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">id</span><span style="color: #0000C0;">.</span><span style="color: #000000;">strip</span><span style="color: #0000C0;">(</span><span style="color: #0000C0;">)</span>

        <span style="color: #000000;">orig_id</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">id</span>

        <span style="color: #C00000;">for</span> <span style="color: #000000;">i</span> <span style="color: #C00000;">in</span> <span style="color: #000000;">range</span><span style="color: #0000C0;">(</span><span style="color: #0000C0;">(</span><span style="color: #000000;">num_photos</span><span style="color: #0000C0;">/</span><span style="color: #0080C0;">1000</span><span style="color: #0000C0;">)</span> <span style="color: #0000C0;">+</span> <span style="color: #0080C0;">1</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">:</span>
            <span style="color: #C00000;">if</span> <span style="color: #000000;">i</span> <span style="color: #0000C0;">&gt;</span> <span style="color: #0080C0;">0</span><span style="color: #0000C0;">:</span>
                <span style="color: #000000;">id</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">orig_id</span> <span style="color: #0000C0;">+</span> <span style="color: #004080;">'-'</span> <span style="color: #0000C0;">+</span> <span style="color: #000000;">str</span><span style="color: #0000C0;">(</span><span style="color: #000000;">i</span><span style="color: #0000C0;">)</span>

            <span style="color: #000000;">picasa_album</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">None</span>

            <span style="color: #C00000;">for</span> <span style="color: #000000;">album</span> <span style="color: #C00000;">in</span> <span style="color: #000000;">all_picasa_albums</span><span style="color: #0000C0;">:</span>
                <span style="color: #C00000;">if</span> <span style="color: #000000;">album</span><span style="color: #0000C0;">.</span><span style="color: #000000;">title</span><span style="color: #0000C0;">.</span><span style="color: #000000;">text</span> <span style="color: #0000C0;">==</span> <span style="color: #000000;">id</span><span style="color: #0000C0;">:</span>
                    <span style="color: #000000;">picasa_album</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">album</span>
                    <span style="color: #C00000;">break</span>

            <span style="color: #C00000;">if</span> <span style="color: #000000;">picasa_album</span> <span style="color: #C00000;">is</span> <span style="color: #C00000;">not</span> <span style="color: #000000;">None</span><span style="color: #0000C0;">:</span>
                <span style="color: #C00000;">print</span> <span style="color: #004080;">'&quot;%s&quot; set already exists as an album in Picasa.'</span> <span style="color: #0000C0;">%</span> <span style="color: #000000;">id</span>
            <span style="color: #C00000;">else</span><span style="color: #0000C0;">:</span>
                <span style="color: #000000;">picasa_album</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">gd_client</span><span style="color: #0000C0;">.</span><span style="color: #000000;">InsertAlbum</span><span style="color: #0000C0;">(</span><span style="color: #000000;">title</span><span style="color: #0000C0;">=</span><span style="color: #000000;">id</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">summary</span><span style="color: #0000C0;">=</span><span style="color: #000000;">aset</span><span style="color: #0000C0;">.</span><span style="color: #000000;">find</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'description'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">.</span><span style="color: #000000;">text</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">access</span><span style="color: #0000C0;">=</span><span style="color: #004080;">'protected'</span><span style="color: #0000C0;">)</span>
                <span style="color: #C00000;">print</span> <span style="color: #004080;">'Created picasa album &quot;%s&quot;.'</span> <span style="color: #0000C0;">%</span> <span style="color: #000000;">picasa_album</span><span style="color: #0000C0;">.</span><span style="color: #000000;">title</span><span style="color: #0000C0;">.</span><span style="color: #000000;">text</span>

            <span style="color: #000000;">picasa_albums</span><span style="color: #0000C0;">.</span><span style="color: #000000;">append</span><span style="color: #0000C0;">(</span><span style="color: #000000;">picasa_album</span><span style="color: #0000C0;">)</span>

        <span style="color: #C00000;">return</span> <span style="color: #000000;">picasa_albums</span>


    <span style="color: #C00000;">def</span> <span style="color: #000000;">get_picasa_photos</span><span style="color: #0000C0;">(</span><span style="color: #000000;">picasa_albums</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">:</span>
        <span style="color: #000000;">photos</span> <span style="color: #0000C0;">=</span> <span style="color: #0000C0;">[</span><span style="color: #0000C0;">]</span>

        <span style="color: #C00000;">for</span> <span style="color: #000000;">album</span> <span style="color: #C00000;">in</span> <span style="color: #000000;">picasa_albums</span><span style="color: #0000C0;">:</span>
            <span style="color: #000000;">photos</span><span style="color: #0000C0;">.</span><span style="color: #000000;">extend</span><span style="color: #0000C0;">(</span><span style="color: #000000;">gd_client</span><span style="color: #0000C0;">.</span><span style="color: #000000;">GetFeed</span><span style="color: #0000C0;">(</span><span style="color: #000000;">album</span><span style="color: #0000C0;">.</span><span style="color: #000000;">GetFeedLink</span><span style="color: #0000C0;">(</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">.</span><span style="color: #000000;">href</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">.</span><span style="color: #000000;">entry</span><span style="color: #0000C0;">)</span>

        <span style="color: #C00000;">return</span> <span style="color: #000000;">photos</span>

    <span style="color: #C00000;">def</span> <span style="color: #000000;">get_photo_url</span><span style="color: #0000C0;">(</span><span style="color: #000000;">photo</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">:</span>
        <span style="color: #C00000;">if</span> <span style="color: #000000;">photo</span><span style="color: #0000C0;">.</span><span style="color: #000000;">get</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'media'</span><span style="color: #0000C0;">)</span> <span style="color: #0000C0;">==</span> <span style="color: #004080;">'video'</span><span style="color: #0000C0;">:</span>
            <span style="color: #C00000;">return</span> <span style="color: #004080;">&quot;http://www.flickr.com/photos/%s/%s/play/orig/%s&quot;</span> <span style="color: #0000C0;">%</span> <span style="color: #0000C0;">(</span><span style="color: #000000;">flickr_usernsid</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">photo</span><span style="color: #0000C0;">.</span><span style="color: #000000;">get</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'id'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">photo</span><span style="color: #0000C0;">.</span><span style="color: #000000;">get</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'originalsecret'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">)</span>
        <span style="color: #C00000;">else</span><span style="color: #0000C0;">:</span>
            <span style="color: #C00000;">return</span> <span style="color: #000000;">photo</span><span style="color: #0000C0;">.</span><span style="color: #000000;">get</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'url_o'</span><span style="color: #0000C0;">)</span>


    <span style="color: #C00000;">def</span> <span style="color: #000000;">move_photo</span><span style="color: #0000C0;">(</span><span style="color: #000000;">flickr_photo</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">picasa_album</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">:</span>

        <span style="color: #C00000;">def</span> <span style="color: #000000;">download_callback</span><span style="color: #0000C0;">(</span><span style="color: #000000;">count</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">blocksize</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">totalsize</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">:</span>

            <span style="color: #000000;">download_stat_print</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">set</span><span style="color: #0000C0;">(</span><span style="color: #0000C0;">(</span><span style="color: #0080C0;">0.0</span><span style="color: #0000C0;">,</span> <span style="color: #0080C0;">.25</span><span style="color: #0000C0;">,</span> <span style="color: #0080C0;">.5</span><span style="color: #0000C0;">,</span> <span style="color: #0080C0;">1.0</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">)</span>
            <span style="color: #000000;">downloaded</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">float</span><span style="color: #0000C0;">(</span><span style="color: #000000;">count</span><span style="color: #0000C0;">*</span><span style="color: #000000;">blocksize</span><span style="color: #0000C0;">)</span>
            <span style="color: #000000;">res</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">int</span><span style="color: #0000C0;">(</span><span style="color: #0000C0;">(</span><span style="color: #000000;">downloaded</span><span style="color: #0000C0;">/</span><span style="color: #000000;">totalsize</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">*</span><span style="color: #0080C0;">100.0</span><span style="color: #0000C0;">)</span>

            <span style="color: #C00000;">for</span> <span style="color: #000000;">st</span> <span style="color: #C00000;">in</span> <span style="color: #000000;">download_stat_print</span><span style="color: #0000C0;">:</span>
                <span style="color: #000000;">dl</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">totalsize</span><span style="color: #0000C0;">*</span><span style="color: #000000;">st</span>
                <span style="color: #000000;">diff</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">downloaded</span> <span style="color: #0000C0;">-</span> <span style="color: #000000;">dl</span>
                <span style="color: #C00000;">if</span> <span style="color: #000000;">diff</span> <span style="color: #0000C0;">&gt;=</span> <span style="color: #0000C0;">-</span><span style="color: #0000C0;">(</span><span style="color: #000000;">blocksize</span><span style="color: #0000C0;">/</span><span style="color: #0080C0;">2</span><span style="color: #0000C0;">)</span> <span style="color: #C00000;">and</span> <span style="color: #000000;">diff</span> <span style="color: #0000C0;">&lt;=</span> <span style="color: #0000C0;">(</span><span style="color: #000000;">blocksize</span><span style="color: #0000C0;">/</span><span style="color: #0080C0;">2</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">:</span>
                    <span style="color: #000000;">downloaded_so_far</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">float</span><span style="color: #0000C0;">(</span><span style="color: #000000;">count</span><span style="color: #0000C0;">*</span><span style="color: #000000;">blocksize</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">/</span><span style="color: #0080C0;">1024.0</span><span style="color: #0000C0;">/</span><span style="color: #0080C0;">1024.0</span>
                    <span style="color: #000000;">total_size_in_mb</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">float</span><span style="color: #0000C0;">(</span><span style="color: #000000;">totalsize</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">/</span><span style="color: #0080C0;">1024.0</span><span style="color: #0000C0;">/</span><span style="color: #0080C0;">1024.0</span>
                    <span style="color: #C00000;">print</span> <span style="color: #004080;">&quot;photo: %s, album: %s --- %i%% - %.1f/%.1fmb&quot;</span> <span style="color: #0000C0;">%</span> <span style="color: #0000C0;">(</span><span style="color: #000000;">flickr_photo</span><span style="color: #0000C0;">.</span><span style="color: #000000;">get</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'title'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">picasa_album</span><span style="color: #0000C0;">.</span><span style="color: #000000;">title</span><span style="color: #0000C0;">.</span><span style="color: #000000;">text</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">res</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">downloaded_so_far</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">total_size_in_mb</span><span style="color: #0000C0;">)</span>

        <span style="color: #000000;">dest</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">os</span><span style="color: #0000C0;">.</span><span style="color: #000000;">path</span><span style="color: #0000C0;">.</span><span style="color: #000000;">join</span><span style="color: #0000C0;">(</span><span style="color: #000000;">video_too_large_save_location</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">flickr_photo</span><span style="color: #0000C0;">.</span><span style="color: #000000;">get</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'title'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">)</span>
        <span style="color: #C00000;">if</span> <span style="color: #000000;">os</span><span style="color: #0000C0;">.</span><span style="color: #000000;">path</span><span style="color: #0000C0;">.</span><span style="color: #000000;">exists</span><span style="color: #0000C0;">(</span><span style="color: #000000;">dest</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">:</span>
            <span style="color: #C00000;">print</span> <span style="color: #004080;">'Video &quot;%s&quot; of &quot;%s&quot; already exists in download cache of files over 100MB. Aborting download.'</span> <span style="color: #0000C0;">%</span> <span style="color: #0000C0;">(</span><span style="color: #000000;">flickr_photo</span><span style="color: #0000C0;">.</span><span style="color: #000000;">get</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'title'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">picasa_album</span><span style="color: #0000C0;">.</span><span style="color: #000000;">title</span><span style="color: #0000C0;">.</span><span style="color: #000000;">text</span><span style="color: #0000C0;">)</span>
            <span style="color: #C00000;">return</span>

        <span style="color: #000000;">photo_url</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">get_photo_url</span><span style="color: #0000C0;">(</span><span style="color: #000000;">flickr_photo</span><span style="color: #0000C0;">)</span>
        <span style="color: #C00000;">print</span> <span style="color: #004080;">'Downloading photo &quot;%s&quot; at url &quot;%s&quot;.'</span> <span style="color: #0000C0;">%</span> <span style="color: #0000C0;">(</span><span style="color: #000000;">flickr_photo</span><span style="color: #0000C0;">.</span><span style="color: #000000;">get</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'title'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">photo_url</span><span style="color: #0000C0;">)</span>
        <span style="color: #0000C0;">(</span><span style="color: #000000;">fd</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">filename</span><span style="color: #0000C0;">)</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">tmp_file</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">mkstemp</span><span style="color: #0000C0;">(</span><span style="color: #0000C0;">)</span>
        <span style="color: #0000C0;">(</span><span style="color: #000000;">filename</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">headers</span><span style="color: #0000C0;">)</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">urlretrieve</span><span style="color: #0000C0;">(</span><span style="color: #000000;">photo_url</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">filename</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">download_callback</span><span style="color: #0000C0;">)</span>
        <span style="color: #C00000;">print</span> <span style="color: #004080;">'Download Finished of %s for album %s at %s.'</span> <span style="color: #0000C0;">%</span> <span style="color: #0000C0;">(</span><span style="color: #000000;">flickr_photo</span><span style="color: #0000C0;">.</span><span style="color: #000000;">get</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'title'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">picasa_album</span><span style="color: #0000C0;">.</span><span style="color: #000000;">title</span><span style="color: #0000C0;">.</span><span style="color: #000000;">text</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">photo_url</span><span style="color: #0000C0;">)</span>

        <span style="color: #000000;">size</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">os</span><span style="color: #0000C0;">.</span><span style="color: #000000;">stat</span><span style="color: #0000C0;">(</span><span style="color: #000000;">filename</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">[</span><span style="color: #0080C0;">6</span><span style="color: #0000C0;">]</span>
        <span style="color: #C00000;">if</span> <span style="color: #000000;">size</span> <span style="color: #0000C0;">&gt;=</span> <span style="color: #0080C0;">100</span><span style="color: #0000C0;">*</span><span style="color: #0080C0;">1024</span><span style="color: #0000C0;">*</span><span style="color: #0080C0;">1024</span><span style="color: #0000C0;">:</span>
            <span style="color: #C00000;">print</span> <span style="color: #004080;">'File &quot;%s&quot; of set &quot;%s&quot; larger than 100mb. Moving to download directory for manual handling. '</span> <span style="color: #0000C0;">%</span> <span style="color: #0000C0;">(</span><span style="color: #000000;">flickr_photo</span><span style="color: #0000C0;">.</span><span style="color: #000000;">get</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'title'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">picasa_album</span><span style="color: #0000C0;">.</span><span style="color: #000000;">title</span><span style="color: #0000C0;">.</span><span style="color: #000000;">text</span><span style="color: #0000C0;">)</span>
            <span style="color: #000000;">copyfile</span><span style="color: #0000C0;">(</span><span style="color: #000000;">filename</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">dest</span><span style="color: #0000C0;">)</span>
            <span style="color: #000000;">os</span><span style="color: #0000C0;">.</span><span style="color: #000000;">close</span><span style="color: #0000C0;">(</span><span style="color: #000000;">fd</span><span style="color: #0000C0;">)</span>
            <span style="color: #000000;">os</span><span style="color: #0000C0;">.</span><span style="color: #000000;">remove</span><span style="color: #0000C0;">(</span><span style="color: #000000;">filename</span><span style="color: #0000C0;">)</span>
            <span style="color: #C00000;">return</span>

        <span style="color: #C00000;">print</span> <span style="color: #004080;">'Uploading photo %s of album %s to Picasa.'</span> <span style="color: #0000C0;">%</span> <span style="color: #0000C0;">(</span><span style="color: #000000;">flickr_photo</span><span style="color: #0000C0;">.</span><span style="color: #000000;">get</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'title'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">picasa_album</span><span style="color: #0000C0;">.</span><span style="color: #000000;">title</span><span style="color: #0000C0;">.</span><span style="color: #000000;">text</span><span style="color: #0000C0;">)</span>

        <span style="color: #C00000;">if</span> <span style="color: #000000;">flickr_photo</span><span style="color: #0000C0;">.</span><span style="color: #000000;">get</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'media'</span><span style="color: #0000C0;">)</span> <span style="color: #0000C0;">==</span> <span style="color: #004080;">'photo'</span><span style="color: #0000C0;">:</span>
            <span style="color: #000000;">picasa_photo</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">gdata</span><span style="color: #0000C0;">.</span><span style="color: #000000;">photos</span><span style="color: #0000C0;">.</span><span style="color: #000000;">PhotoEntry</span><span style="color: #0000C0;">(</span><span style="color: #0000C0;">)</span>
        <span style="color: #C00000;">else</span><span style="color: #0000C0;">:</span>
            <span style="color: #000000;">picasa_photo</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">VideoEntry</span><span style="color: #0000C0;">(</span><span style="color: #0000C0;">)</span>


        <span style="color: #000000;">im</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">Image</span><span style="color: #0000C0;">.</span><span style="color: #000000;">open</span><span style="color: #0000C0;">(</span><span style="color: #000000;">filename</span><span style="color: #0000C0;">)</span>
        <span style="color: #C00000;">if</span> <span style="color: #000000;">im</span><span style="color: #0000C0;">.</span><span style="color: #000000;">size</span><span style="color: #0000C0;">[</span><span style="color: #0080C0;">0</span><span style="color: #0000C0;">]</span> <span style="color: #0000C0;">&gt;</span> <span style="color: #0080C0;">2048</span> <span style="color: #C00000;">or</span> <span style="color: #000000;">im</span><span style="color: #0000C0;">.</span><span style="color: #000000;">size</span><span style="color: #0000C0;">[</span><span style="color: #0080C0;">1</span><span style="color: #0000C0;">]</span> <span style="color: #0000C0;">&gt;</span> <span style="color: #0080C0;">2048</span><span style="color: #0000C0;">:</span>
            <span style="color: #000000;">im</span><span style="color: #0000C0;">.</span><span style="color: #000000;">thumbnail</span><span style="color: #0000C0;">(</span><span style="color: #0000C0;">(</span><span style="color: #0080C0;">2048</span><span style="color: #0000C0;">,</span> <span style="color: #0080C0;">2048</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">Image</span><span style="color: #0000C0;">.</span><span style="color: #000000;">ANTIALIAS</span><span style="color: #0000C0;">)</span>
            <span style="color: #000000;">im</span><span style="color: #0000C0;">.</span><span style="color: #000000;">save</span><span style="color: #0000C0;">(</span><span style="color: #000000;">filename</span><span style="color: #0000C0;">)</span>

        <span style="color: #000000;">picasa_photo</span><span style="color: #0000C0;">.</span><span style="color: #000000;">title</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">atom</span><span style="color: #0000C0;">.</span><span style="color: #000000;">Title</span><span style="color: #0000C0;">(</span><span style="color: #000000;">text</span><span style="color: #0000C0;">=</span><span style="color: #000000;">flickr_photo</span><span style="color: #0000C0;">.</span><span style="color: #000000;">get</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'title'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">)</span>
        <span style="color: #000000;">picasa_photo</span><span style="color: #0000C0;">.</span><span style="color: #000000;">summary</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">atom</span><span style="color: #0000C0;">.</span><span style="color: #000000;">Summary</span><span style="color: #0000C0;">(</span><span style="color: #000000;">text</span><span style="color: #0000C0;">=</span><span style="color: #000000;">flickr_photo</span><span style="color: #0000C0;">.</span><span style="color: #000000;">get</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'description'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">summary_type</span><span style="color: #0000C0;">=</span><span style="color: #004080;">'text'</span><span style="color: #0000C0;">)</span>
        <span style="color: #000000;">photo_info</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">FLICKR</span><span style="color: #0000C0;">.</span><span style="color: #000000;">photos_getInfo</span><span style="color: #0000C0;">(</span><span style="color: #000000;">photo_id</span><span style="color: #0000C0;">=</span><span style="color: #000000;">flickr_photo</span><span style="color: #0000C0;">.</span><span style="color: #000000;">get</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'id'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">.</span><span style="color: #000000;">find</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'photo'</span><span style="color: #0000C0;">)</span>
        <span style="color: #000000;">picasa_photo</span><span style="color: #0000C0;">.</span><span style="color: #000000;">media</span><span style="color: #0000C0;">.</span><span style="color: #000000;">keywords</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">gdata</span><span style="color: #0000C0;">.</span><span style="color: #000000;">media</span><span style="color: #0000C0;">.</span><span style="color: #000000;">Keywords</span><span style="color: #0000C0;">(</span><span style="color: #0000C0;">)</span>
        <span style="color: #000000;">picasa_photo</span><span style="color: #0000C0;">.</span><span style="color: #000000;">media</span><span style="color: #0000C0;">.</span><span style="color: #000000;">keywords</span><span style="color: #0000C0;">.</span><span style="color: #000000;">text</span> <span style="color: #0000C0;">=</span> <span style="color: #004080;">', '</span><span style="color: #0000C0;">.</span><span style="color: #000000;">join</span><span style="color: #0000C0;">(</span><span style="color: #0000C0;">[</span><span style="color: #000000;">t</span><span style="color: #0000C0;">.</span><span style="color: #000000;">get</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'raw'</span><span style="color: #0000C0;">)</span> <span style="color: #C00000;">for</span> <span style="color: #000000;">t</span> <span style="color: #C00000;">in</span> <span style="color: #000000;">photo_info</span><span style="color: #0000C0;">.</span><span style="color: #000000;">find</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'tags'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">.</span><span style="color: #000000;">getchildren</span><span style="color: #0000C0;">(</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">]</span><span style="color: #0000C0;">)</span>
        <span style="color: #000000;">picasa_photo</span><span style="color: #0000C0;">.</span><span style="color: #000000;">summary</span><span style="color: #0000C0;">.</span><span style="color: #000000;">text</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">photo_info</span><span style="color: #0000C0;">.</span><span style="color: #000000;">find</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'description'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">.</span><span style="color: #000000;">text</span>

        <span style="color: #C00000;">if</span> <span style="color: #000000;">flickr_photo</span><span style="color: #0000C0;">.</span><span style="color: #000000;">get</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'media'</span><span style="color: #0000C0;">)</span> <span style="color: #0000C0;">==</span> <span style="color: #004080;">'photo'</span><span style="color: #0000C0;">:</span>
            <span style="color: #000000;">gd_client</span><span style="color: #0000C0;">.</span><span style="color: #000000;">InsertPhoto</span><span style="color: #0000C0;">(</span><span style="color: #000000;">picasa_album</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">picasa_photo</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">filename</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">content_type</span><span style="color: #0000C0;">=</span><span style="color: #000000;">headers</span><span style="color: #0000C0;">.</span><span style="color: #000000;">get</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'content-type'</span><span style="color: #0000C0;">,</span> <span style="color: #004080;">'image/jpeg'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">)</span>
        <span style="color: #C00000;">else</span><span style="color: #0000C0;">:</span>
            <span style="color: #000000;">gd_client</span><span style="color: #0000C0;">.</span><span style="color: #000000;">InsertVideo</span><span style="color: #0000C0;">(</span><span style="color: #000000;">picasa_album</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">picasa_photo</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">filename</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">content_type</span><span style="color: #0000C0;">=</span><span style="color: #000000;">headers</span><span style="color: #0000C0;">.</span><span style="color: #000000;">get</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'content-type'</span><span style="color: #0000C0;">,</span> <span style="color: #004080;">'video/avi'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">)</span>

        <span style="color: #C00000;">print</span> <span style="color: #004080;">'Upload Finished of %s for album %s.'</span> <span style="color: #0000C0;">%</span> <span style="color: #0000C0;">(</span><span style="color: #000000;">flickr_photo</span><span style="color: #0000C0;">.</span><span style="color: #000000;">get</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'title'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">picasa_album</span><span style="color: #0000C0;">.</span><span style="color: #000000;">title</span><span style="color: #0000C0;">.</span><span style="color: #000000;">text</span><span style="color: #0000C0;">)</span>

        <span style="color: #000000;">os</span><span style="color: #0000C0;">.</span><span style="color: #000000;">close</span><span style="color: #0000C0;">(</span><span style="color: #000000;">fd</span><span style="color: #0000C0;">)</span>
        <span style="color: #000000;">os</span><span style="color: #0000C0;">.</span><span style="color: #000000;">remove</span><span style="color: #0000C0;">(</span><span style="color: #000000;">filename</span><span style="color: #0000C0;">)</span>


    <span style="color: #000000;">threadpool</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">ThreadPool</span><span style="color: #0000C0;">(</span><span style="color: #000000;">threadpoolsize</span><span style="color: #0000C0;">)</span>

    <span style="color: #C00000;">for</span> <span style="color: #000000;">aset_id</span> <span style="color: #C00000;">in</span> <span style="color: #000000;">range</span><span style="color: #0000C0;">(</span><span style="color: #000000;">len</span><span style="color: #0000C0;">(</span><span style="color: #000000;">sets</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">:</span> <span style="color: #008000;"># go through each flickr set</span>
        <span style="color: #000000;">aset</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">sets</span><span style="color: #0000C0;">[</span><span style="color: #000000;">aset_id</span><span style="color: #0000C0;">]</span>
        <span style="color: #000000;">set_title</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">aset</span><span style="color: #0000C0;">.</span><span style="color: #000000;">find</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'title'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">.</span><span style="color: #000000;">text</span>
        <span style="color: #C00000;">print</span> <span style="color: #004080;">'Moving &quot;%s&quot; set over to a picasa album. %i/%i'</span> <span style="color: #0000C0;">%</span> <span style="color: #0000C0;">(</span><span style="color: #000000;">set_title</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">aset_id</span> <span style="color: #0000C0;">+</span> <span style="color: #0080C0;">1</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">len</span><span style="color: #0000C0;">(</span><span style="color: #000000;">sets</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">)</span>

        <span style="color: #C00000;">print</span> <span style="color: #004080;">'Gathering set &quot;%s&quot; information.'</span> <span style="color: #0000C0;">%</span> <span style="color: #000000;">set_title</span>

        <span style="color: #000000;">num_photos</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">int</span><span style="color: #0000C0;">(</span><span style="color: #000000;">aset</span><span style="color: #0000C0;">.</span><span style="color: #000000;">get</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'photos'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">)</span> <span style="color: #0000C0;">+</span> <span style="color: #000000;">int</span><span style="color: #0000C0;">(</span><span style="color: #000000;">aset</span><span style="color: #0000C0;">.</span><span style="color: #000000;">get</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'videos'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">)</span>
        <span style="color: #000000;">all_photos</span> <span style="color: #0000C0;">=</span> <span style="color: #0000C0;">[</span><span style="color: #0000C0;">]</span>

        <span style="color: #000000;">page</span> <span style="color: #0000C0;">=</span> <span style="color: #0080C0;">1</span>
        <span style="color: #C00000;">while</span> <span style="color: #000000;">len</span><span style="color: #0000C0;">(</span><span style="color: #000000;">all_photos</span><span style="color: #0000C0;">)</span> <span style="color: #0000C0;">&lt;</span> <span style="color: #000000;">num_photos</span><span style="color: #0000C0;">:</span>
            <span style="color: #000000;">all_photos</span><span style="color: #0000C0;">.</span><span style="color: #000000;">extend</span><span style="color: #0000C0;">(</span>
                <span style="color: #000000;">FLICKR</span><span style="color: #0000C0;">.</span><span style="color: #000000;">photosets_getPhotos</span><span style="color: #0000C0;">(</span>
                    <span style="color: #000000;">photoset_id</span><span style="color: #0000C0;">=</span><span style="color: #000000;">aset</span><span style="color: #0000C0;">.</span><span style="color: #000000;">get</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'id'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">,</span>
                    <span style="color: #000000;">per_page</span><span style="color: #0000C0;">=</span><span style="color: #0080C0;">500</span><span style="color: #0000C0;">,</span>
                    <span style="color: #000000;">extras</span><span style="color: #0000C0;">=</span><span style="color: #004080;">&quot;url_o,media,original_format&quot;</span><span style="color: #0000C0;">,</span>
                    <span style="color: #000000;">page</span><span style="color: #0000C0;">=</span><span style="color: #000000;">page</span><span style="color: #0000C0;">,</span>
                    <span style="color: #000000;">media</span><span style="color: #0000C0;">=</span><span style="color: #004080;">'all'</span>
                <span style="color: #0000C0;">)</span><span style="color: #0000C0;">.</span><span style="color: #000000;">find</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'photoset'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">.</span><span style="color: #000000;">getchildren</span><span style="color: #0000C0;">(</span><span style="color: #0000C0;">)</span>
            <span style="color: #0000C0;">)</span>
            <span style="color: #000000;">page</span> <span style="color: #0000C0;">+=</span> <span style="color: #0080C0;">1</span>

        <span style="color: #C00000;">print</span> <span style="color: #004080;">'Found %i photos and videos in the %s flickr set.'</span> <span style="color: #0000C0;">%</span> <span style="color: #0000C0;">(</span><span style="color: #000000;">num_photos</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">set_title</span><span style="color: #0000C0;">)</span>

        <span style="color: #000000;">picasa_albums</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">get_picasa_albums</span><span style="color: #0000C0;">(</span><span style="color: #000000;">set_title</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">aset</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">len</span><span style="color: #0000C0;">(</span><span style="color: #000000;">all_photos</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">)</span>
        <span style="color: #000000;">picasa_photos</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">get_picasa_photos</span><span style="color: #0000C0;">(</span><span style="color: #000000;">picasa_albums</span><span style="color: #0000C0;">)</span>

        <span style="color: #C00000;">for</span> <span style="color: #000000;">photo_id</span> <span style="color: #C00000;">in</span> <span style="color: #000000;">range</span><span style="color: #0000C0;">(</span><span style="color: #000000;">len</span><span style="color: #0000C0;">(</span><span style="color: #000000;">all_photos</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">:</span>

            <span style="color: #000000;">photo</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">all_photos</span><span style="color: #0000C0;">[</span><span style="color: #000000;">photo_id</span><span style="color: #0000C0;">]</span>
            <span style="color: #000000;">photo_found</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">False</span>

            <span style="color: #C00000;">for</span> <span style="color: #000000;">p_photo</span> <span style="color: #C00000;">in</span> <span style="color: #000000;">picasa_photos</span><span style="color: #0000C0;">:</span>
                <span style="color: #C00000;">if</span> <span style="color: #000000;">p_photo</span><span style="color: #0000C0;">.</span><span style="color: #000000;">title</span><span style="color: #0000C0;">.</span><span style="color: #000000;">text</span> <span style="color: #0000C0;">==</span> <span style="color: #000000;">photo</span><span style="color: #0000C0;">.</span><span style="color: #000000;">get</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'title'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">:</span>
                    <span style="color: #C00000;">print</span> <span style="color: #004080;">'Already have photo &quot;%s&quot;, skipping'</span> <span style="color: #0000C0;">%</span> <span style="color: #000000;">photo</span><span style="color: #0000C0;">.</span><span style="color: #000000;">get</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'title'</span><span style="color: #0000C0;">)</span>
                    <span style="color: #000000;">photo_found</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">True</span>
                    <span style="color: #C00000;">break</span>

            <span style="color: #C00000;">if</span> <span style="color: #000000;">photo_found</span><span style="color: #0000C0;">:</span>
                <span style="color: #C00000;">continue</span>
            <span style="color: #C00000;">else</span><span style="color: #0000C0;">:</span>
                <span style="color: #C00000;">print</span> <span style="color: #004080;">'Queuing photo %i/%i, %s of album %s for moving.'</span> <span style="color: #0000C0;">%</span> <span style="color: #0000C0;">(</span><span style="color: #000000;">photo_id</span> <span style="color: #0000C0;">+</span> <span style="color: #0080C0;">1</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">len</span><span style="color: #0000C0;">(</span><span style="color: #000000;">all_photos</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">photo</span><span style="color: #0000C0;">.</span><span style="color: #000000;">get</span><span style="color: #0000C0;">(</span><span style="color: #004080;">'title'</span><span style="color: #0000C0;">)</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">set_title</span><span style="color: #0000C0;">)</span>

            <span style="color: #000000;">p_album</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">None</span>
            <span style="color: #C00000;">for</span> <span style="color: #000000;">album</span> <span style="color: #C00000;">in</span> <span style="color: #000000;">picasa_albums</span><span style="color: #0000C0;">:</span>
                <span style="color: #C00000;">if</span> <span style="color: #000000;">int</span><span style="color: #0000C0;">(</span><span style="color: #000000;">album</span><span style="color: #0000C0;">.</span><span style="color: #000000;">numphotosremaining</span><span style="color: #0000C0;">.</span><span style="color: #000000;">text</span><span style="color: #0000C0;">)</span> <span style="color: #0000C0;">&gt;</span> <span style="color: #0080C0;">0</span><span style="color: #0000C0;">:</span>
                    <span style="color: #000000;">album</span><span style="color: #0000C0;">.</span><span style="color: #000000;">numphotosremaining</span><span style="color: #0000C0;">.</span><span style="color: #000000;">text</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">str</span><span style="color: #0000C0;">(</span><span style="color: #000000;">int</span><span style="color: #0000C0;">(</span><span style="color: #000000;">album</span><span style="color: #0000C0;">.</span><span style="color: #000000;">numphotosremaining</span><span style="color: #0000C0;">.</span><span style="color: #000000;">text</span><span style="color: #0000C0;">)</span> <span style="color: #0000C0;">-</span> <span style="color: #0080C0;">1</span><span style="color: #0000C0;">)</span>
                    <span style="color: #000000;">p_album</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">album</span>
                    <span style="color: #C00000;">break</span>

            <span style="color: #000000;">req</span> <span style="color: #0000C0;">=</span> <span style="color: #000000;">WorkRequest</span><span style="color: #0000C0;">(</span><span style="color: #000000;">move_photo</span><span style="color: #0000C0;">,</span> <span style="color: #0000C0;">[</span><span style="color: #000000;">photo</span><span style="color: #0000C0;">,</span> <span style="color: #000000;">p_album</span><span style="color: #0000C0;">]</span><span style="color: #0000C0;">,</span> <span style="color: #0000C0;">{</span><span style="color: #0000C0;">}</span><span style="color: #0000C0;">)</span>
            <span style="color: #000000;">threadpool</span><span style="color: #0000C0;">.</span><span style="color: #000000;">putRequest</span><span style="color: #0000C0;">(</span><span style="color: #000000;">req</span><span style="color: #0000C0;">)</span>


    <span style="color: #000000;">threadpool</span><span style="color: #0000C0;">.</span><span style="color: #000000;">wait</span><span style="color: #0000C0;">(</span><span style="color: #0000C0;">)</span>


<span style="color: #C00000;">if</span> <span style="color: #000000;">__name__</span> <span style="color: #0000C0;">==</span> <span style="color: #004080;">&quot;__main__&quot;</span><span style="color: #0000C0;">:</span>

    <span style="color: #C00000;">print</span> <span style="color: #004080;">&quot;&quot;&quot;
    This script will move all the photos and sets from flickr over to picasa. 
    That will require getting authentication information from both services...
    &quot;&quot;&quot;</span>

    <span style="color: #000000;">do_migration</span><span style="color: #0000C0;">(</span><span style="color: #0000C0;">)</span>
</pre>

          ]]>
        </content:encoded>        

        <dc:date>2011-07-11T17:48:19-04:00</dc:date>

        <dcterms:modified>2011-07-11T17:48:19-04:00</dcterms:modified>

        <dc:creator>Nathan Van Gheem</dc:creator>

        


    </rss:item>

    
    

    <rss:item rdf:about="http://nathanvangheem.com/scripts/migrate-flickr-to-picasa-nokey.py">

        <rss:title>Migrate from Flickr to Picasa Web Albums</rss:title>

        <rss:link>http://nathanvangheem.com/scripts/migrate-flickr-to-picasa-nokey.py</rss:link>       

        <rss:description>This script will move all of your flickr photos over to picasa web albums. It requires python to be installed along with the packages flickrapi, gdata and ThreadPool--all of which can be downloaded via easy_install from pypi.</rss:description>

                

        <dc:date>2010-01-05T00:12:20-05:00</dc:date>

        <dcterms:modified>2010-02-06T10:08:27-05:00</dcterms:modified>

        <dc:creator>Nathan Van Gheem</dc:creator>

        


    </rss:item>

    
    

    <rss:item rdf:about="http://nathanvangheem.com/scripts/auto_sign_in.py">

        <rss:title>Magic Island Technologies auto sign in script</rss:title>

        <rss:link>http://nathanvangheem.com/scripts/auto_sign_in.py</rss:link>       

        <rss:description>Since MIT will automatically log you out after 3 hours of use, I created this script to fix that.  To use it, make sure you have python installed.  Then customize the username and password, replacing the "blah" and "pass" in quotes with your actual username and password.</rss:description>

                

        <dc:date>2009-10-08T04:45:52-04:00</dc:date>

        <dcterms:modified>2009-10-08T04:45:53-04:00</dcterms:modified>

        <dc:creator>Nathan Van Gheem</dc:creator>

        


    </rss:item>

    
    

    <rss:item rdf:about="http://nathanvangheem.com/scripts/create_users_export.py">

        <rss:title>Move users from Zen Cart to Magento</rss:title>

        <rss:link>http://nathanvangheem.com/scripts/create_users_export.py</rss:link>       

        <rss:description>This python script will connect to a mysql database and grab all the existing users information from  Zen Cart and create a Magento import csv file.</rss:description>

                

        <dc:date>2009-04-16T23:48:57-04:00</dc:date>

        <dcterms:modified>2009-04-17T00:05:35-04:00</dcterms:modified>

        <dc:creator>Nathan Van Gheem</dc:creator>

        


    </rss:item>

    
    

    <rss:item rdf:about="http://nathanvangheem.com/scripts/create_product_export.py">

        <rss:title>Move products from Zen Cart to Magento</rss:title>

        <rss:link>http://nathanvangheem.com/scripts/create_product_export.py</rss:link>       

        <rss:description>This python script will connect to a Zen Cart mysql database, grab all the existing products and create a Magento import csv file.</rss:description>

                

        <dc:date>2009-04-16T23:47:26-04:00</dc:date>

        <dcterms:modified>2009-04-17T00:06:59-04:00</dcterms:modified>

        <dc:creator>Nathan Van Gheem</dc:creator>

        


    </rss:item>

    
    

    <rss:item rdf:about="http://nathanvangheem.com/scripts/download-flickr-sets.py">

        <rss:title>Download Images From Flickr Set</rss:title>

        <rss:link>http://nathanvangheem.com/scripts/download-flickr-sets.py</rss:link>       

        <rss:description>Uses flickrapi which is in pypi to facilitate downloading all the images in a flickr set.  When calling from the command line give the arguments username, set, and folder to save in.

Example,
python download_flickr_sets.py username 'Favorites of Peru' peru

Will save all the images of username's "Favorites of Peru' in the peru directory.</rss:description>

                

        <dc:date>2008-09-10T20:40:11-04:00</dc:date>

        <dcterms:modified>2009-01-03T12:47:58-05:00</dcterms:modified>

        <dc:creator>admin</dc:creator>

        


    </rss:item>

    
    

    <rss:item rdf:about="http://nathanvangheem.com/scripts/remove-svn-directories.py">

        <rss:title>Python Remove .svn</rss:title>

        <rss:link>http://nathanvangheem.com/scripts/remove-svn-directories.py</rss:link>       

        <rss:description>This python script removes all .svn directories from a given path and can also remove the .DS_Store files mac os x so annoyingly puts in every directory.</rss:description>

                

        <dc:date>2008-06-28T08:22:52-04:00</dc:date>

        <dcterms:modified>2009-01-03T12:47:58-05:00</dcterms:modified>

        <dc:creator>admin</dc:creator>

        


    </rss:item>

    

</rdf:RDF>

