2008-10-18 Christopher Blizzard <blizzard@0xdeadbeef.com>
authorblizzard <blizzard@ae879524-a8bd-4c4c-a5ea-74d2e5fc5a2c>
Sat, 18 Oct 2008 06:11:55 +0000 (06:11 +0000)
committerblizzard <blizzard@ae879524-a8bd-4c4c-a5ea-74d2e5fc5a2c>
Sat, 18 Oct 2008 06:11:55 +0000 (06:11 +0000)
        * utils/convert-flickr-ids.py: Script to fix all of the !#@&*#^@*
        flickr ids in the database.  Flickr uses different IDs for Atom
        and RSS2 feeds!

git-svn-id: svn://trac.whoisi.com/whoisi/trunk@7 ae879524-a8bd-4c4c-a5ea-74d2e5fc5a2c

ChangeLog
utils/convert-flickr-ids.py [new file with mode: 0755]

index e89e499..dd647b8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-10-18  Christopher Blizzard  <blizzard@0xdeadbeef.com>
+
+       * utils/convert-flickr-ids.py: Script to fix all of the !#@&*#^@*
+       flickr ids in the database.  Flickr uses different IDs for Atom
+       and RSS2 feeds!
+
 2008-10-17  Christopher Blizzard  <blizzard@0xdeadbeef.com>
 
        * feed-parse-service (FeedParseProtocol.runCommand): Someone get
diff --git a/utils/convert-flickr-ids.py b/utils/convert-flickr-ids.py
new file mode 100755 (executable)
index 0000000..47beb09
--- /dev/null
@@ -0,0 +1,66 @@
+#!/usr/bin/python
+
+# Copyright (c) 2007-2008 Christopher Blizzard <blizzard@0xdeadbeef.com>
+#
+# Permission is hereby granted, free of charge, to any person
+# obtaining a copy of this software and associated documentation files
+# (the "Software"), to deal in the Software without restriction,
+# including without limitation the rights to use, copy, modify, merge,
+# publish, distribute, sublicense, and/or sell copies of the Software,
+# and to permit persons to whom the Software is furnished to do so,
+# subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+import simplejson
+import MySQLdb
+import re
+
+import sys
+sys.path.append("..")
+import services.config as config
+config.read("utils.cfg")
+
+db = MySQLdb.connect(db=config.get("db", "db"),
+                     user=config.get("db", "user"),
+                     passwd=config.get("db", "passwd"))
+
+c = db.cursor()
+q = """
+    SELECT id, entry_id FROM site_history WHERE
+        site_id IN (SELECT id FROM site WHERE
+        type = 'flickr')
+    """
+#q = "SELECT id, entry_id from site_history where site_id = 12"
+
+c.execute(q)
+
+r = c.fetchone()
+
+while r:
+    e_id = r[0]
+    guid = r[1]
+
+    print e_id, guid
+
+    if guid:
+        match = re.match('tag:flickr.com,2005:/photo/(.+)', guid)
+        if match:
+            new_guid = 'tag:flickr.com,2004:/photo/' + match.group(1)
+            q2 = "UPDATE site_history set entry_id = %s where id = %s"
+            c2 = db.cursor()
+
+            print("updating to %s" % new_guid)
+            c2.execute(q2, [new_guid, e_id])
+
+    r = c.fetchone()