# ntp.ReleaseRadar
# https://open.spotify.com/playlist/3Px6Qe12qrEltV1r6AKvec?si=d740d824248a4f9a

import spotipy
from spotipy.oauth2 import SpotifyOAuth
import re


class ModuleSpotify:
    # track_uri = "https://open.spotify.com/intl-de/track/1Hig7RNxPMrYZ9aN5lZtAd?si=a9a85b60cd444f2b"

    def __init__(self, send, client_id, client_secret, redirect_uri, log):
        self.tag = "%20s - " % "mSpotify"
        self.log = log
        self.send = send
        scope = "playlist-modify-public"
        self.playlist_id = "1KpS9GIl23CPmTxJrBh6iD"
        username = "usatas"

        self.sp = spotipy.Spotify(
            auth_manager=SpotifyOAuth(
                client_id=client_id,
                client_secret=client_secret,
                redirect_uri=redirect_uri,
                scope=scope,
                username=username,
            )
        )
        self.log.debug(f"{self.tag}Modul Spotify geladen")

    # https://open.spotify.com/intl-de/track/1Hig7RNxPMrYZ9aN5lZtAd?si=f084120527084c1b
    def add_song_to_playlist(self, song_msg):
        song_uri = "spotify:track:"

        match = re.search(r"\/([a-zA-Z0-9]+)\?", song_msg)
        if not match:
            return "Nope - invalid song URL!"

        song_uri += match.group(1)
        self.sp.playlist_add_items(
            playlist_id=self.playlist_id, items=[song_uri]
        )  # TODO Abfragen ob der song schon drin ist
        return "song added to https://open.spotify.com/playlist/1KpS9GIl23CPmTxJrBh6iD?si=6b384ff854574269"

    # http://localhost:8080/?code=AQCWMXelx3cI0aH5O0s0XtG-NY1ogpwC2sQbb6nN4mwStY1irihYEYBRC13g0WBNLN8fxg5eBiS0B2jl_c9X5XHVoGs6nAAUV4A1le0jFx7FcCGqBBHndOZMnbrmQ6LFsY4TicHnvm0SgIr-gjOmcwxt0kXsCu8L9w&state=playlist-modify-public