1#!/usr/bin/env python2 2import sqlite3 3import urlparse 4import urllib 5import os.path 6import datetime 7 8banshee = sqlite3.connect(os.path.expanduser('~/.config/banshee-1/banshee.db')) 9gogglesmm = sqlite3.connect(os.path.expanduser('~/.local/share/gogglesmm/goggles.db')) 10bc = banshee.cursor() 11gc = gogglesmm.cursor() 12 13bc.execute('SELECT Uri, PlayCount,SkipCount, Rating, Score, LastPlayedStamp FROM CoreTracks') 14for row in bc: 15 rating = row[3] * 51 16 playcount = row[1] 17 url = urlparse.urlsplit(row[0]) 18 if url.scheme == 'file' and (rating>0 or playcount>0) : 19 20 # Get path and filename 21 path = urllib.unquote(url.path) 22 dir,file = os.path.split(path) 23 24 # Get lastplayed date 25 if row[5]: 26 playdate = long(row[5]) 27 playdate_ns = playdate*1000000000 28 else: 29 playdate = 0 30 playdate_ns = 0 31 32 # find track in gogglesmm 33 args = (dir,file,) 34 gc.execute('SELECT tracks.id FROM tracks,pathlist WHERE tracks.path == pathlist.id AND pathlist.name = ? AND tracks.mrl = ?',args) 35 id = gc.fetchone() 36 37 # Update track in gogglesmm if found 38 if id: 39 print 'Update playcount %d, rating %d, playdate %s for \'%s/%s\'' % (playcount,row[3],datetime.datetime.fromtimestamp(playdate),dir,file) 40 args = (playcount,rating,playdate_ns,id[0],) 41 gc.execute('UPDATE tracks SET playcount = playcount + ?, rating = ?, playdate = max(playdate,?) WHERE tracks.id == ?',args) 42 gogglesmm.commit() 43 else: 44 print 'Not found in database %s/%s' % (dir,file) 45 46gogglesmm.close(); 47banshee.close(); 48