import json, requests
from refresh import Refresh
## Rejects v.03.03.2022')

class Rejects:
    def __init__(self):
        self.spotify_user_id = 'HDDD-1960'
        self.target_id = [0] * 10
        self.rejects_id = '7cpxjDv80KozYXqfppnRxi'    # REJECTS
        self.target_id[1] = '2Vf39YBmzgsvjjMVpmn7YA'  # BACKUP
        self.target_id[2] = '0ESxAs9DeVcv4YWIsrP5F2'  # MASTER
        self.target_id[3] = '0ccrjcQque7jSDQaWC3eFg'  # ENDLESS QUEUE
        self.target_id[4] = '3hMfIGo7Y3abWNId3IugJ7'  # 1960
        self.target_id[5] = '6Nzv5sBiVjNqh3m76XsezI'  # 1970
        self.target_id[6] = '1oD11mQlG8hrHj8fq0AmLx'  # 1980
        self.target_id[7] = '7ad11Wj1CfPVnyhvPMm7ho'  # 1990
        self.target_id[8] = '26d113TbMr8DSjEtmA9oMP'  # 2000
        self.target_id[9] = '1XTaITeBfJScGeY0HIU1Zg'  # 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 < 9:
            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()