request / app.py
tecuts's picture
Update app.py
78889fd verified
raw
history blame
1.98 kB
import hashlib
import time
import re
import logging
from fastapi import FastAPI, Request, HTTPException
from fastapi.responses import FileResponse
import tempfile
import os
import requests
# Constants
BASE_URL = 'https://www.qobuz.com/api.json/0.2/'
TOKEN = 'yn-HVbPSnrnLazYtBbhTNCHpny-JcyE5LqrHkJnLiv047BJO2SxS_lmDVVN6UnqLv4EvA_5F-lHGY56hIgpfJg'
APP_ID = '579939560'
# Custom Headers
HEADERS = {
'X-App-Id': APP_ID,
'X-User-Auth-Token': TOKEN,
'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.21) Gecko/20100312 Firefox/3.6'
}
app = FastAPI()
# Define a global temporary download directory
global_download_dir = tempfile.mkdtemp()
os.makedirs(global_download_dir, exist_ok=True)
BASE_URL = "https://tecuts-request.hf.space"
def md5(string):
"""Generate MD5 hash of a string."""
return hashlib.md5(string.encode('utf-8')).hexdigest()
@app.get('/')
def main():
return {"appStatus": "running"}
@app.post('/track')
async def fetch_data_for_url(request: Request):
try:
data = await request.json()
except Exception as e:
logging.error(f"Error parsing JSON: {e}")
raise HTTPException(status_code=400, detail="Invalid JSON")
url = data.get('url')
if not url:
raise HTTPException(status_code=400, detail="URL is required")
print(f'Fetching data for: {url}')
track_id_match = re.search(r'\d+$', url)
if not track_id_match:
print('Track ID not found in your input.')
raise HTTPException(status_code=400, detail="Track ID not found in URL")
track_id = track_id_match.group(0)
timestamp = int(time.time())
rSigRaw = f'trackgetFileUrlformat_id27intentstreamtrack_id{track_id}{timestamp}fa31fc13e7a28e7d70bb61e91aa9e178'
rSig = md5(rSigRaw)
download_url = f'{BASE_URL}track/getFileUrl?format_id=27&intent=stream&track_id={track_id}&request_ts={timestamp}&request_sig={rSig}'
return {"download_url": download_url}