Amazing-Python-Scripts

Форк
0
83 строки · 2.8 Кб
1
import pandas as pd
2
import spotipy
3
import config
4
# To access authorised Spotify data
5
from spotipy.oauth2 import SpotifyClientCredentials
6

7
client_id = config.client_id
8
client_secret = config.secret_key
9

10
client_credentials_manager = SpotifyClientCredentials(
11
    client_id=client_id, client_secret=client_secret)
12
# spotify object to access API
13
sp = spotipy.Spotify(client_credentials_manager=client_credentials_manager)
14
name = input("Enter Artist Name: ")  # chosen artist
15
result = sp.search(name)  # search query
16
artist_uri = ''
17
for row in result['tracks']['items'][0]['artists']:
18
    if name.lower() in row['name'].lower():
19
        artist_uri = row['uri']
20
        break
21

22
# Pull all of the artist's albums
23
sp_albums = sp.artist_albums(artist_uri, album_type='album')
24
# Store artist's albums' names' and uris in separate lists
25

26
album_names = []
27
album_uris = []
28
for i in range(len(sp_albums['items'])):
29
    album_names.append(sp_albums['items'][i]['name'])
30
    album_uris.append(sp_albums['items'][i]['uri'])
31

32

33
def albumSongs(uri):
34
    album = uri  # assign album uri to a_name
35
    spotify_albums[album] = {}  # Creates dictionary for that specific album
36
    # Create keys-values of empty lists inside nested dictionary for album
37
    spotify_albums[album]['album'] = []  # create empty list
38
    spotify_albums[album]['track_number'] = []
39
    spotify_albums[album]['id'] = []
40
    spotify_albums[album]['name'] = []
41
    spotify_albums[album]['uri'] = []
42
    tracks = sp.album_tracks(album)  # pull data on album tracks
43
    for n in range(len(tracks['items'])):  # for each song track
44
        # append album name tracked via album_count
45
        spotify_albums[album]['album'].append(album_names[album_count])
46
        spotify_albums[album]['track_number'].append(
47
            tracks['items'][n]['track_number'])
48
        spotify_albums[album]['id'].append(tracks['items'][n]['id'])
49
        spotify_albums[album]['name'].append(tracks['items'][n]['name'])
50
        spotify_albums[album]['uri'].append(tracks['items'][n]['uri'])
51

52

53
spotify_albums = {}
54
album_count = 0
55
for i in album_uris:  # each album
56
    albumSongs(i)
57
    album_count += 1  # Updates album count once all tracks have been added
58

59

60
def popularity(album):
61
    spotify_albums[album]['popularity'] = []
62
    track_count = 0
63
    for track in spotify_albums[album]['uri']:
64
        pop = sp.track(track)
65
        spotify_albums[album]['popularity'].append(pop['popularity'])
66
        track_count += 1
67

68

69
for i in spotify_albums:
70
    popularity(i)
71

72
dic_df = {}
73
dic_df['name'] = []
74
dic_df['popularity'] = []
75
for album in spotify_albums:
76
    for feature in ['name', 'popularity']:
77
        dic_df[feature].extend(spotify_albums[album][feature])
78

79
df = pd.DataFrame.from_dict(dic_df)
80

81
final_df = df.sort_values('popularity', ascending=False)
82
pd.set_option("display.max_rows", None, "display.max_columns", None)
83
print(final_df)
84

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.