Passed tox tests

This commit is contained in:
L Maffeo 2018-08-12 19:37:31 +02:00
parent 5617eef6c7
commit 67568b4f4c
2 changed files with 61 additions and 53 deletions

View file

@ -1,62 +1,69 @@
# -*- coding: utf-8 -*-
# Subsonic plugin for Beets
# Allows to trigger a library scan on Subsonic after music has been imported with Beets
# Your Beets configuration file should contain a subsonic section like the following:
# subsonic:
# host: 192.168.x.y (the IP address where Subsonic listens on)
# port: 4040 (default)
# user: <your username>
# pass: <your password>
# Plugin wrote by Lorenzo Maffeo
# Allows to trigger a library scan on Subsonic
# after music has been imported with Beets
# Your Beets configuration file should contain
# a subsonic section like the following:
# subsonic:
# host: 192.168.x.y (the IP address where Subsonic listens on)
# port: 4040 (default)
# user: <your username>
# pass: <your password>
# Plugin wrote by maffo999
"""Updates Subsonic library on Beets import
"""
from __future__ import division, absolute_import, print_function
from beets.plugins import BeetsPlugin
import requests
import string
import hashlib
from random import *
import random
class Subsonic(BeetsPlugin):
def __init__(self):
super(Subsonic, self).__init__()
self.register_listener('import', self.loaded)
def __init__(self):
super(Subsonic, self).__init__()
self.register_listener('import', self.loaded)
def loaded(self):
host = self.config['host'].get()
port = self.config['port'].get()
user = self.config['user'].get()
passw = self.config['pass'].get()
url = "http://"+str(host)+":"+str(port)+"/rest/startScan"
salt = "".join([random.choice(string.ascii_letters + string.digits) for n in range(6)])
t = passw + salt
token = hashlib.md5()
token.update(t.encode('utf-8'))
payload = {
'u': user,
't': token.hexdigest(),
's': salt,
'v': '1.15.0',
'c': 'beets'
}
response = requests.post(url, params=payload)
if (response.status_code == 0):
self._log.error(u'Operation Failed due to a generic error, please try again later.')
print("Operation Failed due to a generic error, please try again later.")
elif (response.status_code == 30):
self._log.error(u'Your Subsonic server version is not compatible with this feature, please upgrade to at least version 6.1 (API version 1.15.0).')
print("Your Subsonic server version is not compatible with this feature, please upgrade to at least v
ersion 6.1 (API version 1.15.0).")
elif (response.status_code == 40):
self._log.error(u'Wrong username or password. Check and update the credentials in your Beets configuration file.')
print("Wrong username or password. Check and update the credentials in your Beets configuration file.")
elif (response.status_code == 50):
self._log.error(u'User %s is not allowed to perform the requested operation.', user)
print("User " + str(user) + "is not allowed to perform the requested operation.")
elif (response.status_code == 60):
self._log.error(u'This feature requires Subsonic Premium, check that your license is still valid or the trial period has not expired.')
print("This feature requires Subsonic Premium, check that your license is still valid or the trial pe
riod has not expired.")
elif (response.status_code == 200):
self._log.info('Operation completed successfully!")
print("Operation completed successfully!")
else
self._log.error(u'Unknown error code returned from server.')
print("Unknown error code returned from server.")
def loaded(self):
host = self.config['host'].get()
port = self.config['port'].get()
user = self.config['user'].get()
passw = self.config['pass'].get()
r = string.ascii_letters + string.digits
url = "http://"+str(host)+":"+str(port)+"/rest/startScan"
salt = "".join([random.choice(r) for n in range(6)])
t = passw + salt
token = hashlib.md5()
token.update(t.encode('utf-8'))
payload = {
'u': user,
't': token.hexdigest(),
's': salt,
'v': '1.15.0',
'c': 'beets'
}
response = requests.post(url, params=payload)
if (response.status_code == 0):
self._log.error(u'Generic error, please try again later.')
print("Generic error, please try again later.")
elif (response.status_code == 30):
self._log.error(u'Subsonic server not compatible with plugin.')
print("Subsonic server not compatible with plugin.")
elif (response.status_code == 40):
self._log.error(u'Wrong username or password.')
print("Wrong username or password.")
elif (response.status_code == 50):
self._log.error(u'User not allowed to perform the operation.')
print("User not allowed to perform the requested operation.")
elif (response.status_code == 60):
self._log.error(u'This feature requires Subsonic Premium.')
print("This feature requires Subsonic Premium.")
elif (response.status_code == 200):
self._log.info('Operation completed successfully!')
print("Operation completed successfully!")
else:
self._log.error(u'Unknown error code returned from server.')
print("Unknown error code returned from server.")

View file

@ -89,6 +89,7 @@ like this::
smartplaylist
sonosupdate
spotify
subsonic
the
thumbnails
types