mirror of
https://gitlab.com/RemixDev/deemix-gui-pyweb.git
synced 2024-12-29 10:56:06 +00:00
188 lines
5.8 KiB
Python
188 lines
5.8 KiB
Python
#!/usr/bin/env python3
|
|
from deemix.app.queuemanager import addToQueue, removeFromQueue, getQueue, cancelAllDownloads, removeFinishedDownloads, restoreQueue, slimQueueItems, resetQueueItems
|
|
from deemix.utils.misc import getTypeFromLink, getIDFromLink
|
|
from deemix.app.settings import initSettings, getSettings, getDefaultSettings, saveSettings
|
|
from deemix.app.spotify import SpotifyHelper
|
|
from deemix.utils.localpaths import getConfigFolder
|
|
|
|
import os.path as path
|
|
import json
|
|
from os import remove
|
|
|
|
settings = {}
|
|
spotifyHelper = None
|
|
chartsList = []
|
|
|
|
|
|
def initialize():
|
|
global settings
|
|
global spotifyHelper
|
|
global defaultSettings
|
|
settings = initSettings()
|
|
defaultSettings = getDefaultSettings()
|
|
spotifyHelper = SpotifyHelper()
|
|
|
|
|
|
def shutdown(interface=None):
|
|
if settings['saveDownloadQueue']:
|
|
(queue, queueComplete, queueList, currentItem) = getQueue()
|
|
if len(queueList) > 0:
|
|
if currentItem != "":
|
|
queue.insert(0, currentItem)
|
|
with open(path.join(getConfigFolder(), 'queue.json'), 'w') as f:
|
|
json.dump({
|
|
'queue': queue,
|
|
'queueComplete': queueComplete,
|
|
'queueList': resetQueueItems(queueList, queue)
|
|
}, f)
|
|
cancelAllDownloads(interface)
|
|
if interface:
|
|
interface.send("toast", {'msg': "Server is closed."})
|
|
|
|
def loadDownloadQueue(dz, interface=None):
|
|
if path.isfile(path.join(getConfigFolder(), 'queue.json')):
|
|
if interface:
|
|
interface.send('toast', {'msg': "Restoring download queue", 'icon': 'loading', 'dismiss': False,
|
|
'id': 'restoring_queue'})
|
|
with open(path.join(getConfigFolder(), 'queue.json'), 'r') as f:
|
|
qd = json.load(f)
|
|
if interface:
|
|
interface.send('init_downloadQueue',
|
|
{'queue': qd['queue'], 'queueComplete': qd['queueComplete'], 'queueList': slimQueueItems(qd['queueList'])})
|
|
if interface:
|
|
interface.send('toast', {'msg': "Download queue restored!", 'icon': 'done', 'dismiss': True,
|
|
'id': 'restoring_queue'})
|
|
remove(path.join(getConfigFolder(), 'queue.json'))
|
|
restoreQueue(qd['queue'], qd['queueComplete'], qd['queueList'], dz, interface)
|
|
|
|
def get_charts(dz):
|
|
global chartsList
|
|
if len(chartsList) == 0:
|
|
temp = dz.get_charts_countries()
|
|
countries = []
|
|
for i in range(len(temp)):
|
|
countries.append({
|
|
'title': temp[i]['title'].replace("Top ", ""),
|
|
'id': temp[i]['id'],
|
|
'picture_small': temp[i]['picture_small'],
|
|
'picture_medium': temp[i]['picture_medium'],
|
|
'picture_big': temp[i]['picture_big']
|
|
})
|
|
chartsList = countries
|
|
return chartsList
|
|
|
|
def getUserFavorites(dz):
|
|
user_id = dz.user['id']
|
|
result = {}
|
|
try:
|
|
result['playlists'] = dz.get_user_playlists(user_id)['data']
|
|
result['albums'] = dz.get_user_albums(user_id)['data']
|
|
result['artists'] = dz.get_user_artists(user_id)['data']
|
|
result['tracks'] = dz.get_user_tracks(user_id)['data']
|
|
except:
|
|
result['playlists'] = dz.get_user_playlists_gw(user_id)
|
|
result['albums'] = dz.get_user_albums_gw(user_id)
|
|
result['artists'] = dz.get_user_artists_gw(user_id)
|
|
result['tracks'] = dz.get_user_tracks_gw(user_id)
|
|
return result
|
|
|
|
def updateUserSpotifyPlaylists(user):
|
|
if user == "" or not spotifyHelper.spotifyEnabled:
|
|
return []
|
|
return spotifyHelper.get_user_playlists(user)
|
|
|
|
|
|
def updateUserPlaylists(dz):
|
|
user_id = dz.user['id']
|
|
try:
|
|
return dz.get_user_playlists(user_id)['data']
|
|
except:
|
|
return dz.get_user_playlists_gw(user_id)
|
|
|
|
def updateUserAlbums(dz):
|
|
user_id = dz.user['id']
|
|
try:
|
|
return dz.get_user_albums(user_id)['data']
|
|
except:
|
|
return dz.get_user_albums_gw(user_id)
|
|
|
|
def updateUserArtists(dz):
|
|
user_id = dz.user['id']
|
|
try:
|
|
return dz.get_user_artists(user_id)['data']
|
|
except:
|
|
return dz.get_user_artists_gw(user_id)
|
|
|
|
def updateUserTracks(dz):
|
|
user_id = dz.user['id']
|
|
try:
|
|
return dz.get_user_tracks(user_id)['data']
|
|
except:
|
|
return dz.get_user_tracks_gw(user_id)
|
|
|
|
def getSpotifyPlaylistTracklist(id):
|
|
if id == "" or not spotifyHelper.spotifyEnabled:
|
|
return spotifyHelper.emptyPlaylist
|
|
return spotifyHelper.get_playlist_tracklist(id)
|
|
|
|
# Search functions
|
|
def mainSearch(dz, term):
|
|
return dz.search_main_gw(term)
|
|
|
|
|
|
def search(dz, term, type, start, nb):
|
|
return dz.search(term, type, nb, start)
|
|
|
|
|
|
# Queue functions
|
|
def addToQueue_link(dz, url, bitrate=None, interface=None):
|
|
return addToQueue(dz, spotifyHelper, url, settings, bitrate, interface)
|
|
|
|
|
|
def removeFromQueue_link(uuid, interface=None):
|
|
removeFromQueue(uuid, interface)
|
|
|
|
|
|
def cancelAllDownloads_link(interface=None):
|
|
cancelAllDownloads(interface)
|
|
|
|
|
|
def removeFinishedDownloads_link(interface=None):
|
|
removeFinishedDownloads(interface)
|
|
|
|
|
|
def initDownloadQueue():
|
|
(queue, queueComplete, queueList, currentItem) = getQueue()
|
|
return (queue, queueComplete, slimQueueItems(queueList), currentItem)
|
|
|
|
def analyzeLink(dz, link):
|
|
type = getTypeFromLink(link)
|
|
relID = getIDFromLink(link, type)
|
|
if type in ["track", "album"]:
|
|
data = getattr(dz, 'get_' + type)(relID)
|
|
else:
|
|
data = {}
|
|
return (type, data)
|
|
|
|
# Settings functions
|
|
def getDefaultSettings_link():
|
|
return defaultSettings
|
|
|
|
|
|
def getSettings_link():
|
|
return getSettings()
|
|
|
|
|
|
def saveSettings_link(newSettings):
|
|
global settings
|
|
settings = newSettings
|
|
return saveSettings(newSettings)
|
|
|
|
|
|
def getSpotifyCredentials():
|
|
return spotifyHelper.getCredentials()
|
|
|
|
|
|
def setSpotifyCredentials(newCredentials):
|
|
return spotifyHelper.setCredentials(newCredentials)
|