import json, requests, sys
from refresh import Refresh
from datetime import datetime

class Logger(object):
    def __init__(self):
        self.terminal = sys.stdout
        self.log = open("logfile-r.log", "w")

    def write(self, message):
        self.terminal.write(message)
        self.log.write(message)  

sys.stdout = Logger()

now = datetime.now()
date_time = now.strftime("%d/%m/%Y @ %H:%M:%S")
print("Rejects : v31-08-2921:")
print("Run time: " + date_time)

class Rejects:
    def __init__(self):
        self.spotify_user_id = "HDDD-1960"
        self.target_id = ["", "", "", "", "", "", "", "", "", "",]
        self.rejects_id = "7cpxjDv80KozYXqfppnRxi" # REJECTS
        self.target_id[1] = "6p7vLUL9cU84GYNuHl6Ynu" # P:MAIN
        self.target_id[2] = "0TLOG8as8Q3XYHqRpotwuc" # P:BACK
        self.target_id[3] = "0RNGPb2go3AFL9UFfmDciT" # P: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):
        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"])
        self.tracks = self.tracks[:-1]
        self.remove_tracks_from_playlists()

    def remove_tracks_from_playlists(self):
        print("Remove rejected tracks from playlists..")
        tracks_to_delete = []
        tmp_tracks = self.tracks.split(",")
        for i in tmp_tracks:
            tracks_to_delete.append({"uri":i})
        pl = 1
        while pl < 10:
            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 = pl + 1

    def start(self):
        refreshCaller = Refresh()
        self.spotify_token = refreshCaller.refresh()
        self.get_reject_tracks()
    
a = Rejects()
a.start()