2019-05-14 20:41:12 +01:00
|
|
|
import spotframework.net.const as const
|
|
|
|
import spotframework.net.network as network
|
|
|
|
import spotframework.net.user as user
|
|
|
|
import spotframework.log.log as log
|
|
|
|
import spotframework.io.json as json
|
|
|
|
|
|
|
|
import os
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
2019-05-14 22:58:15 +01:00
|
|
|
try:
|
|
|
|
if os.path.exists(os.path.join(const.config_path, 'playlists.json')):
|
2019-05-14 20:41:12 +01:00
|
|
|
|
2019-05-14 22:58:15 +01:00
|
|
|
data = json.loadJson(os.path.join(const.config_path, 'playlists.json'))
|
2019-05-14 20:41:12 +01:00
|
|
|
|
2019-05-14 22:58:15 +01:00
|
|
|
net = network.network(user.User())
|
|
|
|
playlists = net.getUserPlaylists()
|
2019-05-14 20:41:12 +01:00
|
|
|
|
2019-05-14 22:58:15 +01:00
|
|
|
for tomake in data['playlists']:
|
2019-05-14 20:41:12 +01:00
|
|
|
|
2019-05-14 22:58:15 +01:00
|
|
|
log.log("generatePlaylist", tomake['name'])
|
2019-05-14 20:41:12 +01:00
|
|
|
|
2019-05-14 22:58:15 +01:00
|
|
|
tracks = []
|
2019-05-14 20:41:12 +01:00
|
|
|
|
2019-05-14 22:58:15 +01:00
|
|
|
for part in tomake['playlists']:
|
2019-05-14 20:41:12 +01:00
|
|
|
|
2019-05-14 22:58:15 +01:00
|
|
|
play = next((i for i in playlists if i.name == part), None)
|
2019-05-14 20:41:12 +01:00
|
|
|
|
2019-05-14 22:58:15 +01:00
|
|
|
if play is not None:
|
2019-05-14 20:41:12 +01:00
|
|
|
|
2019-05-14 22:58:15 +01:00
|
|
|
if len(play.tracks) == 0:
|
|
|
|
log.log("pulling tracks for {}".format(play.name))
|
|
|
|
play.tracks = net.getPlaylistTracks(play.playlistid)
|
2019-05-14 20:41:12 +01:00
|
|
|
|
2019-05-14 22:58:15 +01:00
|
|
|
tracks += [i for i in play.tracks if i['track']['uri'] not in [j['track']['uri'] for j in tracks]]
|
2019-05-14 20:41:12 +01:00
|
|
|
|
2019-05-14 22:58:15 +01:00
|
|
|
else:
|
|
|
|
log.log("requested playlist {} not found".format(part))
|
2019-05-14 20:41:12 +01:00
|
|
|
|
2019-05-15 14:31:16 +01:00
|
|
|
if 'shuffle' in tomake:
|
|
|
|
if tomake['shuffle'] is True:
|
|
|
|
import random
|
|
|
|
random.shuffle(tracks)
|
|
|
|
else:
|
|
|
|
tracks.sort(key=lambda x: x['track']['album']['release_date'], reverse=True)
|
|
|
|
else:
|
|
|
|
tracks.sort(key=lambda x: x['track']['album']['release_date'], reverse=True)
|
2019-05-14 20:41:12 +01:00
|
|
|
|
2019-05-14 22:58:15 +01:00
|
|
|
net.replacePlaylistTracks(tomake['id'], [i['track']['uri'] for i in tracks])
|
|
|
|
else:
|
|
|
|
log.log("config json not found")
|
|
|
|
|
|
|
|
log.dumpLog()
|
|
|
|
except:
|
|
|
|
log.dumpLog()
|