spotframework/generateplaylists.py

63 lines
2.3 KiB
Python
Raw Normal View History

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 requests
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 22:58:15 +01:00
data = json.loadJson(os.path.join(const.config_path, 'playlists.json'))
2019-05-14 22:58:15 +01:00
net = network.network(user.User())
playlists = net.getUserPlaylists()
2019-05-14 22:58:15 +01:00
for tomake in data['playlists']:
2019-05-14 22:58:15 +01:00
log.log("generatePlaylist", tomake['name'])
2019-05-14 22:58:15 +01:00
tracks = []
2019-05-14 22:58:15 +01:00
for part in tomake['playlists']:
2019-05-14 22:58:15 +01:00
play = next((i for i in playlists if i.name == part), None)
2019-05-14 22:58:15 +01:00
if play is not None:
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 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 22:58:15 +01:00
else:
log.log("requested playlist {} not found".format(part))
if 'SLACKHOOK' in os.environ:
requests.post(os.environ['SLACKHOOK'], json={"text": "spot playlists: {} not found".format(part)})
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 22:58:15 +01:00
net.replacePlaylistTracks(tomake['id'], [i['track']['uri'] for i in tracks])
net.changePlaylistDetails(tomake['id'], description=' / '.join(tomake['playlists']))
2019-05-14 22:58:15 +01:00
else:
log.log("config json not found")
if 'SLACKHOOK' in os.environ:
requests.post(os.environ['SLACKHOOK'], json={"text": "spot playlists: config json not found"})
2019-05-14 22:58:15 +01:00
log.dumpLog()
except:
log.dumpLog()