Use new collection structure to populate the library list.
This commit is contained in:
parent
adcb73dac9
commit
2c27185679
|
@ -14,7 +14,7 @@ PLAYLIST = 1
|
||||||
QUEUE = 2
|
QUEUE = 2
|
||||||
|
|
||||||
import lens
|
import lens
|
||||||
library2 = lens.Library()
|
library = lens.Library()
|
||||||
|
|
||||||
cur_lib_id = -1
|
cur_lib_id = -1
|
||||||
|
|
||||||
|
@ -23,30 +23,18 @@ def new_source(path, bg=True):
|
||||||
path = expand(path)
|
path = expand(path)
|
||||||
if not exists(path):
|
if not exists(path):
|
||||||
return 0
|
return 0
|
||||||
|
library.reset()
|
||||||
return call("NEWSOURCE", library.scan, path)
|
return call("NEWSOURCE", library.scan, path)
|
||||||
|
|
||||||
def new_source2(path, bg=True):
|
|
||||||
global library2
|
|
||||||
path = expand(path)
|
|
||||||
if not exists(path):
|
|
||||||
return 0
|
|
||||||
library2.reset()
|
|
||||||
return call("NEWSOURCE2", library2.scan, path)
|
|
||||||
|
|
||||||
def walk_library():
|
def walk_library():
|
||||||
global library
|
global library
|
||||||
for track in library:
|
for track in library.walk_tags():
|
||||||
yield track
|
|
||||||
|
|
||||||
def scan_library():
|
|
||||||
global library2
|
|
||||||
for track in library2.walk_tags():
|
|
||||||
yield track
|
yield track
|
||||||
|
|
||||||
def lib_get_attr(id, attr):
|
def lib_get_attr(id, attr):
|
||||||
global library2
|
global library
|
||||||
if id >= 0:
|
if id >= 0:
|
||||||
return library2.get_attr(id, attr)
|
return library.get_attr(id, attr)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def lib_play_id(id):
|
def lib_play_id(id):
|
||||||
|
@ -56,6 +44,10 @@ def lib_play_id(id):
|
||||||
libsaria.music.load(filepath)
|
libsaria.music.load(filepath)
|
||||||
libsaria.music.play()
|
libsaria.music.play()
|
||||||
|
|
||||||
|
def lib_find_id(file):
|
||||||
|
global library
|
||||||
|
library.find_id(file)
|
||||||
|
|
||||||
def lib_get_cur_id():
|
def lib_get_cur_id():
|
||||||
global cur_lib_id
|
global cur_lib_id
|
||||||
return cur_lib_id
|
return cur_lib_id
|
||||||
|
|
|
@ -19,7 +19,7 @@ class TrackRecord:
|
||||||
self.tags = None
|
self.tags = None
|
||||||
|
|
||||||
|
|
||||||
class Collection2:
|
class Collection:
|
||||||
def __init__(self, file):
|
def __init__(self, file):
|
||||||
self.file = file
|
self.file = file
|
||||||
self.load()
|
self.load()
|
||||||
|
@ -58,6 +58,11 @@ class Collection2:
|
||||||
rec = self.records[tag[3]]
|
rec = self.records[tag[3]]
|
||||||
yield tag + [rec.year] + [rec.length]
|
yield tag + [rec.year] + [rec.length]
|
||||||
|
|
||||||
|
def find_id(self, file):
|
||||||
|
stripped = file.strip(libsaria.path.sep)
|
||||||
|
split = stripped.split(libsaria.path.sep)
|
||||||
|
print self.fs_tree.walk_path(split)
|
||||||
|
|
||||||
def get_attr(self, id, attr):
|
def get_attr(self, id, attr):
|
||||||
rec = self.records[id]
|
rec = self.records[id]
|
||||||
if attr == "filepath":
|
if attr == "filepath":
|
||||||
|
@ -66,6 +71,14 @@ class Collection2:
|
||||||
if attr == "playcount":
|
if attr == "playcount":
|
||||||
return rec.count
|
return rec.count
|
||||||
|
|
||||||
|
tags = rec.tags.walk_backwards()
|
||||||
|
if attr == "artist":
|
||||||
|
return tags[0]
|
||||||
|
if attr == "album":
|
||||||
|
return tags[1]
|
||||||
|
if attr == "title":
|
||||||
|
return tags[2]
|
||||||
|
|
||||||
def insert_allocate(self, components, ref):
|
def insert_allocate(self, components, ref):
|
||||||
t = ref.tag()
|
t = ref.tag()
|
||||||
artist = t.artist
|
artist = t.artist
|
||||||
|
|
|
@ -10,9 +10,9 @@ walk = libsaria.path.walk
|
||||||
join = libsaria.path.join
|
join = libsaria.path.join
|
||||||
splitext = libsaria.path.splitext
|
splitext = libsaria.path.splitext
|
||||||
|
|
||||||
class Library(collection.Collection2):
|
class Library(collection.Collection):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
collection.Collection2.__init__(self, "DLTree_test")
|
collection.Collection.__init__(self, "DLTree_test")
|
||||||
self.badfiles = set()
|
self.badfiles = set()
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
|
@ -27,10 +27,19 @@ class DLTree:
|
||||||
#if len(self.children) == 0:
|
#if len(self.children) == 0:
|
||||||
# print self.get_path()
|
# print self.get_path()
|
||||||
|
|
||||||
|
def walk_path(self, path):
|
||||||
|
p = path[0]
|
||||||
|
if p not in self.child_fwd:
|
||||||
|
return False
|
||||||
|
child = self.child_fwd[p]
|
||||||
|
val = child.walk_path[path[1:]]
|
||||||
|
if val != False:
|
||||||
|
return p + [val]
|
||||||
|
|
||||||
def walk_backwards(self, child=None):
|
def walk_backwards(self, child=None):
|
||||||
if self.parent == None:
|
|
||||||
return [self.child_bck[child]]
|
|
||||||
cmp = self.child_bck.get(child, None)
|
cmp = self.child_bck.get(child, None)
|
||||||
|
if self.parent == None:
|
||||||
|
return [cmp]
|
||||||
child = self
|
child = self
|
||||||
path = self.parent.walk_backwards(child)
|
path = self.parent.walk_backwards(child)
|
||||||
if cmp != None:
|
if cmp != None:
|
||||||
|
@ -63,7 +72,6 @@ class DLTree:
|
||||||
try:
|
try:
|
||||||
child = self.child_fwd[cmp]
|
child = self.child_fwd[cmp]
|
||||||
except TypeError:
|
except TypeError:
|
||||||
#self.children = dict()
|
|
||||||
child = DLTree(self)
|
child = DLTree(self)
|
||||||
self.child_fwd[cmp] = child
|
self.child_fwd[cmp] = child
|
||||||
self.child_bck[child] = cmp
|
self.child_bck[child] = cmp
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
# Bryan Schumaker (8/7/2010)
|
# Bryan Schumaker (8/7/2010)
|
||||||
|
|
||||||
|
import libsaria
|
||||||
from libsaria import path
|
from libsaria import path
|
||||||
import cPickle as pickle
|
import cPickle as pickle
|
||||||
#import pickle
|
#import pickle
|
||||||
|
@ -37,12 +38,18 @@ def loadfile(file):
|
||||||
|
|
||||||
def universal_open(file):
|
def universal_open(file):
|
||||||
global plugin
|
global plugin
|
||||||
split = file.rsplit('.', 1)
|
|
||||||
ext = split[len(split)-1]
|
|
||||||
if path.is_dir(file):
|
if path.is_dir(file):
|
||||||
print "Is a dir! Scan it!"
|
libsaria.collection.new_source(file)
|
||||||
|
split = path.splitext(file)
|
||||||
|
ext = split[1]
|
||||||
# Install and start a plugin
|
# Install and start a plugin
|
||||||
if ext == "py":
|
if ext == ".py":
|
||||||
if plugin == None:
|
if plugin == None:
|
||||||
from libsaria import plugin
|
from libsaria import plugin
|
||||||
plugin.install(file)
|
plugin.install(file)
|
||||||
|
try:
|
||||||
|
libsaria.collection.lib_find_id(file)
|
||||||
|
libsaria.music.load(file)
|
||||||
|
except Exception,e:
|
||||||
|
print e
|
||||||
|
pass
|
||||||
|
|
|
@ -54,7 +54,6 @@ class OpenButton(Button):
|
||||||
def clicked(self, button):
|
def clicked(self, button):
|
||||||
from ocarina import fsselect
|
from ocarina import fsselect
|
||||||
fsselect.run_chooser2(LS.data.universal_open)
|
fsselect.run_chooser2(LS.data.universal_open)
|
||||||
print "OpenButton clicked"
|
|
||||||
|
|
||||||
|
|
||||||
class UpButton(Button):
|
class UpButton(Button):
|
||||||
|
|
|
@ -25,6 +25,9 @@ class Collection(gtk.ScrolledWindow):
|
||||||
self.add(self.list)
|
self.add(self.list)
|
||||||
self.show()
|
self.show()
|
||||||
|
|
||||||
|
def clear(self):
|
||||||
|
self.list.clear()
|
||||||
|
|
||||||
def populate(self, func):
|
def populate(self, func):
|
||||||
self.list.freeze()
|
self.list.freeze()
|
||||||
insert = self.list.list.insert
|
insert = self.list.list.insert
|
||||||
|
@ -58,15 +61,19 @@ class Library(Collection):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
Collection.__init__(self, self.mouse_motion, self.select_row)
|
Collection.__init__(self, self.mouse_motion, self.select_row)
|
||||||
libsaria.event.invite("POSTSTART", self.populate, bg=True)
|
libsaria.event.invite("POSTSTART", self.populate, bg=True)
|
||||||
|
libsaria.event.invite("POSTNEWSOURCE", self.refresh, bg=True)
|
||||||
|
|
||||||
def populate(self):
|
def populate(self):
|
||||||
import datetime
|
import datetime
|
||||||
before = datetime.datetime.now()
|
before = datetime.datetime.now()
|
||||||
#Collection.populate(self, collection.walk_library)
|
Collection.populate(self, collection.walk_library)
|
||||||
Collection.populate(self, collection.scan_library)
|
|
||||||
after = datetime.datetime.now()
|
after = datetime.datetime.now()
|
||||||
print "Populating took: %s" % (after-before)
|
print "Populating took: %s" % (after-before)
|
||||||
|
|
||||||
|
def refresh(self, arg):
|
||||||
|
self.clear()
|
||||||
|
self.populate()
|
||||||
|
|
||||||
def mouse_motion(self, row):
|
def mouse_motion(self, row):
|
||||||
return collection.lib_get_attr(row[0], "playcount")
|
return collection.lib_get_attr(row[0], "playcount")
|
||||||
|
|
||||||
|
|
|
@ -58,6 +58,7 @@ def select_path(widget, callback):
|
||||||
uri = chooser_widget.get_uri()
|
uri = chooser_widget.get_uri()
|
||||||
if uri[:7] == "file://":
|
if uri[:7] == "file://":
|
||||||
uri = uri[7:]
|
uri = uri[7:]
|
||||||
|
uri = uri.replace("%20", " ")
|
||||||
callback(uri)
|
callback(uri)
|
||||||
|
|
||||||
def run_chooser2(callback):
|
def run_chooser2(callback):
|
||||||
|
|
|
@ -47,3 +47,6 @@ class List(gtk.TreeView):
|
||||||
def set_visible(self, a, b):
|
def set_visible(self, a, b):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def clear(self):
|
||||||
|
self.list.clear()
|
||||||
|
|
||||||
|
|
|
@ -5,5 +5,5 @@ from libsaria import collection
|
||||||
|
|
||||||
|
|
||||||
#collection.new_source2("~/Music/")
|
#collection.new_source2("~/Music/")
|
||||||
collection.new_source2("/media/Music")
|
collection.new_source("/media/Music")
|
||||||
print collection.library2.size
|
print collection.library.size
|
||||||
|
|
Loading…
Reference in New Issue