#!/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: print("Found: ", sys.argv[1]) else: print(sys.argv[1], "not found on subsonic server")