.audio resampler

This commit is contained in:
afkarxyz
2026-03-25 17:24:38 +07:00
parent 45885e1856
commit 0e6b6f9d39
8 changed files with 1204 additions and 2 deletions
+245
View File
@@ -0,0 +1,245 @@
import requests
import re
from bs4 import BeautifulSoup
URL = "https://www.isrcfinder.com/"
SPOTIFY_URI = "https://open.spotify.com/track/1CPZ5BxNNd0n0nF4Orb9JS"
HEADERS = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
"Referer": "https://www.isrcfinder.com/",
"Origin": "https://www.isrcfinder.com",
}
# ─────────────────────────────────────────────
# PRIMARY: isrcfinder.com
# ─────────────────────────────────────────────
def get_csrf_token(session):
"""Ambil CSRF token secara dinamis dari halaman GET."""
print("[*] Mengambil CSRF token dari halaman...")
response = session.get(URL, headers=HEADERS)
response.raise_for_status()
soup = BeautifulSoup(response.text, "html.parser")
csrf_input = soup.find("input", {"name": "csrfmiddlewaretoken"})
if csrf_input:
token = csrf_input["value"]
print(f" CSRF token (HTML) : {token}")
return token
token = session.cookies.get("csrftoken")
if token:
print(f" CSRF token (cookie): {token}")
return token
raise ValueError("CSRF token tidak ditemukan!")
def find_isrc_primary(session, csrf_token):
"""Kirim POST request ke isrcfinder.com dan ekstrak ISRC."""
print(f"\n[*] [PRIMARY] isrcfinder.com — URI: {SPOTIFY_URI}")
headers = {
**HEADERS,
"Content-Type": "application/x-www-form-urlencoded",
}
payload = {
"csrfmiddlewaretoken": csrf_token,
"URI": SPOTIFY_URI,
}
response = session.post(URL, headers=headers, data=payload)
print(f" Status POST : {response.status_code}")
print(f" URL akhir : {response.url}")
isrc_pattern = re.compile(r'[A-Z]{2}[A-Z0-9]{3}\d{7}')
isrc_matches = list(set(isrc_pattern.findall(response.text)))
if isrc_matches:
print(f"[+] [PRIMARY] ISRC ditemukan: {isrc_matches}")
else:
print("[-] [PRIMARY] ISRC tidak ditemukan.")
return isrc_matches
# ─────────────────────────────────────────────
# FALLBACK 1: phpstack (Cloudways)
# ─────────────────────────────────────────────
def find_isrc_fallback1():
"""
GET https://phpstack-822472-6184058.cloudwaysapps.com/api/spotify.php
Response JSON: { "isrc": "...", "name": "...", ... }
"""
print("\n[*] [FALLBACK 1] phpstack Cloudways API...")
encoded_uri = requests.utils.quote(SPOTIFY_URI, safe="")
url = f"https://phpstack-822472-6184058.cloudwaysapps.com/api/spotify.php?q={encoded_uri}"
headers = {
"User-Agent": HEADERS["User-Agent"],
"Referer": "https://phpstack-822472-6184058.cloudwaysapps.com/?",
}
try:
response = requests.get(url, headers=headers, timeout=10)
print(f" Status GET : {response.status_code}")
data = response.json()
isrc = data.get("isrc")
if isrc:
print(f"[+] [FALLBACK 1] ISRC ditemukan: {isrc}")
return [isrc]
print(f"[-] [FALLBACK 1] ISRC tidak ada di response: {data}")
return []
except Exception as e:
print(f"[!] [FALLBACK 1] Error: {e}")
return []
# ─────────────────────────────────────────────
# FALLBACK 2: findmyisrc.com (AWS API Gateway)
# ─────────────────────────────────────────────
def find_isrc_fallback2():
"""
POST https://lxtzsnh4l3.execute-api.ap-southeast-2.amazonaws.com/prod/find-my-isrc
Payload: { "uris": ["<spotify_url>"] }
Response: [{ "type": "track", "data": { "isrc": "..." } }]
"""
print("\n[*] [FALLBACK 2] findmyisrc.com (AWS API Gateway)...")
url = "https://lxtzsnh4l3.execute-api.ap-southeast-2.amazonaws.com/prod/find-my-isrc"
headers = {
"User-Agent": HEADERS["User-Agent"],
"Content-Type": "application/json",
"Origin": "https://www.findmyisrc.com",
"Referer": "https://www.findmyisrc.com/",
}
payload = {"uris": [SPOTIFY_URI]}
try:
response = requests.post(url, headers=headers, json=payload, timeout=10)
print(f" Status POST : {response.status_code}")
data = response.json()
isrc_list = []
for item in data:
isrc = item.get("data", {}).get("isrc")
if isrc:
isrc_list.append(isrc)
if isrc_list:
print(f"[+] [FALLBACK 2] ISRC ditemukan: {isrc_list}")
else:
print(f"[-] [FALLBACK 2] ISRC tidak ada di response: {data}")
return isrc_list
except Exception as e:
print(f"[!] [FALLBACK 2] Error: {e}")
return []
# ─────────────────────────────────────────────
# FALLBACK 3: mixviberecords.com
# ─────────────────────────────────────────────
def find_isrc_fallback3():
"""
POST https://tools.mixviberecords.com/api/find-isrc
Payload: { "url": "<spotify_url>" }
Response JSON contains: { "external_ids": { "isrc": "..." } }
"""
print("\n[*] [FALLBACK 3] mixviberecords.com...")
url = "https://tools.mixviberecords.com/api/find-isrc"
headers = {
"User-Agent": HEADERS["User-Agent"],
"Content-Type": "application/json",
"Origin": "https://tools.mixviberecords.com",
"Referer": "https://tools.mixviberecords.com/isrc-finder",
}
payload = {"url": SPOTIFY_URI}
try:
response = requests.post(url, headers=headers, json=payload, timeout=10)
print(f" Status POST : {response.status_code}")
data = response.json()
# Navigasi ke external_ids.isrc (bisa nested dalam berbagai struktur)
isrc = None
if isinstance(data, dict):
isrc = (
data.get("external_ids", {}).get("isrc")
or data.get("isrc")
)
# Coba cari rekursif satu level lebih dalam
if not isrc:
for val in data.values():
if isinstance(val, dict):
isrc = val.get("external_ids", {}).get("isrc") or val.get("isrc")
if isrc:
break
if not isrc:
# Fallback regex pada raw text jika JSON tidak sesuai ekspektasi
isrc_pattern = re.compile(r'[A-Z]{2}[A-Z0-9]{3}\d{7}')
matches = list(set(isrc_pattern.findall(response.text)))
if matches:
isrc = matches[0]
if isrc:
print(f"[+] [FALLBACK 3] ISRC ditemukan: {isrc}")
return [isrc]
print(f"[-] [FALLBACK 3] ISRC tidak ada di response: {data}")
return []
except Exception as e:
print(f"[!] [FALLBACK 3] Error: {e}")
return []
# ─────────────────────────────────────────────
# MAIN — jalankan berurutan, berhenti jika berhasil
# ─────────────────────────────────────────────
def main():
isrc_list = []
# PRIMARY
with requests.Session() as session:
try:
csrf_token = get_csrf_token(session)
isrc_list = find_isrc_primary(session, csrf_token)
except Exception as e:
print(f"[!] [PRIMARY] Gagal: {e}")
# FALLBACK 1
if not isrc_list:
isrc_list = find_isrc_fallback1()
# FALLBACK 2
if not isrc_list:
isrc_list = find_isrc_fallback2()
# FALLBACK 3
if not isrc_list:
isrc_list = find_isrc_fallback3()
# Hasil akhir
print(f"\n{'='*40}")
if isrc_list:
print(f" Hasil ISRC: {', '.join(isrc_list)}")
else:
print(" Semua sumber gagal. ISRC tidak ditemukan.")
print(f"{'='*40}")
if __name__ == "__main__":
main()