import json, requests
from refresh import Refresh
# Rejects v04 FEB 2022')

class Rejects:
    def __init__(self):
        self.spotify_user_id = ' '
        self.target_id = [0] * 14
        self.rejects_id = ' '     # REJECTS - 
        self.target_id[1] = ' '   # URI #1
        self.target_id[2] = ' '   # URI #2
        self.target_id[3] = ' '   # URI #3
        self.target_id[4] = ' '   # URI #4
        self.target_id[5] = ' '   # URI  #5
        self.target_id[6] = ' '   #  FEED
        self.target_id[7] = ' '   #  BACK
        self.target_id[8] = ' '   # 1960
        self.target_id[9] = ' '   # 1970
        self.target_id[10] = ' '  # 1980
        self.target_id[11] = ' '  # 1990
        self.target_id[12] = ' '  # 2000
        self.target_id[13] = ' '  # 2010
       self.tracks = ''
        self.spotify_token = '' 

    def get_reject_tracks(self):
        tks = 0
        print('[01] REJECTED tracks to remove from Spotify library:')
        query = 'https://api.spotify.com/v1/playlists/{}/tracks'.format(self.rejects_id)
        response = requests.get(query,headers={'Content-Type':'application/json','Authorization':'Bearer {}'.format(self.spotify_token)},params={'limit':50})
        response_json = response.json()
        for i in response_json['items']:
            self.tracks += i['track']['uri'] + ','
            print(i['track']['name'])
            tks = tks + 1
        self.tracks = self.tracks[:-1]

        if tks < 1:
            print('No tracks in REJECTS.')
            print('')
            return
        self.remove_tracks_from_playlists()

    def remove_tracks_from_playlists(self):
        tracks_to_delete = []
        tmp_tracks = self.tracks.split(',')
        for i in tmp_tracks:
            tracks_to_delete.append({'uri':i})
        pl = 1
        pl_num = ''
        while pl < 14:
            plid = self.target_id[pl]
            query = 'https://api.spotify.com/v1/playlists/{}/tracks'.format(plid)
            response = requests.request('delete', url=query, headers={'Content-type': 'application/json','Authorization':'Bearer {}'.format(self.spotify_token)}, data=json.dumps({'tracks': tracks_to_delete}))
            pl_num = str(pl) + ', '
            ## print(pl_num, end='')
            pl = pl + 1
        ## print(' playlists cleaned.')
        print('[Tracks can now be reviewed, Unliked & removed from REJECTS]')
        print('')

    def start(self):
        refreshCaller = Refresh()
        self.spotify_token = refreshCaller.refresh()
        self.get_reject_tracks()
    
a = Rejects()
a.start()