Created
May 12, 2019 13:50
-
-
Save hmlON/cdcbeeaaf836902c7149c5dcdb23f494 to your computer and use it in GitHub Desktop.
Fetching latest releases from Spotify API
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
sleep_time = 0.1 | |
from spotipy import util | |
token = util.prompt_for_user_token('hello','user-read-email, user-follow-read',client_id='286f256e17b842a49dad8c4a45bd3c5f',client_secret='adb245ed82a0440b8d51641ad5c5c765',redirect_uri='http://0.0.0.0:3000') | |
import requests | |
import time | |
# fetching favorite artists | |
limit = 50 | |
artists_url = f"https://api.spotify.com/v1/me/following?type=artist&limit={limit}&access_token={token}" | |
artists_response = requests.get(artists_url) | |
artists_response.json() | |
artists = [] | |
all_artists_loaded = False | |
url = f"https://api.spotify.com/v1/me/following?type=artist&limit={limit}&access_token={token}" | |
while not all_artists_loaded: | |
time.sleep(sleep_time) | |
response = requests.get(url).json()['artists'] | |
artists += response['items'] | |
if response.get('next'): | |
url = response['next'] + f"&access_token={token}" | |
print(url) | |
else: | |
all_artists_loaded = True | |
# fetching favorite artists' releases | |
releases = [] | |
for artist in artists: | |
current_artist_releases = [] | |
all_releases_loaded = False | |
artist_id = artist['id'] | |
url = f"https://api.spotify.com/v1/artists/{artist_id}/albums?limit={limit}&access_token={token}" | |
while not all_releases_loaded: | |
time.sleep(sleep_time) | |
response = requests.get(url).json() | |
current_artist_releases += response['items'] | |
if response.get('next'): | |
url = response['next'] + f"&access_token={token}" | |
else: | |
all_releases_loaded = True | |
for release in current_artist_releases: | |
full_title = f"{artist['name']} — {release['name']}" | |
release['full_title'] = full_title | |
releases += current_artist_releases | |
# printing latest releases | |
import datetime | |
today = datetime.date.today() | |
year_ago = today - datetime.timedelta(days=365) | |
for release in releases: | |
previous_date = release['release_date'] | |
if type(previous_date) is str and release['release_date_precision'] == 'day': | |
new_date = datetime.datetime.strptime(previous_date, '%Y-%m-%d').date() | |
release['release_date'] = new_date | |
latest_releases = [ | |
release for release in releases | |
if release['release_date_precision'] == 'day' and release['release_date'] > year_ago | |
] | |
latest_releases = sorted(latest_releases, key=lambda release: release['release_date']) | |
for release in latest_releases: | |
date = release['release_date'] | |
title = release['full_title'] | |
print(f"{date}: {title}") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment