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 import Flask, render_template, request, Response
|
||||||
from flask_api import status
|
from flask_api import status
|
||||||
from spot import *
|
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
@@ -27,79 +26,5 @@ def privacy():
|
|||||||
def fourohfour(e):
|
def fourohfour(e):
|
||||||
return render_template('404.html')
|
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__':
|
if __name__ == '__main__':
|
||||||
app.run(host='0.0.0.0', port=5000)
|
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