diff --git a/code b/code index fc99224..7506e5f 100644 --- a/code +++ b/code @@ -1 +1 @@ -AQA8p4IgPYH0j9TIUFR4m5zAKPgvPzhvW07iCLAUYq-7sWyhxTTDRiWZaocH01HomhYoGZnVarc2SGUH4Buu9ox22lQ0e7z4AnglirOqF8I24v4zZveuiOPuLjet4YFY9rCY9TdtGmaUE1Y710tdgF7_ZBT4V2fuFSM0i9qXML37rZBS_DVmWlbVyLi-RKOeT-EIktYsTNfV45ajoe-GCB7eL5eFit8nGGjBokIXM0w14m004GtnvjfcazBaJqS6XlqU80VB82OTQauN7fyckTEYMUalhfM20ZE2p8D7qCg \ No newline at end of file +AQBtjZ5AgmaU073h9RsK82t8w2XMeQ_HTSbqbAyd3PNVQe2YNnkM883WOcpbDfKt4ll2xu0LoUWEMX5sEUmtPSWCgFs1k_3GFUxtUJV8VslZUvgIYBUSSbqNWrxZqRtGJ-cL_Rdq6gbBKttHkkMdnZVeO2jUtJM2zCHSYEW49o-aoRpcMkzPm66_H88O9S8hVEegS7nG4uP0AUYwe0EiW6YMvFkCVG6XJ7AJpcO97U0tP0PhRbBrx1Y5lRAequ5YaY-BC4FFHwBcA8XePKvAnuDku0sbRd1vbw6dahcRdco \ No newline at end of file diff --git a/icons/heart-black.png b/icons/heart-black.png new file mode 100644 index 0000000..ae44a17 Binary files /dev/null and b/icons/heart-black.png differ diff --git a/icons/heart-on-black.png b/icons/heart-on-black.png new file mode 100644 index 0000000..a54bfa0 Binary files /dev/null and b/icons/heart-on-black.png differ diff --git a/icons/heart-on.png b/icons/heart-on.png new file mode 100644 index 0000000..85812b5 Binary files /dev/null and b/icons/heart-on.png differ diff --git a/icons/heart.png b/icons/heart.png new file mode 100644 index 0000000..bdcc8dd Binary files /dev/null and b/icons/heart.png differ diff --git a/icons/lyrics.png b/icons/lyrics.png new file mode 100644 index 0000000..02b5e64 Binary files /dev/null and b/icons/lyrics.png differ diff --git a/icons/next-black.png b/icons/next-black.png new file mode 100644 index 0000000..18e1915 Binary files /dev/null and b/icons/next-black.png differ diff --git a/icons/next.png b/icons/next.png new file mode 100644 index 0000000..51563a3 Binary files /dev/null and b/icons/next.png differ diff --git a/icons/pause-black.png b/icons/pause-black.png new file mode 100644 index 0000000..c705662 Binary files /dev/null and b/icons/pause-black.png differ diff --git a/icons/pause-circle-x2-black.png b/icons/pause-circle-x2-black.png new file mode 100644 index 0000000..2e127ea Binary files /dev/null and b/icons/pause-circle-x2-black.png differ diff --git a/icons/pause-circle-x2.png b/icons/pause-circle-x2.png new file mode 100644 index 0000000..3fc7457 Binary files /dev/null and b/icons/pause-circle-x2.png differ diff --git a/icons/pause-circle.png b/icons/pause-circle.png new file mode 100644 index 0000000..3de7b92 Binary files /dev/null and b/icons/pause-circle.png differ diff --git a/icons/pause-heart-black.png b/icons/pause-heart-black.png new file mode 100644 index 0000000..f79fb07 Binary files /dev/null and b/icons/pause-heart-black.png differ diff --git a/icons/pause-heart.png b/icons/pause-heart.png new file mode 100644 index 0000000..8ddef91 Binary files /dev/null and b/icons/pause-heart.png differ diff --git a/icons/pause.png b/icons/pause.png new file mode 100644 index 0000000..a1dd5d6 Binary files /dev/null and b/icons/pause.png differ diff --git a/icons/play-black.png b/icons/play-black.png new file mode 100644 index 0000000..0daa8d9 Binary files /dev/null and b/icons/play-black.png differ diff --git a/icons/play-circle-x2-black.png b/icons/play-circle-x2-black.png new file mode 100644 index 0000000..6aa0a3b Binary files /dev/null and b/icons/play-circle-x2-black.png differ diff --git a/icons/play-circle-x2.png b/icons/play-circle-x2.png new file mode 100644 index 0000000..0d796d0 Binary files /dev/null and b/icons/play-circle-x2.png differ diff --git a/icons/play-circle.png b/icons/play-circle.png new file mode 100644 index 0000000..160eeb3 Binary files /dev/null and b/icons/play-circle.png differ diff --git a/icons/play-heart-black.png b/icons/play-heart-black.png new file mode 100644 index 0000000..e104556 Binary files /dev/null and b/icons/play-heart-black.png differ diff --git a/icons/play-heart.png b/icons/play-heart.png new file mode 100644 index 0000000..0b2c6f5 Binary files /dev/null and b/icons/play-heart.png differ diff --git a/icons/play-testing.png b/icons/play-testing.png new file mode 100644 index 0000000..25d45bd Binary files /dev/null and b/icons/play-testing.png differ diff --git a/icons/play.png b/icons/play.png new file mode 100644 index 0000000..2044bb4 Binary files /dev/null and b/icons/play.png differ diff --git a/icons/previous-black.png b/icons/previous-black.png new file mode 100644 index 0000000..d8ad4a0 Binary files /dev/null and b/icons/previous-black.png differ diff --git a/icons/previous.png b/icons/previous.png new file mode 100644 index 0000000..1c5ea0b Binary files /dev/null and b/icons/previous.png differ diff --git a/icons/radio-black.png b/icons/radio-black.png new file mode 100644 index 0000000..efbfc01 Binary files /dev/null and b/icons/radio-black.png differ diff --git a/icons/radio-on-black.png b/icons/radio-on-black.png new file mode 100644 index 0000000..d630704 Binary files /dev/null and b/icons/radio-on-black.png differ diff --git a/icons/radio-on.png b/icons/radio-on.png new file mode 100644 index 0000000..455a01f Binary files /dev/null and b/icons/radio-on.png differ diff --git a/icons/radio.png b/icons/radio.png new file mode 100644 index 0000000..6ece065 Binary files /dev/null and b/icons/radio.png differ diff --git a/icons/repeat-black.png b/icons/repeat-black.png new file mode 100644 index 0000000..2323ce8 Binary files /dev/null and b/icons/repeat-black.png differ diff --git a/icons/repeat-on-black.png b/icons/repeat-on-black.png new file mode 100644 index 0000000..fe902d6 Binary files /dev/null and b/icons/repeat-on-black.png differ diff --git a/icons/repeat-on.png b/icons/repeat-on.png new file mode 100644 index 0000000..31ec420 Binary files /dev/null and b/icons/repeat-on.png differ diff --git a/icons/repeat-one-black.png b/icons/repeat-one-black.png new file mode 100644 index 0000000..04ce252 Binary files /dev/null and b/icons/repeat-one-black.png differ diff --git a/icons/repeat-one-on-black.png b/icons/repeat-one-on-black.png new file mode 100644 index 0000000..c8a8907 Binary files /dev/null and b/icons/repeat-one-on-black.png differ diff --git a/icons/repeat-one-on.png b/icons/repeat-one-on.png new file mode 100644 index 0000000..575c0e0 Binary files /dev/null and b/icons/repeat-one-on.png differ diff --git a/icons/repeat-one.png b/icons/repeat-one.png new file mode 100644 index 0000000..f2bc190 Binary files /dev/null and b/icons/repeat-one.png differ diff --git a/icons/repeat.png b/icons/repeat.png new file mode 100644 index 0000000..558d803 Binary files /dev/null and b/icons/repeat.png differ diff --git a/icons/shuffle-black.png b/icons/shuffle-black.png new file mode 100644 index 0000000..ea9f62b Binary files /dev/null and b/icons/shuffle-black.png differ diff --git a/icons/shuffle-on-black.png b/icons/shuffle-on-black.png new file mode 100644 index 0000000..c0676c1 Binary files /dev/null and b/icons/shuffle-on-black.png differ diff --git a/icons/shuffle-on.png b/icons/shuffle-on.png new file mode 100644 index 0000000..e6ec8f9 Binary files /dev/null and b/icons/shuffle-on.png differ diff --git a/icons/shuffle.png b/icons/shuffle.png new file mode 100644 index 0000000..e5f0d41 Binary files /dev/null and b/icons/shuffle.png differ diff --git a/icons/skip-next-x2-black.png b/icons/skip-next-x2-black.png new file mode 100644 index 0000000..f21351a Binary files /dev/null and b/icons/skip-next-x2-black.png differ diff --git a/icons/skip-next-x2.png b/icons/skip-next-x2.png new file mode 100644 index 0000000..d24594b Binary files /dev/null and b/icons/skip-next-x2.png differ diff --git a/icons/skip-next.png b/icons/skip-next.png new file mode 100644 index 0000000..9b6d4c5 Binary files /dev/null and b/icons/skip-next.png differ diff --git a/icons/skip-previous-x2-black.png b/icons/skip-previous-x2-black.png new file mode 100644 index 0000000..b0388f7 Binary files /dev/null and b/icons/skip-previous-x2-black.png differ diff --git a/icons/skip-previous-x2.png b/icons/skip-previous-x2.png new file mode 100644 index 0000000..c9f868f Binary files /dev/null and b/icons/skip-previous-x2.png differ diff --git a/icons/skip-previous.png b/icons/skip-previous.png new file mode 100644 index 0000000..edd8850 Binary files /dev/null and b/icons/skip-previous.png differ diff --git a/spotifycontroller.py b/spotifycontroller.py index 546ea1f..7591d69 100644 --- a/spotifycontroller.py +++ b/spotifycontroller.py @@ -1,4 +1,4 @@ -from flask import Flask, render_template, request, url_for, redirect +from flask import Flask, render_template, request, url_for, redirect, send_from_directory import time import requests from urllib.parse import urlencode @@ -28,11 +28,11 @@ token_headers = { "Content-Type": "application/x-www-form-urlencoded" } -song_info = { - 'name': "None", - 'artist': "None", - 'album': "None", - 'image': "None" +data = { + 'name': "Loading...", + 'artist': "", + 'album': "", + 'image': "https://cdn.pixabay.com/animation/2023/05/02/04/29/04-29-03-511_512.gif" } @app.route('/') @@ -75,7 +75,7 @@ def webapp(): return redirect(url_for('index')) access_token = access_object.json()["access_token"] - return render_template('webapp.html', song_info=song_info) + return render_template('webapp.html', data=data) @app.route('/callback', methods=['GET']) def callback(): @@ -94,30 +94,33 @@ def appdata(): } currently_playing = requests.get("https://api.spotify.com/v1/me/player/currently-playing", headers=user_headers) - - - if currently_playing.json()["is_playing"] == True: - return { 'id': currently_playing.json()["item"]["id"], - 'name': currently_playing.json()["item"]["name"], - 'artist': currently_playing.json()["item"]["artists"][0]["name"], - 'album': currently_playing.json()["item"]["album"]["name"], - 'image': currently_playing.json()["item"]["album"]["images"][0]["url"], - 'is_playing': currently_playing.json()["is_playing"], - 'progress_ms': currently_playing.json()["progress_ms"], - 'duration_ms': currently_playing.json()["item"]["duration_ms"], - 'is_liked': requests.get("https://api.spotify.com/v1/me/tracks/contains?ids=" + currently_playing.json()["item"]["id"], headers=user_headers).json()[0] - } - elif currently_playing.json()["is_playing"] == False: - return { 'name': "Not Playing", - 'artist': "Not Playing", - 'album': "Not Playing", - 'image': "Not Playing" - } + if currently_playing.content: + if currently_playing.json()["is_playing"] is True and currently_playing.json()["item"]["id"] == request.args.get('id'): + return { 'progress_ms': currently_playing.json()["progress_ms"] + } + elif currently_playing.json()["is_playing"] is True and currently_playing.json()["item"]["id"] != request.args.get('id'): + return { 'id': currently_playing.json()["item"]["id"], + 'name': currently_playing.json()["item"]["name"], + 'artist': currently_playing.json()["item"]["artists"][0]["name"], + 'album': currently_playing.json()["item"]["album"]["name"], + 'image': currently_playing.json()["item"]["album"]["images"][0]["url"], + 'is_playing': currently_playing.json()["is_playing"], + 'progress_ms': currently_playing.json()["progress_ms"], + 'duration_ms': currently_playing.json()["item"]["duration_ms"], + 'is_liked': requests.get("https://api.spotify.com/v1/me/tracks/contains?ids=" + currently_playing.json()["item"]["id"], headers=user_headers).json()[0] + } + elif currently_playing.json()["is_playing"] is False: + return { 'name': "Not Playing", + 'is_playing': False + } + else: + return { 'name': "Error", + 'artist': "Error" + } else: - return { 'name': "Error", - 'artist': "Error", - 'album': "Error", - 'image': "Error" + return { 'name': "Not Playing", + 'image': "https://cdn.psychologytoday.com/sites/default/files/styles/article-inline-half-caption/public/field_blog_entry_images/2022-02/pause.png", + 'is_playing': False } @app.route('/control', methods=['POST']) @@ -130,8 +133,10 @@ def control(): if request.form.get('command') == "pause": requests.put("https://api.spotify.com/v1/me/player/pause", headers=user_headers) + return { 'is_playing': False } elif request.form.get('command') == "play": requests.put("https://api.spotify.com/v1/me/player/play", headers=user_headers) + return { 'is_playing': True } elif request.form.get('command') == "next": requests.post("https://api.spotify.com/v1/me/player/next", headers=user_headers) elif request.form.get('command') == "previous": @@ -140,11 +145,19 @@ def control(): requests.put("https://api.spotify.com/v1/me/player/seek?position_ms=0", headers=user_headers) elif request.form.get('command') == "like": requests.put("https://api.spotify.com/v1/me/tracks?ids=" + request.form.get('id'), headers=user_headers) + return { 'is_liked': True } elif request.form.get('command') == "unlike": requests.delete("https://api.spotify.com/v1/me/tracks?ids=" + request.form.get('id'), headers=user_headers) + return { 'is_liked': False } print(request.form.get('command')) return ('', 204) +@app.route('/icons/') +def icons(filename): + return send_from_directory('icons', filename) + + + if __name__ == '__main__': app.run(port=8888, debug=True) \ No newline at end of file diff --git a/templates/webapp.html b/templates/webapp.html index bf1409d..775743a 100644 --- a/templates/webapp.html +++ b/templates/webapp.html @@ -3,7 +3,7 @@ - Updating Value + SpotifyJS - Song Image + + Song Image
-

{{ song_info['name'] }}

-

{{ song_info['artist'] }}

- +

{{ data['name'] }}

+

{{ data['artist'] }}

+

- - - - + + + +