|
from Recomendation import recommend_song_interface |
|
import gradio as gr |
|
import requests |
|
|
|
|
|
|
|
def search_youtube(song, artist, api_key): |
|
query = f"{song} by {artist}" |
|
search_url = "https://www.googleapis.com/youtube/v3/search" |
|
params = { |
|
'part': 'snippet', |
|
'q': query, |
|
'type': 'video', |
|
'maxResults': 1, |
|
'key': api_key |
|
} |
|
|
|
response = requests.get(search_url, params=params) |
|
response_json = response.json() |
|
|
|
if 'items' in response_json and response_json['items']: |
|
video_id = response_json['items'][0]['id']['videoId'] |
|
youtube_link = f"https://www.youtube.com/watch?v={video_id}" |
|
return youtube_link |
|
else: |
|
return "No se encontraron resultados." |
|
|
|
def add_youtube_links(recommendations, api_key): |
|
recommendations_with_links = [] |
|
for recommendation in recommendations: |
|
if recommendation: |
|
song, artist = recommendation.split(" by ") |
|
youtube_link = search_youtube(song, artist, api_key) |
|
recommendations_with_links.append(f"{recommendation} - YouTube Link: {youtube_link}") |
|
else: |
|
recommendations_with_links.append("") |
|
|
|
return recommendations_with_links |
|
|
|
def recommend_with_youtube_links(song_name, artist_name): |
|
api_key = "AIzaSyAp-D7Mfafd6gJQo2gtAXRXwDlG8_uNXnU" |
|
recommendations = recommend_song_interface(song_name, artist_name) |
|
recommendations_with_links = add_youtube_links(recommendations, api_key) |
|
return recommendations_with_links |
|
|
|
|
|
iface = gr.Interface( |
|
fn=recommend_with_youtube_links, |
|
inputs=[ |
|
gr.Textbox(placeholder="Ingrese el t铆tulo de la canci贸n", label="T铆tulo de la Canci贸n"), |
|
gr.Textbox(placeholder="Ingrese el nombre del artista", label="Nombre del Artista") |
|
], |
|
outputs=[ |
|
gr.Text(label="Recomendaci贸n 1"), |
|
gr.Text(label="Recomendaci贸n 2"), |
|
gr.Text(label="Recomendaci贸n 3"), |
|
gr.Text(label="Recomendaci贸n 4"),], |
|
title="Recomendador de Canciones con Enlaces de YouTube", |
|
description="Ingrese el t铆tulo de una canci贸n y el nombre del artista.", |
|
theme="dark", |
|
css=""" |
|
body {font-family: Arial, sans-serif;} |
|
.input_text {background-color: #f0f0f0; border-radius: 5px;} |
|
.output_text {border: 2px solid #f0f0f0; border-radius: 5px; padding: 10px;} |
|
""" |
|
) |
|
|
|
iface.launch() |
|
|