[Assorted-commits] SF.net SVN: assorted:[1390] sandbox/trunk/src/one-off-scripts/ quodlibet-rmdups.
Brought to you by:
yangzhang
From: <yan...@us...> - 2009-05-07 07:07:09
|
Revision: 1390 http://assorted.svn.sourceforge.net/assorted/?rev=1390&view=rev Author: yangzhang Date: 2009-05-07 07:07:03 +0000 (Thu, 07 May 2009) Log Message: ----------- added quodlibet-rmdups Added Paths: ----------- sandbox/trunk/src/one-off-scripts/quodlibet-rmdups.py Added: sandbox/trunk/src/one-off-scripts/quodlibet-rmdups.py =================================================================== --- sandbox/trunk/src/one-off-scripts/quodlibet-rmdups.py (rev 0) +++ sandbox/trunk/src/one-off-scripts/quodlibet-rmdups.py 2009-05-07 07:07:03 UTC (rev 1390) @@ -0,0 +1,53 @@ +#!/usr/bin/env python + +from __future__ import with_statement +from path import path +import collections, itertools, sys + +# Quod Libet messiness. +sys.path.append('/usr/share/quodlibet/') +import util, formats +util.gettext_install() +from browsers.playlists import Playlist +quote, unquote = Playlist.quote, Playlist.unquote + +base = path('/home/yang/shared/archive/managed music') +new = base / 'new' +def getmatches(): + for query in new.files(): + sz, md5 = query.size, query.read_md5() + matches = [ f for f in base.walk() + if f.parent != new and f.size == sz] #and f.read_md5() == md5 ] + meta = formats.MusicFile(query) + trackno = '%02d' % int(meta['tracknumber'].split('/')[0]) + renamed = (base / meta['performer'] / meta['album'] / trackno + + ' - ' + meta['title'] + query.ext) + if renamed.isfile(): matches.append(renamed) + yield query, matches + +def read(p): + with file(p) as f: + return map(str.rstrip, f.readlines()) + +fst = lambda (a,b): a +snd = lambda (a,b): b + +def mmap(pairs): + d = dict( (a, set(map(snd, ps))) + for (a, ps) in itertools.groupby(sorted(pairs), fst) ) + dd = collections.defaultdict(lambda: set()) + dd.update(d) + return dd + +pls = [(pl.name, read(pl)) for pl in path('/home/yang/.quodlibet/playlists').files()] +f2p = mmap((f, p) for (p, fs) in pls for f in fs) +tags = lambda q: '; '.join(f2p[q]) +show = lambda q: '%s (%s): %s' % (q.replace(base / '', ''), q.size, tags(q)) + +for q, ms in getmatches(): + md5 = q.read_md5() + print show(q) + if len(ms) > 0: + for m in ms: + print '>' if md5 == m.read_md5() else '-', show(m) + print Property changes on: sandbox/trunk/src/one-off-scripts/quodlibet-rmdups.py ___________________________________________________________________ Added: svn:executable + * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |