Compare commits

..

No commits in common. "45945732c955157071b63f4a94f4c779d31e6f46" and "e168b6f2df46b061c15588dd0d0ddad70fb2b489" have entirely different histories.

3 changed files with 36 additions and 30 deletions

View File

@ -18,23 +18,13 @@ class PlaylistUpdater:
def _update_tracks(self):
self._tracks = []
headers = { 'Authorization': f"Bearer {self._auth_token}" }
rnext = f"{self._spotify_api_endpoint}/me/tracks?limit=50"
while rnext is not None:
r = self._fetch(rnext);
r = rq.get(rnext, headers = headers).json()
self._tracks += r['items']
rnext = r['next']
def _fetch(self, url):
headers = { 'Authorization': f"Bearer {self._auth_token}" }
while True:
r = rq.get(f"{url}", headers=headers)
if 200 <= r.status_code <= 299:
return r.json()
# slow down if spotify is applying rate limiting
if r.status_code == 429:
time.sleep(30)
# don't try again in a crazy fast loop to avoid rate limits
time.sleep(1)
def update_playlist(self, playlist_id):
pltracks = []
@ -44,12 +34,12 @@ class PlaylistUpdater:
headers = { 'Authorization': f"Bearer {self._auth_token}" }
added_at_dict = {}
r = self._fetch(f"{self._spotify_api_endpoint}/playlists/{playlist_id}?fields=tracks,snapshot_id")
r = rq.get(f"{self._spotify_api_endpoint}/playlists/{playlist_id}?fields=tracks,snapshot_id", headers = headers).json()
snapshot_id = r['snapshot_id']
pltracks = [t['track']['id'] for t in r['tracks']['items']]
rnext = r['tracks']['next']
while rnext is not None:
r = self._fetch(rnext)
r = rq.get(rnext, headers = headers).json()
for track in r['items']:
pltracks.append(track['track']['id'])
rnext = r['next']

View File

@ -0,0 +1,32 @@
version: '3.9'
services:
web:
hostname: heartbeats-web
build:
context: .
dockerfile: ./web/Dockerfile
restart: unless-stopped
ports:
- 8464:80
environment:
- CLIENT_ID=${CLIENT_ID}
- CLIENT_SECRET=${CLIENT_SECRET}
- BASE_URL=http://localhost:8464
redis:
hostname: heartbeats-redis
image: redis
restart: unless-stopped
volumes:
- './redis-data:/data'
populater:
hostname: heartbeats-populater
build:
context: .
dockerfile: ./populater/Dockerfile
restart: unless-stopped
environment:
- CLIENT_ID=${CLIENT_ID}
- CLIENT_SECRET=${CLIENT_SECRET}

View File

@ -1,16 +0,0 @@
# :musical_note: heartbeats :saxophone:
> Maintain a (potentially) public list of your recently liked songs so people know how cool you are
# Setup
0. Create a spotify developer account and create a new app
0. Create a `.env` file with your spotify secrets:
```
CLIENT_ID=<client_id>
CLIENT_SECRET=<client_secret>
```
0. Run `docker compose up -d` to start