]> wagner.pp.ru Git - oss/ljdump.git/blobdiff - ljdump.py
download and save userpic images
[oss/ljdump.git] / ljdump.py
index be2d7d6ae610e4e512403d81ad9d486eb84dd394..e7534a91b83f940f69321a0142c743069eb2adb0 100755 (executable)
--- a/ljdump.py
+++ b/ljdump.py
 #
 # Copyright (c) 2005-2006 Greg Hewgill
 
-import codecs, md5, os, pickle, pprint, re, sys, urllib2, xml.dom.minidom, xmlrpclib
+import codecs, md5, os, pickle, pprint, re, shutil, sys, urllib2, xml.dom.minidom, xmlrpclib
 from xml.sax import saxutils
 
+MimeExtensions = {
+    "image/gif": ".gif",
+    "image/jpeg": ".jpg",
+    "image/png": ".png",
+}
+
 def calcchallenge(challenge, password):
     return md5.new(challenge+md5.new(password).hexdigest()).hexdigest()
 
@@ -162,7 +168,7 @@ r = server.LJ.XMLRPC.login(dochallenge({
     'getpickws': 1,
     'getpickwurls': 1,
 }, Password))
-userpics = dict(zip(r['pickws'], r['pickwurls']))
+userpics = dict(zip(map(str, r['pickws']), r['pickwurls']))
 userpics['*'] = r['defaultpicurl']
 
 while True:
@@ -256,11 +262,18 @@ f = open("%s/user.map" % Username, "w")
 pickle.dump(usermap, f)
 f.close()
 
+print "Fetching userpics for: %s" % Username
 f = open("%s/userpics.xml" % Username, "w")
 print >>f, """<?xml version="1.0"?>"""
 print >>f, "<userpics>"
 for p in userpics:
     print >>f, """<userpic keyword="%s" url="%s" />""" % (p, userpics[p])
+    pic = urllib2.urlopen(userpics[p])
+    ext = MimeExtensions.get(pic.info()["Content-Type"], "")
+    picf = open("%s/%s%s" % (Username, codecs.utf_8_decode(p)[0], ext), "wb")
+    shutil.copyfileobj(pic, picf)
+    pic.close()
+    picf.close()
 print >>f, "</userpics>"
 f.close()