#!/usr/local/bin/python -u
|
|
## Eaxmple url
|
## https://subsonic.darkurthe.net/audiobooks/rest/getMusicFolders.view?u=testuser&t=0733b8e9889d7a9986d82764cee9db1c&s=O5kgRb6X5jFFbPSW&v=1.15.0&c=myapp&f=json
|
## https://subsonic.darkurthe.net/audiobooks/rest/search3.view?u=testuser&t=0733b8e9889d7a9986d82764cee9db1c&s=O5kgRb6X5jFFbPSW&c=myapp&f=json&v=1.15.0&query=album="Gypsy Morph"
|
|
from hashlib import md5
|
import random
|
import requests
|
|
def gensalt():
|
ALPHABET = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
chars = []
|
salt = ""
|
for i in range(16):
|
chars.append(random.choice(ALPHABET))
|
salt = ''.join(str(x) for x in chars )
|
return salt
|
|
|
def gentoken(passwd,salt):
|
m = md5()
|
m.update(passwd.encode('utf8') + salt.encode('utf-8'))
|
return m.hexdigest()
|
|
|
def getalbumlist(user,passwd):
|
s = gensalt()
|
t = gentoken(passwd,s)
|
payload = {'u': user, 't': t, 's': s, 'c': 'audible', 'v': '1.15.0', 'f': 'json', 'type': 'alphabeticalByName', 'size': '500'}
|
r = requests.get('https://subsonic.darkurthe.net/audiobooks/rest/getAlbumList.view', payload)
|
if r.status_code == 200:
|
jr = r.json()
|
return jr
|
|
|
def findalbumbyname(album):
|
album = album.strip()
|
alj = getalbumlist('testuser', 'testpass')
|
for item in alj["subsonic-response"]["albumList"]["album"]:
|
sablum = str(item['album'])
|
sablum = sablum.strip()
|
if sablum.lower() == album.lower():
|
return True
|
return False
|
|
|
def updatelibrary(user,passwd):
|
s = gensalt()
|
t = gentoken(passwd,s)
|
payload = {'u': user, 't': t, 's': s, 'c': 'audible', 'v': '1.15.0'}
|
r = requests.get('https://subsonic.darkurthe.net/audiobooks/rest/startScan.view', payload, verify=False)
|
if r.status_code == 200:
|
return True
|
else:
|
return False
|
|
|
if __name__ == "__main__":
|
import sys
|
if len(sys.argv) >= 2:
|
args = sys.argv[1]
|
else:
|
print("I need an album name to lookup")
|
sys.exit(1)
|
out = findalbumbyname(str(sys.argv[1]))
|
if out == True:
|
print("Found: ",sys.argv[1])
|
else:
|
print(sys.argv[1], "not found on subsonic server")
|