listening-analysis/analysis/net.py

39 lines
1.3 KiB
Python
Raw Normal View History

import os
from typing import List
import pandas as pd
from spotframework.model.track import PlaylistTrack
from spotframework.net.network import Network as SpotNet, NetworkUser
2021-02-01 21:43:27 +00:00
from fmframework.net.network import Network as FMNet
def get_spotnet():
return SpotNet(NetworkUser(client_id=os.environ['SPOT_CLIENT'],
client_secret=os.environ['SPOT_SECRET'],
refresh_token=os.environ['SPOT_REFRESH'])).refresh_access_token()
2021-02-01 21:43:27 +00:00
def get_fmnet():
return FMNet(username='sarsoo', api_key=os.environ['FM_CLIENT'])
playlist_cache = dict() # low-tech caches for repeated pulling
all_playlists = list()
def get_playlist(name: str, spotnet: SpotNet):
global all_playlists
try:
return playlist_cache[name]
except KeyError:
if len(all_playlists) == 0:
all_playlists = spotnet.playlists()
playlist = [i for i in all_playlists if i.name == name][0]
playlist.tracks = spotnet.playlist_tracks(uri=playlist.uri)
playlist_cache[name] = playlist
return playlist
def track_frame(tracks: List[PlaylistTrack]):
return pd.DataFrame(
[
[i.track.name, i.track.artists[0].name]
for i in tracks
],
columns = ["track", "artist"]
)