1
0
mirror of https://github.com/spl0k/supysonic.git synced 2024-09-16 17:31:03 +00:00

scan Api implementation

This commit is contained in:
vincent 2020-11-16 14:32:58 +01:00 committed by Alban Féron
parent 8cef628219
commit 6c89accc86
No known key found for this signature in database
GPG Key ID: 8CE0313646D16165
3 changed files with 41 additions and 0 deletions

View File

@ -116,3 +116,4 @@ from .playlists import *
from .jukebox import *
from .radio import *
from .unsupported import *
from .scan import *

View File

@ -122,3 +122,10 @@ class AggregateException(SubsonicAPIException):
)
# rv.status_code = self.code
return rv
class DaemonUnavailable(SubsonicAPIException):
code = 404
api_code = 80
message = (
"Supysonic Daemon not running on this server."
)

33
supysonic/api/scan.py Normal file
View File

@ -0,0 +1,33 @@
from . import api
from functools import wraps
from flask import request
from flask import current_app
from .user import admin_only
from .exceptions import Forbidden,DaemonUnavailable,ServerError
from ..db import Folder
from ..daemon.client import DaemonClient
from ..daemon.exceptions import DaemonUnavailableError
from ..managers.folder import FolderManager
@api.route("/startScan.view", methods=["GET", "POST"])
@admin_only
def startScan():
try:
DaemonClient(current_app.config["DAEMON"]["socket"]).scan()
except ValueError as e:
ServerError(str(e))
except DaemonUnavailableError:
raise DaemonUnavailable()
return getScanStatus()
@api.route("/getScanStatus.view", methods=["GET", "POST"])
@admin_only
def getScanStatus():
try:
scanned=DaemonClient(current_app.config["DAEMON"]["socket"]).get_scanning_progress()
except DaemonUnavailableError:
raise DaemonUnavailable()
return request.formatter("scanStatus",
dict(scanning='true' if scanned is not None else 'false',
count= scanned if scanned is not None else 0))