Merge branch 'main' of https://repos.hackathon.bz.it/2025-summer/team-1
This commit is contained in:
commit
58f585b065
6 changed files with 80 additions and 4 deletions
|
@ -2,6 +2,10 @@ FROM python:3.13.5-alpine
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
|
RUN apk update && apk add git
|
||||||
|
|
||||||
|
RUN git clone --depth 1 'https://github.com/yt-dlp/yt-dlp.git' /yt-dlp
|
||||||
|
|
||||||
COPY requirements.txt ./
|
COPY requirements.txt ./
|
||||||
RUN pip install --no-cache-dir -r requirements.txt
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
|
|
||||||
|
|
|
@ -1,2 +1,4 @@
|
||||||
Flask==3.1.0
|
Flask==3.1.0
|
||||||
flask-cors
|
flask-cors
|
||||||
|
dotenv
|
||||||
|
requests
|
|
@ -1,7 +1,14 @@
|
||||||
from flask import Flask, Response, jsonify, request
|
from flask import Flask, Response, jsonify, request
|
||||||
from flask_cors import CORS
|
from flask_cors import CORS
|
||||||
from room import Room
|
|
||||||
from song import init_db
|
import dotenv
|
||||||
|
from .room import Room
|
||||||
|
from .song import init_db
|
||||||
|
|
||||||
|
from . import song_fetch
|
||||||
|
|
||||||
|
dotenv.load_dotenv()
|
||||||
|
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
CORS(app)
|
CORS(app)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
|
|
||||||
from song import Song
|
from .song import Song
|
||||||
|
|
||||||
USER_SCORE_WEIGHT = 0.7
|
USER_SCORE_WEIGHT = 0.7
|
||||||
GENRE_WEIGHT = 0.1
|
GENRE_WEIGHT = 0.1
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from connect import get_connection
|
from .connect import get_connection
|
||||||
|
|
||||||
|
|
||||||
def init_db():
|
def init_db():
|
||||||
|
|
63
backend/src/song_fetch.py
Normal file
63
backend/src/song_fetch.py
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
import requests
|
||||||
|
import urllib.parse
|
||||||
|
import os.path
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
sys.path.append("/yt-dlp")
|
||||||
|
import yt_dlp
|
||||||
|
|
||||||
|
|
||||||
|
def lastfm_search(query: str) -> tuple[str, str]:
|
||||||
|
response = requests.get(
|
||||||
|
url="https://ws.audioscrobbler.com/2.0/?method=track.search&format=json",
|
||||||
|
params={"limit": 5, "track": query, "api_key": os.environ["LASTFM_API_KEY"]},
|
||||||
|
)
|
||||||
|
|
||||||
|
assert response.status_code == 200
|
||||||
|
|
||||||
|
track_info = response.json()["results"]["trackmatches"]["track"][0]
|
||||||
|
|
||||||
|
return track_info["name"], track_info["artist"]
|
||||||
|
|
||||||
|
|
||||||
|
def lastfm_getinfo(
|
||||||
|
name: str, artist: str
|
||||||
|
) -> tuple[str, str, str, str, list[str]]: # ( id, image_id, tags )
|
||||||
|
response = requests.get(
|
||||||
|
url="https://ws.audioscrobbler.com/2.0/?method=track.getInfo&format=json",
|
||||||
|
params={
|
||||||
|
"track": name,
|
||||||
|
"artist": artist,
|
||||||
|
"api_key": os.environ["LASTFM_API_KEY"],
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
track_info = response.json()["track"]
|
||||||
|
|
||||||
|
image_url = urllib.parse.urlparse(track_info["album"]["image"][0]["#text"])
|
||||||
|
|
||||||
|
return (
|
||||||
|
track_info["mbid"],
|
||||||
|
[t["name"] for t in track_info["toptags"]["tag"]],
|
||||||
|
os.path.splitext(os.path.basename(image_url.path))[0],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
print(yt_dlp, flush=True)
|
||||||
|
|
||||||
|
# # def get_yt_mp3link(name: str, artist: str) -> str: ...
|
||||||
|
# # os.popen("/yt-dlp ")
|
||||||
|
|
||||||
|
# # /yt-dlp/yt-dlp.sh "ytsearch1:Never gonna give you up" --get-url -f "ba"
|
||||||
|
|
||||||
|
# import json
|
||||||
|
|
||||||
|
# print(json.dumps(lastfm_getinfo(*lastfm_search("money")), indent=2))
|
||||||
|
# exit(1)
|
||||||
|
|
||||||
|
|
||||||
|
# # def
|
||||||
|
|
||||||
|
|
||||||
|
# ## query ==> lastfm ==> list of songs ==> take first ==> request song info ==> get YT link ==> save in DB ==>
|
Loading…
Add table
Add a link
Reference in a new issue