from flask import Flask,render_template,Markup
from flask_cors import CORS
import requests,os

os.makedirs('lyrics_cache', exist_ok=True)

app = Flask(__name__)
CORS(app)

def getLyricsFromApple(songID):
    url = 'https://amp-api.music.apple.com/v1/catalog/us/songs/'+str(songID)+'/lyrics'

    headers = {
        'authority': 'amp-api.music.apple.com',
        'accept': '*/*',
        'accept-language': 'en-US,en;q=0.9',
        'authorization': 'Bearer eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IldlYlBsYXlLaWQifQ.eyJpc3MiOiJBTVBXZWJQbGF5IiwiaWF0IjoxNzAyNTAyMjM0LCJleHAiOjE3MDk3NTk4MzQsInJvb3RfaHR0cHNfb3JpZ2luIjpbImFwcGxlLmNvbSJdfQ.zzeMLmez71PLinP9GozYSQnF7NYyCiXHB9tKL3-cyu3LzyeRnYz0ejLj4CrNJs0dlNkFg9_mwKmMLueUAR-KRg',
        'cache-control': 'no-cache',
        'dnt': '1',
        'media-user-token': 'ApmLyZFX89FHMXFbqrN0VYC2SW7jAm/Jdw27f+F38tHkZsFPWDfx96wMuPL1/jGSZiVxRLL5taG9cqt9OuLRYbq122Art4fev1o/5/uCjA9aMNFUyQum/2U+sHJAO8feCmTJqUCxSoA4mveORBiIqtyOBgkUh1xVxInJlyn3GFNpAgYmrJ+ivWQuS+f1rPH4u1OnLg/OddSY8erHwF7/C7zwUkacqFaHHhW9u/eZ9UU8nl543A==',
        'origin': 'https://music.apple.com'
    }

    if os.path.exists('lyrics_cache/'+str(songID)+'.ttml'):
        with open('lyrics_cache/'+str(songID)+'.ttml', 'r') as file:
            result = file.read()
        return result
    else:
        response = requests.get(url, headers=headers)
        result = response.json()["data"][0]["attributes"]["ttml"]
        result = result.replace('"','\\"')
        if response.status_code == 200:
            with open('lyrics_cache/'+str(songID)+'.ttml', 'w') as file:
                file.write(result)
        return result

@app.route('/<int:songID>')
def song(songID):
    try:
        ttml = getLyricsFromApple(songID)
        ttml = Markup(ttml)
    except:
        return render_template('index.html')
    return render_template('lyricsBasic.html', ttml=ttml)

@app.route('/ui/<int:songID>')
def songUI(songID):
    try:
        ttml = getLyricsFromApple(songID)
        ttml = Markup(ttml)
    except:
        return render_template('index.html')
    return render_template('lyricsUi.html', songId=songID)

@app.route("/api/getLyrics/<int:songID>")
def api(songID):
    try:
        ttml = getLyricsFromApple(songID)
    except:
        return "Error"
    return ttml

@app.route('/')
def index():
    return render_template('index.html')

if __name__ == '__main__':
    app.run(host="0.0.0.0",port=5500)