| 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 |
|
|
| |
| BASE_URL = 'https://www.qobuz.com/api.json/0.2/' |
| TOKEN = 'yn-HVbPSnrnLazYtBbhTNCHpny-JcyE5LqrHkJnLiv047BJO2SxS_lmDVVN6UnqLv4EvA_5F-lHGY56hIgpfJg' |
| APP_ID = '579939560' |
|
|
| |
| 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() |
|
|
| |
| 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} |
|
|