mirror of
https://git.freebsd.org/ports.git
synced 2025-07-18 09:49:18 -04:00
- Update to 2.2
PR: 144094 Submitted by: "J.D. Morris" <jdm720@gmail.com> Approved by: maintainer
This commit is contained in:
parent
069eceb4c5
commit
a89a35438f
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=250857
10 changed files with 432 additions and 748 deletions
|
@ -6,11 +6,9 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
PORTNAME= quodlibet
|
PORTNAME= quodlibet
|
||||||
PORTVERSION= 1.0
|
PORTVERSION= 2.2
|
||||||
PORTREVISION= 5
|
|
||||||
CATEGORIES= multimedia audio python gnome
|
CATEGORIES= multimedia audio python gnome
|
||||||
MASTER_SITES= http://www.sacredchao.net/~piman/software/ \
|
MASTER_SITES= ${MASTER_SITE_GOOGLE_CODE}
|
||||||
http://www.tortall.net/mirrors/piman-software/
|
|
||||||
|
|
||||||
MAINTAINER= johnson.peter@gmail.com
|
MAINTAINER= johnson.peter@gmail.com
|
||||||
COMMENT= A GTK+-based audio player written in Python
|
COMMENT= A GTK+-based audio player written in Python
|
||||||
|
@ -21,7 +19,7 @@ RUN_DEPENDS= ${PYTHON_SITELIBDIR}/mutagen/__init__.py:${PORTSDIR}/audio/py-mutag
|
||||||
USE_PYTHON= 2.4+
|
USE_PYTHON= 2.4+
|
||||||
USE_GNOME= pygtk2
|
USE_GNOME= pygtk2
|
||||||
USE_GETTEXT= yes
|
USE_GETTEXT= yes
|
||||||
USE_GMAKE= yes
|
USE_PYDISTUTILS= yes
|
||||||
USE_DISPLAY= yes
|
USE_DISPLAY= yes
|
||||||
USE_GSTREAMER= gconf good python
|
USE_GSTREAMER= gconf good python
|
||||||
|
|
||||||
|
@ -105,22 +103,9 @@ PLIST_SUB+= EXTENSIONS=""
|
||||||
PLIST_SUB+= EXTENSIONS="@comment "
|
PLIST_SUB+= EXTENSIONS="@comment "
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
do-configure:
|
|
||||||
@${PYTHON_CMD} ${WRKSRC}/check.py
|
|
||||||
|
|
||||||
do-build:
|
|
||||||
@cd ${WRKSRC}/po && ${GMAKE} po
|
|
||||||
.if defined(WITH_EXTENSIONS)
|
|
||||||
@cd ${WRKSRC} && ${GMAKE} extensions
|
|
||||||
.endif
|
|
||||||
|
|
||||||
pre-install:
|
|
||||||
@${MKDIR} ${PREFIX}/lib/${PORTNAME}
|
|
||||||
@${MKDIR} ${PREFIX}/share/applications
|
|
||||||
|
|
||||||
post-install:
|
post-install:
|
||||||
@${MKDIR} ${DATADIR}/plugins
|
@${ECHO_CMD}
|
||||||
@${MKDIR} ${DATADIR}/plugins/events
|
@${CAT} ${PKGMESSAGE}
|
||||||
@${INSTALL_DATA} ${FILESDIR}/qlscrobbler.py ${DATADIR}/plugins/events
|
@${ECHO_CMD}
|
||||||
|
|
||||||
.include <bsd.port.post.mk>
|
.include <bsd.port.post.mk>
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
MD5 (quodlibet-1.0.tar.gz) = 5c925b754bd8505a7a66f2ffcc5b5fe4
|
MD5 (quodlibet-2.2.tar.gz) = ff8bb5f9e680797dfb60d437368298f9
|
||||||
SHA256 (quodlibet-1.0.tar.gz) = bba92a91ac462b0277ad788a655b56af8bf02496a5878692dc88ffc4fdaddba4
|
SHA256 (quodlibet-2.2.tar.gz) = 1aac91369b26fa897c0d9eaa6a43aadcd5ffe8751a298a6c7beabe7591c0e713
|
||||||
SIZE (quodlibet-1.0.tar.gz) = 617369
|
SIZE (quodlibet-2.2.tar.gz) = 910381
|
||||||
|
|
|
@ -1,36 +0,0 @@
|
||||||
--- Makefile.orig Sun Apr 15 19:45:47 2007
|
|
||||||
+++ Makefile Mon Jun 4 21:41:02 2007
|
|
||||||
@@ -13,7 +13,6 @@
|
|
||||||
@./check.py $(DESTDIR)$(PREFIX)/$(TO)
|
|
||||||
|
|
||||||
make-install-dirs:
|
|
||||||
- mkdir -p $(DESTDIR)$(PREFIX)/share/man/man1
|
|
||||||
mkdir -p $(DESTDIR)$(PREFIX)/bin
|
|
||||||
mkdir -p $(DESTDIR)$(PREFIX)/$(TO)
|
|
||||||
|
|
||||||
@@ -21,9 +20,9 @@
|
|
||||||
install -m 644 $(MODULES) missing-cover.svg audio-*.png media-*.png device-*.png $(DESTDIR)$(PREFIX)/$(TO)
|
|
||||||
cd po && make install-po DESTDIR=$(DESTDIR)
|
|
||||||
|
|
||||||
- for E in $(EXTENSIONS); do \
|
|
||||||
+ -for E in $(EXTENSIONS); do \
|
|
||||||
if test -e $$E; then \
|
|
||||||
- install -m 755 -D $$E $(DESTDIR)$(PREFIX)/$(TODEP)/$$E; \
|
|
||||||
+ install -m 755 $$E $(DESTDIR)$(PREFIX)/$(TODEP)/$$E; \
|
|
||||||
fi; \
|
|
||||||
done
|
|
||||||
|
|
||||||
@@ -37,10 +36,10 @@
|
|
||||||
|
|
||||||
app-install-%: make-install-dirs %.desktop
|
|
||||||
install -m 755 $*.py $(DESTDIR)$(PREFIX)/$(TO)
|
|
||||||
- install -m 644 $*.1 $(DESTDIR)$(PREFIX)/share/man/man1/$*.1
|
|
||||||
- install -D -m 644 $*.png $(DESTDIR)$(PREFIX)/share/pixmaps/$*.png
|
|
||||||
+ install -m 644 $*.1 $(DESTDIR)$(PREFIX)/man/man1/$*.1
|
|
||||||
+ install -m 644 $*.png $(DESTDIR)$(PREFIX)/share/pixmaps/$*.png
|
|
||||||
install -m 644 $*.svg $*.png $(DESTDIR)$(PREFIX)/$(TO)
|
|
||||||
- -install -D -m 644 $*.desktop $(DESTDIR)$(PREFIX)/share/applications/$*.desktop
|
|
||||||
+ -install -m 644 $*.desktop $(DESTDIR)$(PREFIX)/share/applications/$*.desktop
|
|
||||||
ln -sf ../$(TO)/$*.py $(DESTDIR)$(PREFIX)/bin/$*
|
|
||||||
|
|
||||||
clean:
|
|
11
multimedia/quodlibet/files/patch-gdist__man.py
Normal file
11
multimedia/quodlibet/files/patch-gdist__man.py
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
--- gdist/man.py.orig 2010-02-18 02:56:24.000000000 -0500
|
||||||
|
+++ gdist/man.py 2010-02-18 02:56:58.000000000 -0500
|
||||||
|
@@ -36,7 +36,7 @@
|
||||||
|
raise SystemExit("%r has no section" % man_page)
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
- basepath = os.path.join(self.prefix, 'share', 'man')
|
||||||
|
+ basepath = os.path.join(self.prefix, 'man')
|
||||||
|
if self.root != None:
|
||||||
|
basepath = change_root(self.root, basepath)
|
||||||
|
self.mkpath(basepath)
|
|
@ -1,12 +0,0 @@
|
||||||
--- po/Makefile.orig Sun Nov 12 04:24:42 2006
|
|
||||||
+++ po/Makefile Mon Jun 4 23:11:13 2007
|
|
||||||
@@ -12,9 +12,6 @@
|
|
||||||
quodlibet.pot: POTFILES.in ../*.py ../formats/*.py ../browsers/*.py ../qltk/*.py ../plugins/*.py tag-names.py ../util/*.py ../library/*.py ../devices/*.py
|
|
||||||
intltool-update --pot --gettext-package=$(NAME)
|
|
||||||
|
|
||||||
-%.po: quodlibet.pot
|
|
||||||
- intltool-update --dist --gettext-package=$(NAME) $*
|
|
||||||
-
|
|
||||||
%.mo: %.po
|
|
||||||
msgfmt -o $@ $<
|
|
||||||
|
|
10
multimedia/quodlibet/files/patch-quodlibet__qltk__config.py
Normal file
10
multimedia/quodlibet/files/patch-quodlibet__qltk__config.py
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
--- quodlibet/qltk/config.py.orig 2010-02-18 03:01:37.000000000 -0500
|
||||||
|
+++ quodlibet/qltk/config.py 2010-02-18 03:01:59.000000000 -0500
|
||||||
|
@@ -54,7 +54,3 @@
|
||||||
|
|
||||||
|
def __toggled(self, section, option):
|
||||||
|
config.set(section, option, str(bool(self.get_active())).lower())
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-
|
||||||
|
-class ConfigCheckButton(gtk.CheckButton)
|
|
@ -1,533 +0,0 @@
|
||||||
# QLScrobbler: an Audioscrobbler client plugin for Quod Libet.
|
|
||||||
# version 0.8
|
|
||||||
# (C) 2005 by Joshua Kwan <joshk@triplehelix.org>,
|
|
||||||
# Joe Wreschnig <piman@sacredchao.net>
|
|
||||||
# Licensed under GPLv2. See Quod Libet's COPYING for more information.
|
|
||||||
|
|
||||||
import random
|
|
||||||
import md5, urllib, urllib2, time, threading, os
|
|
||||||
import player, config, const, widgets, parse
|
|
||||||
import gobject, gtk
|
|
||||||
from qltk.msg import Message, WarningMessage
|
|
||||||
from qltk.entry import ValidatingEntry
|
|
||||||
from util import to
|
|
||||||
|
|
||||||
from plugins.events import EventPlugin
|
|
||||||
|
|
||||||
class QLScrobbler(EventPlugin):
|
|
||||||
# session invariants
|
|
||||||
PLUGIN_NAME = "QLScrobbler"
|
|
||||||
PLUGIN_DESC = "Audioscrobbler client for Quod Libet"
|
|
||||||
PLUGIN_ICON = gtk.STOCK_CONNECT
|
|
||||||
PLUGIN_VERSION = "0.8.1"
|
|
||||||
CLIENT = "qlb"
|
|
||||||
PROTOCOL_VERSION = "1.1"
|
|
||||||
try: DUMP = os.path.join(const.USERDIR, "scrobbler_cache")
|
|
||||||
except AttributeError:
|
|
||||||
DUMP = os.path.join(const.DIR, "scrobbler_cache")
|
|
||||||
|
|
||||||
# things that could change
|
|
||||||
|
|
||||||
username = ""
|
|
||||||
password = ""
|
|
||||||
pwhash = ""
|
|
||||||
exclude = ""
|
|
||||||
|
|
||||||
timeout_id = -1
|
|
||||||
submission_tid = -1
|
|
||||||
|
|
||||||
challenge = ""
|
|
||||||
submit_url = ""
|
|
||||||
|
|
||||||
# state management
|
|
||||||
waiting = False
|
|
||||||
challenge_sent = False
|
|
||||||
broken = False
|
|
||||||
need_config = False
|
|
||||||
need_update = False
|
|
||||||
already_submitted = False
|
|
||||||
locked = False
|
|
||||||
flushing = False
|
|
||||||
__enabled = False
|
|
||||||
offline = False
|
|
||||||
|
|
||||||
# we need to store this because not all events get the song
|
|
||||||
song = None
|
|
||||||
|
|
||||||
queue = []
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
# Read dumped queue and delete it
|
|
||||||
try:
|
|
||||||
dump = open(self.DUMP, 'r')
|
|
||||||
self.read_dump(dump)
|
|
||||||
except: pass
|
|
||||||
|
|
||||||
# Read configuration
|
|
||||||
self.read_config()
|
|
||||||
|
|
||||||
# Set up exit hook to dump queue
|
|
||||||
gtk.quit_add(0, self.dump_queue)
|
|
||||||
|
|
||||||
def read_dump(self, dump):
|
|
||||||
print "Loading dumped queue."
|
|
||||||
|
|
||||||
current = {}
|
|
||||||
|
|
||||||
for line in dump.readlines():
|
|
||||||
key = ""
|
|
||||||
value = ""
|
|
||||||
|
|
||||||
line = line.rstrip("\n")
|
|
||||||
try: (key, value) = line.split(" = ", 1)
|
|
||||||
except:
|
|
||||||
if line == "-":
|
|
||||||
for key in ["album", "mbid"]:
|
|
||||||
if key not in current:
|
|
||||||
current[key] = ""
|
|
||||||
|
|
||||||
for reqkey in ["artist", "title", "length", "stamp"]:
|
|
||||||
# discard if somehow invalid
|
|
||||||
if reqkey not in current:
|
|
||||||
current = {}
|
|
||||||
|
|
||||||
if current != {}:
|
|
||||||
self.queue.append(current)
|
|
||||||
current = {}
|
|
||||||
continue
|
|
||||||
|
|
||||||
if key == "length": current[key] = int(value)
|
|
||||||
else: current[key] = value
|
|
||||||
|
|
||||||
dump.close()
|
|
||||||
|
|
||||||
os.remove(self.DUMP)
|
|
||||||
|
|
||||||
# print "Queue contents:"
|
|
||||||
# for item in self.queue:
|
|
||||||
# print "\t%s - %s" % (item['artist'], item['title'])
|
|
||||||
|
|
||||||
# Try to flush it immediately
|
|
||||||
if len(self.queue) > 0:
|
|
||||||
self.flushing = True
|
|
||||||
self.submit_song()
|
|
||||||
else: print "Queue was empty!"
|
|
||||||
|
|
||||||
def dump_queue(self):
|
|
||||||
if len(self.queue) == 0: return 0
|
|
||||||
|
|
||||||
print "Dumping offline queue, will submit next time."
|
|
||||||
|
|
||||||
dump = open(self.DUMP, 'w')
|
|
||||||
|
|
||||||
for item in self.queue:
|
|
||||||
for key in item:
|
|
||||||
dump.write("%s = %s\n" % (key, item[key]))
|
|
||||||
dump.write("-\n")
|
|
||||||
|
|
||||||
dump.close()
|
|
||||||
|
|
||||||
return 0
|
|
||||||
|
|
||||||
def plugin_on_removed(self, songs):
|
|
||||||
try:
|
|
||||||
if self.song in songs:
|
|
||||||
self.already_submitted = True
|
|
||||||
except:
|
|
||||||
# Older version compatibility.
|
|
||||||
if self.song is songs:
|
|
||||||
self.already_submitted = True
|
|
||||||
|
|
||||||
def plugin_on_song_ended(self, song, stopped):
|
|
||||||
if song is None: return
|
|
||||||
|
|
||||||
if self.timeout_id > 0:
|
|
||||||
gobject.source_remove(self.timeout_id)
|
|
||||||
self.timeout_id = -1
|
|
||||||
|
|
||||||
def plugin_on_song_started(self, song):
|
|
||||||
if song is None: return
|
|
||||||
|
|
||||||
self.already_submitted = False
|
|
||||||
if self.timeout_id > 0:
|
|
||||||
gobject.source_remove(self.timeout_id)
|
|
||||||
|
|
||||||
self.timeout_id = -1
|
|
||||||
|
|
||||||
# Protocol stipulation:
|
|
||||||
# * don't submit when length < 00:30
|
|
||||||
# NOTE: >30:00 stipulation has been REMOVED as of Protocol1.1
|
|
||||||
# * don't submit if artist and title are not available
|
|
||||||
if song["~#length"] < 30: return
|
|
||||||
elif 'title' not in song: return
|
|
||||||
elif "artist" not in song:
|
|
||||||
if ("composer" not in song) and ("performer" not in song): return
|
|
||||||
|
|
||||||
# Check to see if this song is not something we'd like to submit
|
|
||||||
# e.g. "Hit Me Baby One More Time"
|
|
||||||
if self.exclude != "" and parse.Query(self.exclude).search(song):
|
|
||||||
print to("Not submitting: %s - %s" % (song["artist"], song["title"]))
|
|
||||||
return
|
|
||||||
|
|
||||||
self.song = song
|
|
||||||
if player.playlist.paused == False:
|
|
||||||
self.prepare()
|
|
||||||
|
|
||||||
def plugin_on_paused(self):
|
|
||||||
if self.timeout_id > 0:
|
|
||||||
gobject.source_remove(self.timeout_id)
|
|
||||||
# special value that will tell on_unpaused to check song length
|
|
||||||
self.timeout_id = -2
|
|
||||||
|
|
||||||
def plugin_on_unpaused(self):
|
|
||||||
if self.already_submitted == False and self.timeout_id == -1: self.prepare()
|
|
||||||
|
|
||||||
def plugin_on_seek(self, song, msec):
|
|
||||||
if self.timeout_id > 0:
|
|
||||||
gobject.source_remove(self.timeout_id)
|
|
||||||
self.timeout_id = -1
|
|
||||||
|
|
||||||
if msec == 0: #I think this is okay!
|
|
||||||
self.prepare()
|
|
||||||
else:
|
|
||||||
self.already_submitted = True # cancel
|
|
||||||
|
|
||||||
def prepare(self):
|
|
||||||
if self.song is None: return
|
|
||||||
|
|
||||||
# Protocol stipulations:
|
|
||||||
# * submit 240 seconds in or at 50%, whichever comes first
|
|
||||||
delay = int(min(self.song["~#length"] / 2, 240))
|
|
||||||
|
|
||||||
if self.timeout_id == -2: # change delta based on current progress
|
|
||||||
# assumption is that self.already_submitted == 0, therefore
|
|
||||||
# delay - progress > 0
|
|
||||||
progress = int(player.playlist.get_position() / 1000)
|
|
||||||
delay -= progress
|
|
||||||
|
|
||||||
self.timeout_id = gobject.timeout_add(delay * 1000, self.submit_song)
|
|
||||||
|
|
||||||
def read_config(self):
|
|
||||||
username = ""
|
|
||||||
password = ""
|
|
||||||
try:
|
|
||||||
username = config.get("plugins", "scrobbler_username")
|
|
||||||
password = config.get("plugins", "scrobbler_password")
|
|
||||||
except:
|
|
||||||
if (self.need_config == False and
|
|
||||||
getattr(self, 'PMEnFlag', False)):
|
|
||||||
self.quick_dialog("Please visit the Preferences window to set QLScrobbler up. Until then, songs will not be submitted.", gtk.MESSAGE_INFO)
|
|
||||||
self.need_config = True
|
|
||||||
return
|
|
||||||
|
|
||||||
try: self.offline = (config.get("plugins", "scrobbler_offline") == "true")
|
|
||||||
except: pass
|
|
||||||
try: self.exclude = config.get("plugins", "scrobbler_exclude")
|
|
||||||
except: pass
|
|
||||||
|
|
||||||
self.username = username
|
|
||||||
|
|
||||||
hasher = md5.new()
|
|
||||||
hasher.update(password);
|
|
||||||
self.password = hasher.hexdigest()
|
|
||||||
self.need_config = False
|
|
||||||
|
|
||||||
def __destroy_cb(self, dialog, response_id):
|
|
||||||
dialog.destroy()
|
|
||||||
|
|
||||||
def quick_dialog_helper(self, type, str):
|
|
||||||
dialog = Message(gtk.MESSAGE_INFO, widgets.main, "QLScrobbler", str)
|
|
||||||
dialog.connect('response', self.__destroy_cb)
|
|
||||||
dialog.show()
|
|
||||||
|
|
||||||
def quick_dialog(self, str, type):
|
|
||||||
gobject.idle_add(self.quick_dialog_helper, type, str)
|
|
||||||
|
|
||||||
def clear_waiting(self):
|
|
||||||
self.waiting = False
|
|
||||||
|
|
||||||
def send_handshake(self):
|
|
||||||
# construct url
|
|
||||||
url = "http://post.audioscrobbler.com/?hs=true&p=%s&c=%s&v=%s&u=%s" % ( self.PROTOCOL_VERSION, self.CLIENT, self.PLUGIN_VERSION, self.username )
|
|
||||||
|
|
||||||
print "Sending handshake to Audioscrobbler."
|
|
||||||
|
|
||||||
resp = None
|
|
||||||
|
|
||||||
try:
|
|
||||||
resp = urllib2.urlopen(url);
|
|
||||||
except:
|
|
||||||
print "Server not responding, handshake failed."
|
|
||||||
return # challenge_sent is NOT set to 1
|
|
||||||
|
|
||||||
# check response
|
|
||||||
lines = resp.read().rstrip().split("\n")
|
|
||||||
status = lines.pop(0)
|
|
||||||
|
|
||||||
print "Handshake status: %s" % status
|
|
||||||
|
|
||||||
if status == "UPTODATE" or status.startswith("UPDATE"):
|
|
||||||
if status.startswith("UPDATE"):
|
|
||||||
self.quick_dialog("A new plugin is available at %s! Please download it, or your Audioscrobbler stats may not be updated, and this message will be displayed every session." % status.split()[1], gtk.MESSAGE_INFO)
|
|
||||||
self.need_update = True
|
|
||||||
|
|
||||||
# Scan for submit URL and challenge.
|
|
||||||
self.challenge = lines.pop(0)
|
|
||||||
|
|
||||||
print "Challenge: %s" % self.challenge
|
|
||||||
|
|
||||||
# determine password
|
|
||||||
hasher = md5.new()
|
|
||||||
hasher.update(self.password)
|
|
||||||
hasher.update(self.challenge)
|
|
||||||
self.pwhash = hasher.hexdigest()
|
|
||||||
|
|
||||||
self.submit_url = lines.pop(0)
|
|
||||||
|
|
||||||
self.challenge_sent = True
|
|
||||||
elif status == "BADUSER":
|
|
||||||
self.quick_dialog("Authentication failed: invalid username %s or bad password." % self.username, gtk.MESSAGE_ERROR)
|
|
||||||
|
|
||||||
self.broken = True
|
|
||||||
|
|
||||||
# Honor INTERVAL if available
|
|
||||||
try: interval = int(lines.pop(0).split()[1])
|
|
||||||
except: interval = 0
|
|
||||||
|
|
||||||
if interval > 1:
|
|
||||||
self.waiting = True
|
|
||||||
gobject.timeout_add(interval * 1000, self.clear_waiting)
|
|
||||||
print "Server says to wait for %d seconds." % interval
|
|
||||||
|
|
||||||
def submit_song(self):
|
|
||||||
bg = threading.Thread(None, self.submit_song_helper)
|
|
||||||
bg.setDaemon(True)
|
|
||||||
bg.start()
|
|
||||||
|
|
||||||
def enabled(self):
|
|
||||||
self.__enabled = True
|
|
||||||
|
|
||||||
def disabled(self):
|
|
||||||
self.__enabled = False
|
|
||||||
|
|
||||||
def submit_song_helper(self):
|
|
||||||
if self.__enabled:
|
|
||||||
print "Plugin re-enabled - accepting new songs."
|
|
||||||
if self.submission_tid != -1:
|
|
||||||
gobject.source_remove(self.submission_tid);
|
|
||||||
self.submission_tid = -1
|
|
||||||
else:
|
|
||||||
print "Plugin disabled - not accepting any new songs."
|
|
||||||
if len(self.queue) > 0:
|
|
||||||
self.submission_tid = gobject.timeout_add(120 * 1000, self.submit_song_helper)
|
|
||||||
print "Attempts will continue to submit the last %d songs." % len(self.queue)
|
|
||||||
|
|
||||||
if self.already_submitted == True or self.broken == True: return
|
|
||||||
|
|
||||||
# Scope.
|
|
||||||
store = {}
|
|
||||||
|
|
||||||
if self.flushing == False:
|
|
||||||
stamp = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime())
|
|
||||||
|
|
||||||
store = {
|
|
||||||
"title": self.song.comma("title"),
|
|
||||||
"length": str(self.song["~#length"]),
|
|
||||||
"album": self.song.comma("album"),
|
|
||||||
"mbid": "", # will be correctly set if available
|
|
||||||
"stamp": stamp
|
|
||||||
}
|
|
||||||
|
|
||||||
if "artist" in self.song:
|
|
||||||
store["artist"] = self.song.comma("artist")
|
|
||||||
elif "composer" in self.song:
|
|
||||||
store["artist"] = self.song.comma("composer")
|
|
||||||
elif "performer" in self.song:
|
|
||||||
performer = self.song.comma('performer')
|
|
||||||
if performer[-1] == ")" and "(" in performer:
|
|
||||||
store["artist"] = performer[:performer.rindex("(")].strip()
|
|
||||||
else:
|
|
||||||
store["artist"] = performer
|
|
||||||
if "musicbrainz_trackid" in self.song:
|
|
||||||
store["mbid"] = self.song["musicbrainz_trackid"]
|
|
||||||
|
|
||||||
self.queue.append(store)
|
|
||||||
else: self.flushing = False
|
|
||||||
|
|
||||||
# Just note to stdout if either of these are true..
|
|
||||||
# locked means another instance if s_s_h is dealing with sending.
|
|
||||||
if self.offline or self.locked:
|
|
||||||
print to("Queuing: %s - %s" % (store["artist"], store["title"]))
|
|
||||||
return
|
|
||||||
|
|
||||||
self.locked = True
|
|
||||||
|
|
||||||
while self.waiting == True: time.sleep(1)
|
|
||||||
|
|
||||||
# Read config, handshake, and send challenge if not already done
|
|
||||||
if self.challenge_sent == False:
|
|
||||||
self.read_config()
|
|
||||||
if self.broken == False and self.need_config == False:
|
|
||||||
self.send_handshake()
|
|
||||||
|
|
||||||
# INTERVAL may have been set during handshake.
|
|
||||||
while self.waiting == True: time.sleep(1)
|
|
||||||
|
|
||||||
if self.challenge_sent == False:
|
|
||||||
self.locked = False
|
|
||||||
return
|
|
||||||
|
|
||||||
data = {
|
|
||||||
'u': self.username,
|
|
||||||
's': self.pwhash
|
|
||||||
}
|
|
||||||
|
|
||||||
# Flush the cache
|
|
||||||
for i in range(min(len(self.queue), 10)):
|
|
||||||
print to("Sending song: %s - %s" % (self.queue[i]['artist'], self.queue[i]['title']))
|
|
||||||
data["a[%d]" % i] = self.queue[i]['artist'].encode('utf-8')
|
|
||||||
data["t[%d]" % i] = self.queue[i]['title'].encode('utf-8')
|
|
||||||
data["l[%d]" % i] = str(self.queue[i]['length'])
|
|
||||||
data["b[%d]" % i] = self.queue[i]['album'].encode('utf-8')
|
|
||||||
data["m[%d]" % i] = self.queue[i]['mbid']
|
|
||||||
data["i[%d]" % i] = self.queue[i]['stamp']
|
|
||||||
|
|
||||||
(host, file) = self.submit_url[7:].split("/")
|
|
||||||
|
|
||||||
resp = None
|
|
||||||
|
|
||||||
try:
|
|
||||||
data_str = urllib.urlencode(data)
|
|
||||||
resp = urllib2.urlopen("http://" + host + "/" + file, data_str)
|
|
||||||
except:
|
|
||||||
print "Audioscrobbler server not responding, will try later."
|
|
||||||
self.locked = False
|
|
||||||
return # preserve the queue, yadda yadda
|
|
||||||
|
|
||||||
resp_save = resp.read()
|
|
||||||
lines = resp_save.rstrip().split("\n")
|
|
||||||
|
|
||||||
try: (status, interval) = lines
|
|
||||||
except:
|
|
||||||
try: status = lines[0]
|
|
||||||
except:
|
|
||||||
print "Truncated server response, will try later..."
|
|
||||||
self.locked = False
|
|
||||||
return
|
|
||||||
interval = None
|
|
||||||
|
|
||||||
print "Submission status: %s" % status
|
|
||||||
|
|
||||||
if status == "BADAUTH":
|
|
||||||
print "Attempting to re-authenticate."
|
|
||||||
self.challenge_sent = False
|
|
||||||
self.send_handshake()
|
|
||||||
if self.challenge_sent == False:
|
|
||||||
self.quick_dialog("Your Audioscrobbler login data is incorrect, so you must re-enter it before any songs will be submitted.\n\nThis message will not be shown again.", gtk.MESSAGE_ERROR)
|
|
||||||
self.broken = True
|
|
||||||
elif status == "OK":
|
|
||||||
self.queue = self.queue[10:]
|
|
||||||
elif status.startswith("FAILED"):
|
|
||||||
if status.startswith("FAILED Plugin bug"):
|
|
||||||
print "Plugin bug!? Ridiculous! Dumping queue contents."
|
|
||||||
for item in self.queue:
|
|
||||||
for key in item:
|
|
||||||
print to("%s = %s" % (key, item[key]))
|
|
||||||
# possibly handle other specific cases here for debugging later
|
|
||||||
else:
|
|
||||||
print "Unknown response from server: %s" % status
|
|
||||||
print "Dumping full response:"
|
|
||||||
print resp_save
|
|
||||||
|
|
||||||
if interval != None: interval_secs = int(interval.split()[1])
|
|
||||||
else: interval_secs = 0
|
|
||||||
|
|
||||||
if interval_secs > 1:
|
|
||||||
self.waiting = True
|
|
||||||
gobject.timeout_add(interval_secs * 1000, self.clear_waiting)
|
|
||||||
print "Server says to wait for %d seconds." % interval_secs
|
|
||||||
|
|
||||||
if not self.__enabled and len(self.queue) == 0 and self.submission_tid != -1:
|
|
||||||
print "All songs submitted, disabling retries."
|
|
||||||
gobject.source_remove(self.submission_tid)
|
|
||||||
self.submission_tid = -1
|
|
||||||
|
|
||||||
self.already_submitted = True
|
|
||||||
self.locked = False
|
|
||||||
|
|
||||||
def PluginPreferences(self, parent):
|
|
||||||
def toggled(widget):
|
|
||||||
if widget.get_active():
|
|
||||||
config.set("plugins", "scrobbler_offline", "true")
|
|
||||||
self.offline = True
|
|
||||||
else:
|
|
||||||
config.set("plugins", "scrobbler_offline", "false")
|
|
||||||
self.offline = False
|
|
||||||
|
|
||||||
def changed(entry, key):
|
|
||||||
# having a function for each entry is unnecessary..
|
|
||||||
config.set("plugins", "scrobbler_" + key, entry.get_text())
|
|
||||||
|
|
||||||
def destroyed(*args):
|
|
||||||
# if changed, let's say that things just got better and we should
|
|
||||||
# try everything again
|
|
||||||
newu = None
|
|
||||||
newp = None
|
|
||||||
try:
|
|
||||||
newu = config.get("plugins", "scrobbler_username")
|
|
||||||
newp = config.get("plugins", "scrobbler_password")
|
|
||||||
except:
|
|
||||||
return
|
|
||||||
|
|
||||||
try: self.exclude = config.get("plugins", "scrobbler_exclude")
|
|
||||||
except: pass
|
|
||||||
|
|
||||||
if self.username != newu or self.password != newp:
|
|
||||||
self.broken = False
|
|
||||||
|
|
||||||
table = gtk.Table(6, 3)
|
|
||||||
table.set_col_spacings(3)
|
|
||||||
lt = gtk.Label(_("Please enter your Audioscrobbler\nusername and password."))
|
|
||||||
lu = gtk.Label(_("Username:"))
|
|
||||||
lp = gtk.Label(_("Password:"))
|
|
||||||
lv = gtk.Label(_("Exclude filter:"))
|
|
||||||
lvd = gtk.Label(_("Songs matching this filter will\nnot be sent to Audioscrobbler.\n"))
|
|
||||||
off = gtk.CheckButton(_("Offline mode (don't submit anything)"))
|
|
||||||
ve = ValidatingEntry(parse.Query.is_valid_color)
|
|
||||||
for l in [lt, lu, lp, lv, lvd]:
|
|
||||||
l.set_line_wrap(True)
|
|
||||||
l.set_alignment(0.0, 0.5)
|
|
||||||
table.attach(lt, 0, 2, 0, 1, xoptions=gtk.FILL | gtk.SHRINK)
|
|
||||||
table.attach(lu, 0, 1, 1, 2, xoptions=gtk.FILL | gtk.SHRINK)
|
|
||||||
table.attach(lp, 0, 1, 2, 3, xoptions=gtk.FILL | gtk.SHRINK)
|
|
||||||
table.attach(lv, 0, 1, 3, 4, xoptions=gtk.FILL | gtk.SHRINK)
|
|
||||||
|
|
||||||
userent = gtk.Entry()
|
|
||||||
pwent = gtk.Entry()
|
|
||||||
pwent.set_visibility(False)
|
|
||||||
pwent.set_invisible_char('*')
|
|
||||||
table.set_border_width(6)
|
|
||||||
|
|
||||||
table.attach(ve, 1, 2, 3, 4, xoptions=gtk.FILL | gtk.SHRINK)
|
|
||||||
table.attach(lvd, 0, 2, 4, 5, xoptions=gtk.FILL | gtk.SHRINK)
|
|
||||||
table.attach(off, 0, 2, 5, 7, xoptions=gtk.FILL | gtk.SHRINK)
|
|
||||||
|
|
||||||
try: userent.set_text(config.get("plugins", "scrobbler_username"))
|
|
||||||
except: pass
|
|
||||||
try: pwent.set_text(config.get("plugins", "scrobbler_password"))
|
|
||||||
except: pass
|
|
||||||
try:
|
|
||||||
if config.get("plugins", "scrobbler_offline") == "true":
|
|
||||||
off.set_active(True)
|
|
||||||
except: pass
|
|
||||||
try: ve.set_text(config.get("plugins", "scrobbler_exclude"))
|
|
||||||
except: pass
|
|
||||||
|
|
||||||
table.attach(userent, 1, 2, 1, 2, xoptions=gtk.FILL | gtk.SHRINK)
|
|
||||||
table.attach(pwent, 1, 2, 2, 3, xoptions=gtk.FILL | gtk.SHRINK)
|
|
||||||
pwent.connect('changed', changed, 'password')
|
|
||||||
userent.connect('changed', changed, 'username')
|
|
||||||
ve.connect('changed', changed, 'exclude')
|
|
||||||
table.connect('destroy', destroyed)
|
|
||||||
off.connect('toggled', toggled)
|
|
||||||
return table
|
|
|
@ -1,3 +1,9 @@
|
||||||
Quod Libet is a GTK+-based audio player written in Python.
|
Quod Libet is a GTK+-based audio player written in Python, using the
|
||||||
|
Mutagen tagging library. It's designed around the idea that you know
|
||||||
|
how to organize your music better than we do. It lets you make playlists
|
||||||
|
based on regular expressions (don't worry, regular searches work too).
|
||||||
|
It lets you display and edit any tags you want in the file. And it
|
||||||
|
lets you do this for all the file formats it supports -- Ogg Vorbis,
|
||||||
|
FLAC, MP3, Musepack, and MOD.
|
||||||
|
|
||||||
WWW: http://www.sacredchao.net/quodlibet/
|
WWW: http://code.google.com/p/quodlibet/
|
||||||
|
|
13
multimedia/quodlibet/pkg-message
Normal file
13
multimedia/quodlibet/pkg-message
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
For additional Quod Libet plugins:
|
||||||
|
|
||||||
|
1. Fetch plugins archive.
|
||||||
|
|
||||||
|
fetch http://quodlibet.googlecode.com/files/quodlibet-plugins-2.2.tar.gz
|
||||||
|
|
||||||
|
2. Extract archive.
|
||||||
|
|
||||||
|
tar xvfz quodlibet-plugins-2.2.tar.gz
|
||||||
|
|
||||||
|
3. Copy extracted files to Quod Libet plugins directory.
|
||||||
|
|
||||||
|
cp -R quodlibet-plugins-2.2/* ~/.quodlibet/plugins/
|
|
@ -1,153 +1,393 @@
|
||||||
bin/exfalso
|
bin/exfalso
|
||||||
bin/quodlibet
|
bin/quodlibet
|
||||||
%%EXTENSIONS%%lib/quodlibet/_mmkeys.so
|
|
||||||
%%EXTENSIONS%%lib/quodlibet/_trayicon.so
|
|
||||||
share/applications/exfalso.desktop
|
share/applications/exfalso.desktop
|
||||||
share/applications/quodlibet.desktop
|
share/applications/quodlibet.desktop
|
||||||
share/locale/bg/LC_MESSAGES/quodlibet.mo
|
|
||||||
share/locale/de/LC_MESSAGES/quodlibet.mo
|
|
||||||
share/locale/en_CA/LC_MESSAGES/quodlibet.mo
|
|
||||||
share/locale/en_GB/LC_MESSAGES/quodlibet.mo
|
|
||||||
share/locale/es/LC_MESSAGES/quodlibet.mo
|
|
||||||
share/locale/fi/LC_MESSAGES/quodlibet.mo
|
|
||||||
share/locale/fr/LC_MESSAGES/quodlibet.mo
|
|
||||||
share/locale/gl/LC_MESSAGES/quodlibet.mo
|
|
||||||
share/locale/he/LC_MESSAGES/quodlibet.mo
|
|
||||||
share/locale/hu/LC_MESSAGES/quodlibet.mo
|
share/locale/hu/LC_MESSAGES/quodlibet.mo
|
||||||
share/locale/it/LC_MESSAGES/quodlibet.mo
|
share/locale/gl_ES/LC_MESSAGES/quodlibet.mo
|
||||||
|
share/locale/ru/LC_MESSAGES/quodlibet.mo
|
||||||
share/locale/ja/LC_MESSAGES/quodlibet.mo
|
share/locale/ja/LC_MESSAGES/quodlibet.mo
|
||||||
share/locale/ko/LC_MESSAGES/quodlibet.mo
|
share/locale/he/LC_MESSAGES/quodlibet.mo
|
||||||
share/locale/lt/LC_MESSAGES/quodlibet.mo
|
share/locale/es/LC_MESSAGES/quodlibet.mo
|
||||||
share/locale/nb/LC_MESSAGES/quodlibet.mo
|
share/locale/sk/LC_MESSAGES/quodlibet.mo
|
||||||
|
share/locale/de/LC_MESSAGES/quodlibet.mo
|
||||||
share/locale/nl/LC_MESSAGES/quodlibet.mo
|
share/locale/nl/LC_MESSAGES/quodlibet.mo
|
||||||
|
share/locale/sv/LC_MESSAGES/quodlibet.mo
|
||||||
|
share/locale/ko/LC_MESSAGES/quodlibet.mo
|
||||||
|
share/locale/ro/LC_MESSAGES/quodlibet.mo
|
||||||
|
share/locale/uk/LC_MESSAGES/quodlibet.mo
|
||||||
share/locale/pl/LC_MESSAGES/quodlibet.mo
|
share/locale/pl/LC_MESSAGES/quodlibet.mo
|
||||||
share/locale/pt/LC_MESSAGES/quodlibet.mo
|
share/locale/pt/LC_MESSAGES/quodlibet.mo
|
||||||
share/locale/ro/LC_MESSAGES/quodlibet.mo
|
share/locale/en_CA/LC_MESSAGES/quodlibet.mo
|
||||||
share/locale/ru/LC_MESSAGES/quodlibet.mo
|
share/locale/nb/LC_MESSAGES/quodlibet.mo
|
||||||
share/locale/sk/LC_MESSAGES/quodlibet.mo
|
share/locale/tr/LC_MESSAGES/quodlibet.mo
|
||||||
share/locale/sv/LC_MESSAGES/quodlibet.mo
|
|
||||||
share/locale/zh_CN/LC_MESSAGES/quodlibet.mo
|
share/locale/zh_CN/LC_MESSAGES/quodlibet.mo
|
||||||
|
share/locale/fr/LC_MESSAGES/quodlibet.mo
|
||||||
|
share/locale/gl/LC_MESSAGES/quodlibet.mo
|
||||||
|
share/locale/it/LC_MESSAGES/quodlibet.mo
|
||||||
|
share/locale/en_GB/LC_MESSAGES/quodlibet.mo
|
||||||
|
share/locale/bg/LC_MESSAGES/quodlibet.mo
|
||||||
|
share/locale/lt/LC_MESSAGES/quodlibet.mo
|
||||||
share/locale/zh_TW/LC_MESSAGES/quodlibet.mo
|
share/locale/zh_TW/LC_MESSAGES/quodlibet.mo
|
||||||
share/pixmaps/exfalso.png
|
share/locale/fi/LC_MESSAGES/quodlibet.mo
|
||||||
share/pixmaps/quodlibet.png
|
%%PYTHON_SITELIBDIR%%/quodlibet/widgets.py
|
||||||
%%DATADIR%%/audio-volume-high.png
|
%%PYTHON_SITELIBDIR%%/quodlibet/config.py
|
||||||
%%DATADIR%%/audio-volume-low.png
|
%%PYTHON_SITELIBDIR%%/quodlibet/__init__.py
|
||||||
%%DATADIR%%/audio-volume-medium.png
|
%%PYTHON_SITELIBDIR%%/quodlibet/stock.py
|
||||||
%%DATADIR%%/audio-volume-muted.png
|
%%PYTHON_SITELIBDIR%%/quodlibet/const.py
|
||||||
%%DATADIR%%/browsers/__init__.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/browsers/albums.py
|
||||||
%%DATADIR%%/browsers/_base.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/browsers/playlists.py
|
||||||
%%DATADIR%%/browsers/albums.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/browsers/media.py
|
||||||
%%DATADIR%%/browsers/audiofeeds.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/browsers/audiofeeds.py
|
||||||
%%DATADIR%%/browsers/filesystem.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/browsers/_base.py
|
||||||
%%DATADIR%%/browsers/iradio.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/browsers/iradio.py
|
||||||
%%DATADIR%%/browsers/media.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/browsers/search.py
|
||||||
%%DATADIR%%/browsers/paned.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/browsers/filesystem.py
|
||||||
%%DATADIR%%/browsers/playlists.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/browsers/paned.py
|
||||||
%%DATADIR%%/browsers/search.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/browsers/__init__.py
|
||||||
%%DATADIR%%/config.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/devices/_base.py
|
||||||
%%DATADIR%%/const.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/devices/ipod.py
|
||||||
%%DATADIR%%/exfalso.png
|
%%PYTHON_SITELIBDIR%%/quodlibet/devices/storage.py
|
||||||
%%DATADIR%%/exfalso.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/devices/__init__.py
|
||||||
%%DATADIR%%/exfalso.svg
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/wav.py
|
||||||
%%DATADIR%%/device-generic.png
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/spc.py
|
||||||
%%DATADIR%%/device-ipod.png
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/wavpack.py
|
||||||
%%DATADIR%%/devices/__init__.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/_audio.py
|
||||||
%%DATADIR%%/devices/_base.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/xiph.py
|
||||||
%%DATADIR%%/devices/ipod.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/mod.py
|
||||||
%%DATADIR%%/devices/storage.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/mp3.py
|
||||||
%%DATADIR%%/formats/__init__.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/wma.py
|
||||||
%%DATADIR%%/formats/_apev2.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/_id3.py
|
||||||
%%DATADIR%%/formats/_audio.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/mp4.py
|
||||||
%%DATADIR%%/formats/_id3.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/mpc.py
|
||||||
%%DATADIR%%/formats/mod.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/__init__.py
|
||||||
%%DATADIR%%/formats/mp3.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/_apev2.py
|
||||||
%%DATADIR%%/formats/mp4.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/trueaudio.py
|
||||||
%%DATADIR%%/formats/mpc.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/remote.py
|
||||||
%%DATADIR%%/formats/remote.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/library/_library.py
|
||||||
%%DATADIR%%/formats/spc.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/library/songs.py
|
||||||
%%DATADIR%%/formats/trueaudio.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/library/__init__.py
|
||||||
%%DATADIR%%/formats/wav.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/parse/_match.py
|
||||||
%%DATADIR%%/formats/wavpack.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/parse/_query.py
|
||||||
%%DATADIR%%/formats/wma.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/parse/_pattern.py
|
||||||
%%DATADIR%%/formats/xiph.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/parse/__init__.py
|
||||||
%%DATADIR%%/library/__init__.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/parse/_scanner.py
|
||||||
%%DATADIR%%/library/_library.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/plugins/songsmenu.py
|
||||||
%%DATADIR%%/library/songs.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/plugins/playorder.py
|
||||||
%%DATADIR%%/media-eject.png
|
%%PYTHON_SITELIBDIR%%/quodlibet/plugins/editing.py
|
||||||
%%DATADIR%%/missing-cover.svg
|
%%PYTHON_SITELIBDIR%%/quodlibet/plugins/events.py
|
||||||
%%DATADIR%%/parse/__init__.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/plugins/__init__.py
|
||||||
%%DATADIR%%/parse/_match.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/songlist.py
|
||||||
%%DATADIR%%/parse/_pattern.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/songsmenu.py
|
||||||
%%DATADIR%%/parse/_query.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/lyrics.py
|
||||||
%%DATADIR%%/player.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/logging.py
|
||||||
%%DATADIR%%/plugins/__init__.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/quodlibetwindow.py
|
||||||
%%DATADIR%%/plugins/editing.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/filesel.py
|
||||||
%%DATADIR%%/plugins/events.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/playorder.py
|
||||||
%%DATADIR%%/plugins/events/qlscrobbler.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/tagscombobox.py
|
||||||
%%DATADIR%%/plugins/songsmenu.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/downloader.py
|
||||||
%%DATADIR%%/qltk/__init__.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/browser.py
|
||||||
%%DATADIR%%/qltk/_editpane.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/info.py
|
||||||
%%DATADIR%%/qltk/about.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/msg.py
|
||||||
%%DATADIR%%/qltk/bookmarks.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/renamefiles.py
|
||||||
%%DATADIR%%/qltk/browser.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/getstring.py
|
||||||
%%DATADIR%%/qltk/cbes.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/about.py
|
||||||
%%DATADIR%%/qltk/ccb.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/session.py
|
||||||
%%DATADIR%%/qltk/chooser.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/tracker.py
|
||||||
%%DATADIR%%/qltk/completion.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/pluginwin.py
|
||||||
%%DATADIR%%/qltk/controls.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/information.py
|
||||||
%%DATADIR%%/qltk/cover.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/entry.py
|
||||||
%%DATADIR%%/qltk/dbus_.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/ccb.py
|
||||||
%%DATADIR%%/qltk/delete.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/completion.py
|
||||||
%%DATADIR%%/qltk/downloader.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/cbes.py
|
||||||
%%DATADIR%%/qltk/edittags.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/tracknumbers.py
|
||||||
%%DATADIR%%/qltk/entry.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/controls.py
|
||||||
%%DATADIR%%/qltk/exfalso.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/queue.py
|
||||||
%%DATADIR%%/qltk/filesel.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/delete.py
|
||||||
%%DATADIR%%/qltk/getstring.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/chooser.py
|
||||||
%%DATADIR%%/qltk/info.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/prefs.py
|
||||||
%%DATADIR%%/qltk/information.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/_editpane.py
|
||||||
%%DATADIR%%/qltk/lyrics.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/mmkeys_.py
|
||||||
%%DATADIR%%/qltk/mmkeys.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/dbus_.py
|
||||||
%%DATADIR%%/qltk/msg.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/config.py
|
||||||
%%DATADIR%%/qltk/playorder.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/wlw.py
|
||||||
%%DATADIR%%/qltk/pluginwin.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/bookmarks.py
|
||||||
%%DATADIR%%/qltk/prefs.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/views.py
|
||||||
%%DATADIR%%/qltk/properties.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/cover.py
|
||||||
%%DATADIR%%/qltk/queue.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/tagsfrompath.py
|
||||||
%%DATADIR%%/qltk/quodlibet.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/textedit.py
|
||||||
%%DATADIR%%/qltk/remote.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/exfalsowindow.py
|
||||||
%%DATADIR%%/qltk/renamefiles.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/edittags.py
|
||||||
%%DATADIR%%/qltk/session.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/sliderbutton.py
|
||||||
%%DATADIR%%/qltk/sliderbutton.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/__init__.py
|
||||||
%%DATADIR%%/qltk/songlist.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/x.py
|
||||||
%%DATADIR%%/qltk/songsmenu.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/properties.py
|
||||||
%%DATADIR%%/qltk/tagscombobox.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/remote.py
|
||||||
%%DATADIR%%/qltk/tagsfrompath.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/util/logging.py
|
||||||
%%DATADIR%%/qltk/textedit.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/util/copool.py
|
||||||
%%DATADIR%%/qltk/tracker.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/util/titlecase.py
|
||||||
%%DATADIR%%/qltk/tracknumbers.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/util/tags.py
|
||||||
%%DATADIR%%/qltk/views.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/util/massagers.py
|
||||||
%%DATADIR%%/qltk/wlw.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/util/thumbnails.py
|
||||||
%%DATADIR%%/qltk/x.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/util/i18n.py
|
||||||
%%DATADIR%%/quodlibet.png
|
%%PYTHON_SITELIBDIR%%/quodlibet/util/uri.py
|
||||||
%%DATADIR%%/quodlibet.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/util/__init__.py
|
||||||
%%DATADIR%%/quodlibet.svg
|
%%PYTHON_SITELIBDIR%%/quodlibet/player/_xine.py
|
||||||
%%DATADIR%%/stock.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/player/nullbe.py
|
||||||
%%DATADIR%%/util/__init__.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/player/_base.py
|
||||||
%%DATADIR%%/util/copool.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/player/xinebe.py
|
||||||
%%DATADIR%%/util/i18n.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/player/gstbe.py
|
||||||
%%DATADIR%%/util/massagers.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/player/__init__.py
|
||||||
%%DATADIR%%/util/uri.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/debug/enc.py
|
||||||
%%DATADIR%%/widgets.py
|
%%PYTHON_SITELIBDIR%%/quodlibet/debug/debugwindow.py
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/debug/__init__.py
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/images/quodlibet.png
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/images/audio-volume-muted.png
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/images/device-generic.png
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/images/audio-volume-low.png
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/images/audio-volume-high.png
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/images/audio-volume-medium.png
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/images/media-eject.png
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/images/exfalso.png
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/images/device-ipod.png
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/images/missing-cover.svg
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/images/exfalso.svg
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/images/quodlibet.svg
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/_mmkeys.so
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/_trayicon.so
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/widgets.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/config.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/__init__.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/stock.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/const.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/browsers/albums.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/browsers/playlists.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/browsers/media.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/browsers/audiofeeds.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/browsers/_base.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/browsers/iradio.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/browsers/search.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/browsers/filesystem.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/browsers/paned.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/browsers/__init__.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/devices/_base.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/devices/ipod.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/devices/storage.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/devices/__init__.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/wav.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/spc.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/wavpack.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/_audio.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/xiph.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/mod.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/mp3.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/wma.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/_id3.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/mp4.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/mpc.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/__init__.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/_apev2.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/trueaudio.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/remote.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/library/_library.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/library/songs.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/library/__init__.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/parse/_match.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/parse/_query.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/parse/_pattern.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/parse/__init__.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/parse/_scanner.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/plugins/songsmenu.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/plugins/playorder.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/plugins/editing.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/plugins/events.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/plugins/__init__.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/songlist.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/songsmenu.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/lyrics.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/logging.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/quodlibetwindow.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/filesel.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/playorder.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/tagscombobox.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/downloader.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/browser.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/info.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/msg.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/renamefiles.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/getstring.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/about.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/session.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/tracker.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/pluginwin.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/information.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/entry.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/ccb.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/completion.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/cbes.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/tracknumbers.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/controls.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/queue.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/delete.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/chooser.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/prefs.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/_editpane.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/mmkeys_.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/dbus_.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/config.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/wlw.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/bookmarks.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/views.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/cover.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/tagsfrompath.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/textedit.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/exfalsowindow.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/edittags.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/sliderbutton.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/__init__.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/x.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/properties.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/remote.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/util/logging.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/util/copool.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/util/titlecase.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/util/tags.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/util/massagers.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/util/thumbnails.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/util/i18n.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/util/uri.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/util/__init__.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/player/_xine.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/player/nullbe.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/player/_base.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/player/xinebe.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/player/gstbe.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/player/__init__.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/debug/enc.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/debug/debugwindow.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/debug/__init__.pyc
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/widgets.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/config.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/__init__.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/stock.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/const.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/browsers/albums.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/browsers/playlists.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/browsers/media.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/browsers/audiofeeds.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/browsers/_base.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/browsers/iradio.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/browsers/search.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/browsers/filesystem.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/browsers/paned.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/browsers/__init__.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/devices/_base.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/devices/ipod.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/devices/storage.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/devices/__init__.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/wav.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/spc.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/wavpack.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/_audio.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/xiph.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/mod.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/mp3.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/wma.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/_id3.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/mp4.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/mpc.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/__init__.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/_apev2.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/trueaudio.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/formats/remote.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/library/_library.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/library/songs.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/library/__init__.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/parse/_match.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/parse/_query.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/parse/_pattern.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/parse/__init__.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/parse/_scanner.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/plugins/songsmenu.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/plugins/playorder.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/plugins/editing.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/plugins/events.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/plugins/__init__.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/songlist.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/songsmenu.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/lyrics.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/logging.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/quodlibetwindow.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/filesel.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/playorder.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/tagscombobox.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/downloader.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/browser.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/info.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/msg.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/renamefiles.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/getstring.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/about.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/session.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/tracker.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/pluginwin.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/information.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/entry.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/ccb.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/completion.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/cbes.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/tracknumbers.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/controls.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/queue.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/delete.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/chooser.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/prefs.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/_editpane.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/mmkeys_.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/dbus_.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/config.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/wlw.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/bookmarks.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/views.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/cover.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/tagsfrompath.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/textedit.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/exfalsowindow.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/edittags.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/sliderbutton.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/__init__.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/x.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/properties.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/qltk/remote.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/util/logging.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/util/copool.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/util/titlecase.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/util/tags.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/util/massagers.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/util/thumbnails.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/util/i18n.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/util/uri.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/util/__init__.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/player/_xine.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/player/nullbe.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/player/_base.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/player/xinebe.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/player/gstbe.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/player/__init__.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/debug/enc.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/debug/debugwindow.pyo
|
||||||
|
%%PYTHON_SITELIBDIR%%/quodlibet/debug/__init__.pyo
|
||||||
@dirrmtry share/applications
|
@dirrmtry share/applications
|
||||||
@dirrm lib/quodlibet
|
@dirrmtry share/locale/gl_ES/LC_MESSAGES
|
||||||
@dirrm %%DATADIR%%/util
|
@dirrmtry share/locale/gl_ES
|
||||||
@dirrm %%DATADIR%%/qltk
|
@dirrm %%PYTHON_SITELIBDIR%%/quodlibet/browsers
|
||||||
@dirrm %%DATADIR%%/plugins/events
|
@dirrm %%PYTHON_SITELIBDIR%%/quodlibet/devices
|
||||||
@dirrm %%DATADIR%%/plugins
|
@dirrm %%PYTHON_SITELIBDIR%%/quodlibet/formats
|
||||||
@dirrm %%DATADIR%%/parse
|
@dirrm %%PYTHON_SITELIBDIR%%/quodlibet/library
|
||||||
@dirrm %%DATADIR%%/library
|
@dirrm %%PYTHON_SITELIBDIR%%/quodlibet/parse
|
||||||
@dirrm %%DATADIR%%/formats
|
@dirrm %%PYTHON_SITELIBDIR%%/quodlibet/plugins
|
||||||
@dirrm %%DATADIR%%/devices
|
@dirrm %%PYTHON_SITELIBDIR%%/quodlibet/qltk
|
||||||
@dirrm %%DATADIR%%/browsers
|
@dirrm %%PYTHON_SITELIBDIR%%/quodlibet/util
|
||||||
@dirrm %%DATADIR%%
|
@dirrm %%PYTHON_SITELIBDIR%%/quodlibet/player
|
||||||
|
@dirrm %%PYTHON_SITELIBDIR%%/quodlibet/debug
|
||||||
|
@dirrm %%PYTHON_SITELIBDIR%%/quodlibet/images
|
||||||
|
@dirrm %%PYTHON_SITELIBDIR%%/quodlibet
|
||||||
|
|
Loading…
Add table
Reference in a new issue