1
0
mirror of https://github.com/spl0k/supysonic.git synced 2024-11-15 06:32:16 +00:00

some status messages for scan and flush database more often during scan

to prevent error from cancelling entire scan
This commit is contained in:
Emory P 2013-11-01 14:46:16 -04:00
parent 64e8d616fc
commit 5252111e91
6 changed files with 13 additions and 5 deletions

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
*.pyc *.pyc
*.swp *.swp
start_server.sh

View File

@ -21,8 +21,9 @@ def prepare_transcoding_cmdline(base_cmdline, input_file, input_format, output_f
@app.route('/rest/stream.view', methods = [ 'GET', 'POST' ]) @app.route('/rest/stream.view', methods = [ 'GET', 'POST' ])
def stream_media(): def stream_media():
status, res = get_entity(request, Track) status, res = get_entity(request, Track)
if not status: if not status:
return res return res
maxBitRate, format, timeOffset, size, estimateContentLength = map(request.args.get, [ 'maxBitRate', 'format', 'timeOffset', 'size', 'estimateContentLength' ]) maxBitRate, format, timeOffset, size, estimateContentLength = map(request.args.get, [ 'maxBitRate', 'format', 'timeOffset', 'size', 'estimateContentLength' ])
if format: if format:
@ -78,6 +79,7 @@ def stream_media():
proc.terminate() proc.terminate()
proc.wait() proc.wait()
response = Response(transcode(), mimetype = dst_mimetype) response = Response(transcode(), mimetype = dst_mimetype)
else: else:
response = send_file(res.path, mimetype = dst_mimetype) response = send_file(res.path, mimetype = dst_mimetype)

1
cli.py
View File

@ -104,6 +104,7 @@ class CLI(cmd.Cmd):
s = Scanner(db.session) s = Scanner(db.session)
if folders: if folders:
folders = map(lambda n: db.Folder.query.filter(db.Folder.name == n and db.Folder.root == True).first() or n, folders) folders = map(lambda n: db.Folder.query.filter(db.Folder.name == n and db.Folder.root == True).first() or n, folders)
print folders
if any(map(lambda f: isinstance(f, basestring), folders)): if any(map(lambda f: isinstance(f, basestring), folders)):
print "No such folder(s): " + ' '.join(f for f in folders if isinstance(f, basestring)) print "No such folder(s): " + ' '.join(f for f in folders if isinstance(f, basestring))
for folder in filter(lambda f: isinstance(f, db.Folder), folders): for folder in filter(lambda f: isinstance(f, db.Folder), folders):

2
db.py
View File

@ -58,7 +58,7 @@ def now():
return datetime.datetime.now().replace(microsecond = 0) return datetime.datetime.now().replace(microsecond = 0)
engine = create_engine(config.get('base', 'database_uri'), convert_unicode = True) engine = create_engine(config.get('base', 'database_uri'), convert_unicode = True)
session = scoped_session(sessionmaker(autocommit = False, autoflush = False, bind = engine)) session = scoped_session(sessionmaker(autoflush = True, bind = engine))
Base = declarative_base() Base = declarative_base()
Base.query = session.query_property() Base.query = session.query_property()

View File

@ -1,7 +1,7 @@
# coding: utf-8 # coding: utf-8
import os.path, sys import os.path, sys
sys.path.insert(0, '/path/to/the/supysonic/app') sys.path.insert(0, '/home/emory/supysonic')
import config import config
if not config.check(): if not config.check():

View File

@ -23,7 +23,10 @@ class Scanner:
self.__deleted_tracks = 0 self.__deleted_tracks = 0
def scan(self, folder): def scan(self, folder):
for root, subfolders, files in os.walk(folder.path): print "scanning", folder.path
for root, subfolders, files in os.walk(folder.path, topdown=False):
for p in subfolders:
db.session.flush()
for f in files: for f in files:
self.__scan_file(os.path.join(root, f), folder) self.__scan_file(os.path.join(root, f), folder)
folder.last_scan = int(time.time()) folder.last_scan = int(time.time())
@ -60,6 +63,7 @@ class Scanner:
self.__remove_track(tr) self.__remove_track(tr)
return return
else: else:
print "Added ", path
tag = self.__try_load_tag(path) tag = self.__try_load_tag(path)
if not tag: if not tag:
return return