clean up repo
This commit is contained in:
75
app.py
75
app.py
@@ -1,6 +1,5 @@
|
||||
from flask import Flask, render_template, request, Response
|
||||
from flask_api import status
|
||||
from spot import *
|
||||
import sys
|
||||
|
||||
app = Flask(__name__)
|
||||
@@ -27,79 +26,5 @@ def privacy():
|
||||
def fourohfour(e):
|
||||
return render_template('404.html')
|
||||
|
||||
'''# ndsspotify stuff
|
||||
@app.route('/play', methods=["POST"])
|
||||
def flaskPlay():
|
||||
print(request.headers)
|
||||
if request.headers['Auth'] == passwd:
|
||||
spotPP()
|
||||
return Response('{"status":"Success"}', status=200, mimetype='application/json')
|
||||
else:
|
||||
return Response('{"status":"Incorrect password"}', status=401, mimetype='application/json')
|
||||
|
||||
@app.route('/next', methods=["POST"])
|
||||
def flaskNext():
|
||||
if request.headers['Auth'] == passwd:
|
||||
spotNE()
|
||||
return Response('{"status":"Success"}', status=200, mimetype='application/json')
|
||||
else:
|
||||
return Response('{"status":"Incorrect password"}', status=401, mimetype='application/json')
|
||||
|
||||
@app.route('/prev', methods=["POST"])
|
||||
def flaskPrev():
|
||||
if request.headers['Auth'] == passwd:
|
||||
spotPR()
|
||||
return Response('{"status":"Success"}', status=200, mimetype='application/json')
|
||||
else:
|
||||
return Response('{"status":"Incorrect password"}', status=401, mimetype='application/json')
|
||||
|
||||
@app.route('/shuf', methods=["POST"])
|
||||
def flaskShuf():
|
||||
if request.headers['Auth'] == passwd:
|
||||
spotSF()
|
||||
return Response('{"status":"Success"}', status=200, mimetype='application/json')
|
||||
else:
|
||||
return Response('{"status":"Incorrect password"}', status=401, mimetype='application/json')
|
||||
|
||||
@app.route('/repr', methods=["POST"])
|
||||
def flaskRepr():
|
||||
if request.headers['Auth'] == passwd:
|
||||
spotRE()
|
||||
return Response('{"status":"Success"}', status=200, mimetype='application/json')
|
||||
else:
|
||||
return Response('{"status":"Incorrect password"}', status=401, mimetype='application/json')
|
||||
|
||||
@app.route('/sear', methods=["POST"])
|
||||
def flaskSear():
|
||||
if request.headers['Auth'] == passwd:
|
||||
spotSE("track", request.headers['Search-Text'])
|
||||
return Response('{"status":"Success"}', status=200, mimetype='application/json')
|
||||
else:
|
||||
return Response('{"status":"Incorrect password"}', status=401, mimetype='application/json')
|
||||
|
||||
@app.route('/like', methods=["POST"])
|
||||
def flaskLike():
|
||||
if request.headers['Auth'] == passwd:
|
||||
spotLS()
|
||||
return Response('{"status":"Success"}', status=200, mimetype='application/json')
|
||||
else:
|
||||
return Response('{"status":"Incorrect password"}', status=401, mimetype='application/json')
|
||||
|
||||
@app.route('/disl', methods=['POST'])
|
||||
def flaskDisl():
|
||||
if request.headers['Auth'] == passwd:
|
||||
spotRL()
|
||||
return Response('{"status":"Success"}', status=200, mimetype='application/json')
|
||||
else:
|
||||
return Response('{"status":"Incorrect password"}', status=401, mimetype='application/json')
|
||||
|
||||
@app.route('/volu', methods=["POST"])
|
||||
def flaskVolu():
|
||||
if request.headers['Auth'] == passwd:
|
||||
spotVL(request.headers['Volume'])
|
||||
return Response('{"status":"Success"}', status=200, mimetype='application/json')
|
||||
else:
|
||||
return Response('{"status":"Incorrect password"}', status=401, mimetype='application/json')'''
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(host='0.0.0.0', port=5000)
|
||||
604
spot.py
604
spot.py
@@ -1,604 +0,0 @@
|
||||
import argparse
|
||||
import requests
|
||||
import json as jsn
|
||||
import urllib.request
|
||||
import sys
|
||||
import time
|
||||
import traceback
|
||||
|
||||
'''
|
||||
create file called secrets in same folder as spot.py with app token on line 1 and refresh token on line 2
|
||||
'''
|
||||
|
||||
def spotAuth():
|
||||
f = open(sys.path[0]+"/secrets", "r")
|
||||
appToken = f.readline()[:-1]
|
||||
refreshToken = f.readline()[:-1]
|
||||
tokenURL = "https://accounts.spotify.com/api/token"
|
||||
|
||||
headers = {"Authorization": "Basic "+appToken}
|
||||
payload = {"grant_type": "refresh_token", "refresh_token": refreshToken}
|
||||
r = requests.post(tokenURL, headers=headers, data=payload)
|
||||
|
||||
json = r.json()
|
||||
accessToken = json["access_token"]
|
||||
return accessToken
|
||||
|
||||
|
||||
def spotDevice(headers, caller):
|
||||
r = requests.get("https://api.spotify.com/v1/me/player/devices", headers=headers)
|
||||
if r.status_code != 200:
|
||||
print('Invalid permissions!')
|
||||
quit()
|
||||
json = r.json()
|
||||
deviceid = None
|
||||
if len(json["devices"]) == 0:
|
||||
print("No playback devices")
|
||||
quit()
|
||||
elif len(json["devices"]) == 1:
|
||||
deviceid = json["devices"][0]["id"]
|
||||
devicename = json["devices"][0]["name"]
|
||||
if caller == "dev":
|
||||
print("\033[1m\033[92m"+devicename+"\033[0m is only device.")
|
||||
quit()
|
||||
elif caller == "vol" or caller == "prev" or caller == "next" or caller == "np" or caller == "play":
|
||||
for i in json["devices"]:
|
||||
if i["is_active"] == True:
|
||||
deviceid = i["id"]
|
||||
devicename = i["name"]
|
||||
if deviceid == None:
|
||||
print("No active device, defaulting to 0")
|
||||
deviceid = json["devices"][0]["id"]
|
||||
devicename = json["devices"][0]["name"]
|
||||
elif caller == "dev":
|
||||
j = 0
|
||||
devicedict = {}
|
||||
for i in json["devices"]:
|
||||
if i["is_active"] == False:
|
||||
print("["+str(j)+"] "+i["name"])
|
||||
devicedict.update( {j: [i["name"], i["id"]]})
|
||||
j += 1
|
||||
choice = input("Choose device: ")
|
||||
try:
|
||||
choice = int(choice)
|
||||
except:
|
||||
quit()
|
||||
deviceid = devicedict[choice][1]
|
||||
devicename = devicedict[choice][0]
|
||||
else:
|
||||
for i in range(0,len(json["devices"])):
|
||||
print("["+str(i)+"] "+json["devices"][i]["name"])
|
||||
choice = input("Choose device: ")
|
||||
try:
|
||||
choice = int(choice)
|
||||
except:
|
||||
quit()
|
||||
deviceid = json["devices"][choice]["id"]
|
||||
devicename = json["devices"][choice]["name"]
|
||||
|
||||
devicedict = {}
|
||||
devicedict.update( {"deviceid": deviceid})
|
||||
devicedict.update( {"devicename": devicename})
|
||||
return devicedict
|
||||
|
||||
|
||||
def spotSK(seekTime):
|
||||
accessToken = spotAuth()
|
||||
headers = {"Authorization": "Bearer "+accessToken}
|
||||
|
||||
r = requests.get("https://api.spotify.com/v1/me/player/currently-playing", headers=headers)
|
||||
if r.status_code == 204:
|
||||
print("Nothing playing")
|
||||
quit()
|
||||
elif r.status_code != 200:
|
||||
print("Error: HTTP"+str(r.status_code))
|
||||
quit()
|
||||
json = r.json()
|
||||
durationMS = int(json["item"]["duration_ms"])
|
||||
seekMS = durationMS*(seekTime/4)
|
||||
seekMS = round(seekMS)
|
||||
|
||||
r = requests.put("https://api.spotify.com/v1/me/player/seek?position_ms="+str(seekMS), headers=headers)
|
||||
if r.status_code == 204:
|
||||
print("Seeking to "+str((seekMS/1000)/60)+" minutes")
|
||||
else:
|
||||
print("Error: HTTP"+str(r.status_code))
|
||||
return r.status_code
|
||||
|
||||
|
||||
def spotNP(imgcatBool, timeBool):
|
||||
accessToken = spotAuth()
|
||||
headers = {"Authorization": "Bearer "+accessToken}
|
||||
|
||||
dev = spotDevice(headers, "np")
|
||||
devicename = dev["devicename"]
|
||||
|
||||
r = requests.get("https://api.spotify.com/v1/me/player/currently-playing", headers=headers)
|
||||
if r.status_code == 204:
|
||||
print("Nothing playing")
|
||||
quit()
|
||||
elif r.status_code != 200:
|
||||
print("Error: HTTP"+str(r.status_code))
|
||||
quit()
|
||||
try:
|
||||
json = r.json()
|
||||
playing = json["is_playing"]
|
||||
except:
|
||||
playing = False
|
||||
|
||||
if playing == False:
|
||||
text = "paused"
|
||||
elif playing == True:
|
||||
text = "playing"
|
||||
|
||||
title = json["item"]["name"]
|
||||
artist = json["item"]["album"]["artists"][0]["name"]
|
||||
imgurl = json["item"]["album"]["images"][1]["url"]
|
||||
durationSec = (json["item"]["duration_ms"])/1000
|
||||
currentSec = (json["progress_ms"])/1000
|
||||
print("\033[95m\033[1m"+title+"\033[0m by ", end='')
|
||||
print("\033[94m\033[1m"+artist+"\033[0m is "+text+" on ", end='')
|
||||
print("\033[92m\033[1m"+devicename+"\033[0m")
|
||||
if (timeBool):
|
||||
print(str(round(currentSec//60))+":"+(str(round(currentSec%60))).zfill(2)+"/"+str(round(durationSec//60))+":"+(str(round(durationSec%60)).zfill(2)))
|
||||
return r.status_code
|
||||
|
||||
|
||||
def spotSE(context, query):
|
||||
print(query)
|
||||
accessToken = spotAuth()
|
||||
headers = {"Authorization": "Bearer "+accessToken}
|
||||
payload = {'type': context, 'q': query}
|
||||
|
||||
r = requests.get("https://api.spotify.com/v1/search", params=payload, headers=headers)
|
||||
if r.status_code == 204:
|
||||
print("No results")
|
||||
quit()
|
||||
elif r.status_code != 200:
|
||||
print("Error: HTTP"+str(r.status_code))
|
||||
quit()
|
||||
json = r.json()
|
||||
try:
|
||||
if context == "album":
|
||||
uri = json["albums"]["items"][0]["uri"]
|
||||
name = json["albums"]["items"][0]["name"]
|
||||
elif context == "track":
|
||||
uri = json["tracks"]["items"][0]["uri"]
|
||||
name = json["tracks"]["items"][0]["name"]
|
||||
except:
|
||||
print("Search returned no results")
|
||||
quit()
|
||||
|
||||
dev = spotDevice(headers, "search")
|
||||
|
||||
if context == "album":
|
||||
payload = {"context_uri": uri}
|
||||
else:
|
||||
payload = {"uris": [uri]}
|
||||
r = requests.put("https://api.spotify.com/v1/me/player/play?device_id="+dev["deviceid"], headers=headers, data=jsn.dumps(payload))
|
||||
if r.status_code == 204:
|
||||
print("Playing "+context+"\033[1m\033[95m "+name+"\033[0m on \033[1m\033[92m"+dev["devicename"]+"\033[0m.")
|
||||
else:
|
||||
print("Unable to play \033[1m\033[95m"+name+"\033[0m.")
|
||||
return r.status_code
|
||||
|
||||
|
||||
def spotSF():
|
||||
accessToken = spotAuth()
|
||||
headers = {"Authorization": "Bearer "+accessToken}
|
||||
r = requests.get("https://api.spotify.com/v1/me/player/currently-playing", headers=headers)
|
||||
if r.status_code == 204:
|
||||
print("No active playback session")
|
||||
quit()
|
||||
elif r.status_code != 200:
|
||||
print("Error: HTTP"+str(r.status_code))
|
||||
quit()
|
||||
|
||||
r = requests.get("https://api.spotify.com/v1/me/player", headers=headers)
|
||||
json = r.json()
|
||||
shuf = json["shuffle_state"]
|
||||
if shuf == True:
|
||||
shuf = "false"
|
||||
elif shuf == False:
|
||||
shuf = "true"
|
||||
|
||||
r = requests.put("https://api.spotify.com/v1/me/player/shuffle?state="+shuf, headers=headers)
|
||||
return r.status_code
|
||||
|
||||
def spotRE():
|
||||
accessToken = spotAuth()
|
||||
headers = {"Authorization": "Bearer "+accessToken}
|
||||
r = requests.get("https://api.spotify.com/v1/me/player/currently-playing", headers=headers)
|
||||
if r.status_code == 204:
|
||||
print("No active playback session")
|
||||
quit()
|
||||
elif r.status_code != 200:
|
||||
print("Error: HTTP"+str(r.status_code))
|
||||
quit()
|
||||
|
||||
r = requests.get("https://api.spotify.com/v1/me/player", headers=headers)
|
||||
json = r.json()
|
||||
rep = json["repeat_state"]
|
||||
if rep == "context":
|
||||
rep = "off"
|
||||
elif rep == "off":
|
||||
rep = "context"
|
||||
else:
|
||||
rep = "off"
|
||||
|
||||
r = requests.put("https://api.spotify.com/v1/me/player/repeat?state="+rep, headers=headers)
|
||||
if r.status_code == 204:
|
||||
r = requests.get("https://api.spotify.com/v1/me/player", headers=headers)
|
||||
json = r.json()
|
||||
currep = json["repeat_state"]
|
||||
else:
|
||||
print("Unable to toggle repeat.")
|
||||
return r.status_code
|
||||
|
||||
|
||||
def spotPR():
|
||||
accessToken = spotAuth()
|
||||
headers = {"Authorization": "Bearer "+accessToken}
|
||||
r = requests.get("https://api.spotify.com/v1/me/player/currently-playing", headers=headers)
|
||||
if r.status_code == 204:
|
||||
print("No active playback session")
|
||||
quit()
|
||||
elif r.status_code != 200:
|
||||
print("Error: HTTP"+str(r.status_code))
|
||||
quit()
|
||||
json = r.json()
|
||||
trackname = json["item"]["name"]
|
||||
trackid = json["item"]["id"]
|
||||
|
||||
dev = spotDevice(headers, "prev")
|
||||
|
||||
r = requests.post("https://api.spotify.com/v1/me/player/previous", headers=headers)
|
||||
if r.status_code == 204:
|
||||
time.sleep(0.5)
|
||||
r = requests.get("https://api.spotify.com/v1/me/player/currently-playing", headers=headers)
|
||||
if r.status_code == 204:
|
||||
print("No active playback session")
|
||||
quit()
|
||||
elif r.status_code != 200:
|
||||
print("Error: HTTP"+str(r.status_code))
|
||||
quit()
|
||||
json = r.json()
|
||||
trackname = json["item"]["name"]
|
||||
trackid = json["item"]["id"]
|
||||
else:
|
||||
print("Unable to play \033[1m\033[95m"+trackname+"\033[0m.")
|
||||
return r.status_code
|
||||
|
||||
|
||||
def spotNE():
|
||||
accessToken = spotAuth()
|
||||
headers = {"Authorization": "Bearer "+accessToken}
|
||||
r = requests.get("https://api.spotify.com/v1/me/player/currently-playing", headers=headers)
|
||||
if r.status_code == 204:
|
||||
print("No active playback session")
|
||||
quit()
|
||||
elif r.status_code != 200:
|
||||
print("Error: HTTP"+str(r.status_code))
|
||||
quit()
|
||||
json = r.json()
|
||||
trackname = json["item"]["name"]
|
||||
trackid = json["item"]["id"]
|
||||
|
||||
dev = spotDevice(headers, "next")
|
||||
|
||||
r = requests.post("https://api.spotify.com/v1/me/player/next", headers=headers)
|
||||
if r.status_code == 204:
|
||||
time.sleep(0.5)
|
||||
r = requests.get("https://api.spotify.com/v1/me/player/currently-playing", headers=headers)
|
||||
if r.status_code == 204:
|
||||
print("No active playback session")
|
||||
quit()
|
||||
elif r.status_code != 200:
|
||||
print("Error: HTTP"+str(r.status_code))
|
||||
quit()
|
||||
json = r.json()
|
||||
trackname = json["item"]["name"]
|
||||
trackid = json["item"]["id"]
|
||||
else:
|
||||
print("Unable to play \033[1m\033[95m"+trackname+"\033[0m.")
|
||||
return r.status_code
|
||||
|
||||
|
||||
def spotPP():
|
||||
accessToken = spotAuth()
|
||||
headers = {"Authorization": "Bearer "+accessToken}
|
||||
|
||||
dev = spotDevice(headers, "play")
|
||||
|
||||
r = requests.get("https://api.spotify.com/v1/me/player", headers=headers)
|
||||
try:
|
||||
json = r.json()
|
||||
playing = json["is_playing"]
|
||||
except:
|
||||
playing = False
|
||||
|
||||
if playing == False:
|
||||
r = requests.put("https://api.spotify.com/v1/me/player/play?device_id="+dev["deviceid"], headers=headers)
|
||||
if r.status_code == 204:
|
||||
time.sleep(0.5)
|
||||
r = requests.get("https://api.spotify.com/v1/me/player/currently-playing", headers=headers)
|
||||
if r.status_code == 204:
|
||||
quit()
|
||||
elif r.status_code != 200:
|
||||
print("Error: HTTP"+str(r.status_code))
|
||||
quit()
|
||||
json = r.json()
|
||||
trackname = json["item"]["name"]
|
||||
trackid = json["item"]["id"]
|
||||
elif playing == True:
|
||||
r = requests.put("https://api.spotify.com/v1/me/player/pause?device_id="+dev["deviceid"], headers=headers)
|
||||
if r.status_code == 204:
|
||||
r = requests.get("https://api.spotify.com/v1/me/player/currently-playing", headers=headers)
|
||||
if r.status_code == 204:
|
||||
quit()
|
||||
elif r.status_code != 200:
|
||||
quit()
|
||||
json = r.json()
|
||||
trackname = json["item"]["name"]
|
||||
trackid = json["item"]["id"]
|
||||
return "Success"
|
||||
|
||||
|
||||
def spotLS():
|
||||
accessToken = spotAuth()
|
||||
headers = {"Authorization": "Bearer "+accessToken}
|
||||
r = requests.get("https://api.spotify.com/v1/me/player/currently-playing", headers=headers)
|
||||
if r.status_code == 204:
|
||||
print("Nothing playing")
|
||||
quit()
|
||||
elif r.status_code != 200:
|
||||
print("Error: HTTP"+str(r.status_code))
|
||||
quit()
|
||||
json = r.json()
|
||||
trackname = json["item"]["name"]
|
||||
trackid = json["item"]["id"]
|
||||
|
||||
headers = {"Authorization": "Bearer "+accessToken, "Accept": "application/json", "Content-Type": "application/json"}
|
||||
r = requests.put("https://api.spotify.com/v1/me/tracks?ids="+trackid, headers=headers)
|
||||
if r.status_code == 200:
|
||||
print("Added \033[1m\033[95m"+json["item"]["name"]+"\033[0m to Liked Songs")
|
||||
else:
|
||||
print("An error occured, fun")
|
||||
return r.status_code
|
||||
|
||||
def spotRL():
|
||||
accessToken = spotAuth()
|
||||
headers = {"Authorization": "Bearer "+accessToken}
|
||||
r = requests.get("https://api.spotify.com/v1/me/player/currently-playing", headers=headers)
|
||||
if r.status_code == 204:
|
||||
print("Nothing playing")
|
||||
quit()
|
||||
elif r.status_code != 200:
|
||||
print("Error: HTTP"+str(r.status_code))
|
||||
quit()
|
||||
json = r.json()
|
||||
trackname = json["item"]["name"]
|
||||
trackid = json["item"]["id"]
|
||||
|
||||
headers = {"Authorization": "Bearer "+accessToken, "Accept": "application/json", "Content-Type": "application/json"}
|
||||
r = requests.delete("https://api.spotify.com/v1/me/tracks?ids="+trackid, headers=headers)
|
||||
if r.status_code == 200:
|
||||
print("Removed \033[1m\033[95m"+json["item"]["name"]+"\033[0m from Liked Songs")
|
||||
else:
|
||||
print("An error occured, fun")
|
||||
|
||||
|
||||
def spotAP():
|
||||
accessToken = spotAuth()
|
||||
headers = {"Authorization": "Bearer "+accessToken}
|
||||
r = requests.get("https://api.spotify.com/v1/me/player/currently-playing", headers=headers)
|
||||
if r.status_code == 204:
|
||||
print("Nothing playing")
|
||||
quit()
|
||||
elif r.status_code != 200:
|
||||
print("Error: HTTP"+str(r.status_code))
|
||||
quit()
|
||||
json = r.json()
|
||||
print("Add \033[1m\033[95m"+json["item"]["name"]+"\033[0m to:")
|
||||
trackname = json["item"]["name"]
|
||||
trackuri = json["item"]["uri"]
|
||||
trackuri.replace(":", "%3A")
|
||||
|
||||
r = requests.get("https://api.spotify.com/v1/me", headers=headers)
|
||||
json = r.json()
|
||||
userid = json["id"]
|
||||
|
||||
r = requests.get("https://api.spotify.com/v1/me/playlists?limit=50", headers=headers)
|
||||
json = r.json()
|
||||
j = 0
|
||||
playdict = {}
|
||||
for i in json["items"]:
|
||||
if userid == i["owner"]["display_name"]:
|
||||
print("["+str(j)+"] "+i["name"])
|
||||
playdict.update( {j: [i["name"], i["id"]]})
|
||||
j += 1
|
||||
elif i["collaborative"] == True:
|
||||
print("["+str(j)+"] "+i["name"])
|
||||
playdict.update( {j: [i["name"], i["id"]]})
|
||||
j += 1
|
||||
choice = input("Select Playlist: ")
|
||||
try:
|
||||
choice = int(choice)
|
||||
except:
|
||||
quit()
|
||||
playlistid = playdict[choice][1]
|
||||
playlistname = playdict[choice][0]
|
||||
|
||||
headers = {"Authorization": "Bearer "+accessToken, "Accept": "application/json", "Content-Type": "application/json"}
|
||||
r = requests.post("https://api.spotify.com/v1/playlists/"+playlistid+"/tracks?uris="+trackuri, headers=headers)
|
||||
if r.status_code == 201:
|
||||
print("Successfully added \033[1m\033[95m"+trackname+"\033[0m to \033[1m\033[96m"+playlistname+"\033[0m")
|
||||
else:
|
||||
print("Unable to add song to specified playlist. Do you have access to do so?")
|
||||
return r.status_code
|
||||
|
||||
|
||||
def spotPD():
|
||||
accessToken = spotAuth()
|
||||
headers = {"Authorization": "Bearer "+accessToken}
|
||||
|
||||
dev = spotDevice(headers, "dev")
|
||||
|
||||
payload = {"device_ids":[dev["deviceid"]]}
|
||||
r = requests.put("https://api.spotify.com/v1/me/player", headers=headers, data=jsn.dumps(payload))
|
||||
if r.status_code == 204:
|
||||
time.sleep(0.5)
|
||||
r = requests.get("https://api.spotify.com/v1/me/player/currently-playing", headers=headers)
|
||||
if r.status_code == 204:
|
||||
print("No active playback session")
|
||||
quit()
|
||||
elif r.status_code != 200:
|
||||
print("Error: HTTP"+str(r.status_code))
|
||||
quit()
|
||||
json = r.json()
|
||||
trackname = json["item"]["name"]
|
||||
trackid = json["item"]["id"]
|
||||
print("Playing \033[1m\033[95m"+trackname+"\033[0m on \033[1m\033[92m"+dev["devicename"]+"\033[0m.")
|
||||
elif r.status_code == 202:
|
||||
time.sleep(2)
|
||||
r = requests.get("https://api.spotify.com/v1/me/player/currently-playing", headers=headers)
|
||||
if r.status_code == 204:
|
||||
print("No active playback session")
|
||||
quit()
|
||||
elif r.status_code != 200:
|
||||
print("Error: HTTP"+str(r.status_code))
|
||||
quit()
|
||||
json = r.json()
|
||||
trackname = json["item"]["name"]
|
||||
trackid = json["item"]["id"]
|
||||
print("Playing \033[1m\033[95m"+trackname+"\033[0m on \033[1m\033[92m"+dev["devicename"]+"\033[0m.")
|
||||
else:
|
||||
print(r.status_code)
|
||||
print("Unable to transfer playback.")
|
||||
|
||||
|
||||
def spotRP():
|
||||
accessToken = spotAuth()
|
||||
headers = {"Authorization": "Bearer "+accessToken}
|
||||
r = requests.get("https://api.spotify.com/v1/me/player/currently-playing", headers=headers)
|
||||
if r.status_code == 204:
|
||||
print("Nothing playing")
|
||||
quit()
|
||||
elif r.status_code != 200:
|
||||
print("Error: HTTP"+str(r.status_code))
|
||||
quit()
|
||||
json = r.json()
|
||||
print("Remove \033[1m\033[95m"+json["item"]["name"]+"\033[0m from:")
|
||||
trackname = json["item"]["name"]
|
||||
trackuri = json["item"]["uri"]
|
||||
|
||||
r = requests.get("https://api.spotify.com/v1/me", headers=headers)
|
||||
json = r.json()
|
||||
userid = json["id"]
|
||||
|
||||
r = requests.get("https://api.spotify.com/v1/me/playlists?limit=50", headers=headers)
|
||||
json = r.json()
|
||||
j = 0
|
||||
playdict = {}
|
||||
for i in json["items"]:
|
||||
if userid == i["owner"]["display_name"]:
|
||||
print("["+str(j)+"] "+i["name"])
|
||||
playdict.update( {j: [i["name"], i["id"]]})
|
||||
j += 1
|
||||
elif i["collaborative"] == True:
|
||||
print("["+str(j)+"] "+i["name"])
|
||||
playdict.update( {j: [i["name"], i["id"]]})
|
||||
j += 1
|
||||
choice = input("Select Playlist: ")
|
||||
try:
|
||||
choice = int(choice)
|
||||
except:
|
||||
quit()
|
||||
playlistid = playdict[choice][1]
|
||||
playlistname = playdict[choice][0]
|
||||
|
||||
headers = {"Authorization": "Bearer "+accessToken, "Accept": "application/json", "Content-Type": "application/json"}
|
||||
payload = { "tracks": [{ "uri": trackuri }] }
|
||||
r = requests.delete("https://api.spotify.com/v1/playlists/"+playlistid+"/tracks", headers=headers, data=jsn.dumps(payload))
|
||||
if r.status_code == 200:
|
||||
print("If \033[1m\033[95m"+trackname+"\033[0m was in \033[1m\033[96m"+playlistname+"\033[0m it has been removed.")
|
||||
else:
|
||||
print("Unable to remove song from specified playlist. Do you have access to do so?")
|
||||
return r.status_code
|
||||
|
||||
|
||||
def spotPL():
|
||||
accessToken = spotAuth()
|
||||
headers = {"Authorization": "Bearer "+accessToken}
|
||||
print("Play:")
|
||||
|
||||
r = requests.get("https://api.spotify.com/v1/me/playlists?limit=50", headers=headers)
|
||||
json = r.json()
|
||||
j = 0
|
||||
playdict = {}
|
||||
for i in json["items"]:
|
||||
print("["+str(j)+"] "+i["name"])
|
||||
playdict.update( {j: [i["name"], i["id"]]})
|
||||
j += 1
|
||||
choice = input("Select Playlist: ")
|
||||
try:
|
||||
choice = int(choice)
|
||||
except:
|
||||
quit()
|
||||
playlistid = playdict[choice][1]
|
||||
playlistname = playdict[choice][0]
|
||||
|
||||
dev = spotDevice(headers, "playlist play")
|
||||
|
||||
payload = {"context_uri": "spotify:playlist:"+playlistid}
|
||||
r = requests.put("https://api.spotify.com/v1/me/player/play?device_id="+dev["deviceid"], headers=headers, data=jsn.dumps(payload))
|
||||
if r.status_code == 204:
|
||||
time.sleep(0.5)
|
||||
r = requests.get("https://api.spotify.com/v1/me/player/currently-playing", headers=headers)
|
||||
if r.status_code == 204:
|
||||
print("No active playback session")
|
||||
quit()
|
||||
elif r.status_code != 200:
|
||||
print("Error: HTTP"+str(r.status_code))
|
||||
quit()
|
||||
json = r.json()
|
||||
trackname = json["item"]["name"]
|
||||
trackid = json["item"]["id"]
|
||||
print("Playing \033[1m\033[95m"+trackname+"\033[0m on \033[1m\033[92m"+dev["devicename"]+"\033[0m.")
|
||||
else:
|
||||
print("Unable to play \033[1m\033[95m"+trackname+"\033[0m.")
|
||||
return r.status_code
|
||||
|
||||
|
||||
def spotVL(vol):
|
||||
accessToken = spotAuth()
|
||||
headers = {"Authorization": "Bearer "+accessToken}
|
||||
|
||||
dev = spotDevice(headers, "vol")
|
||||
|
||||
r = requests.get("https://api.spotify.com/v1/me/player", headers=headers)
|
||||
print(r)
|
||||
json = r.json()
|
||||
curVol = json["device"]["volume_percent"]
|
||||
curVol = int(curVol)
|
||||
|
||||
if vol == "up":
|
||||
vol = (curVol+10)
|
||||
if vol > 100:
|
||||
vol = 100
|
||||
elif vol == "down":
|
||||
vol = (curVol-10)
|
||||
if vol < 0:
|
||||
vol = 0
|
||||
|
||||
r = requests.put("https://api.spotify.com/v1/me/player/volume?volume_percent="+str(vol), headers=headers)
|
||||
if r.status_code == 204:
|
||||
print("Volume on \033[1m\033[92m"+dev["devicename"]+"\033[0m set to "+str(vol))
|
||||
else:
|
||||
json = r.json()
|
||||
reason = json["error"]["reason"]
|
||||
if reason == "VOLUME_CONTROL_DISALLOW":
|
||||
print("Device \033[1m\033[92m"+dev["devicename"]+"\033[0m does not allow volume to be controlled through API")
|
||||
else:
|
||||
print("No active playback devices")
|
||||
return r.status_code
|
||||
Reference in New Issue
Block a user