Spaces:
Running
Running
import requests | |
import os | |
from youtube_transcript_api import YouTubeTranscriptApi | |
from youtube_transcript_api.formatters import TextFormatter | |
API_URL = "https://api-inference.huggingface.co/models/SamLowe/roberta-base-go_emotions" | |
headers = {"Authorization": os.getenv('BEARER')} | |
def query(payload): | |
""" | |
Sends a request to the Hugging Face API with the given payload. | |
Args: | |
payload (dict): The payload to send in the request. | |
Returns: | |
dict: The JSON response from the API. | |
""" | |
try: | |
response = requests.post(API_URL, headers=headers, json=payload) | |
response.raise_for_status() # Raise an exception for HTTP errors | |
print(response.json()) | |
return response.json() | |
except requests.exceptions.RequestException as e: | |
return {"error": str(e)} | |
def get_youtube_transcript(video_id): | |
""" | |
Retrieves and formats the transcript of a YouTube video. | |
Args: | |
video_id (str): The ID of the YouTube video. | |
Returns: | |
str: The formatted transcript text truncated to 800 characters. | |
""" | |
try: | |
transcript = YouTubeTranscriptApi.get_transcript(video_id) | |
formatter = TextFormatter() | |
formatted_transcript = formatter.format_transcript(transcript).replace('\r', '').replace('\n', '') | |
# Truncate text to 800 characters to deal with limitations of the model | |
print(formatted_transcript) | |
return formatted_transcript[:800] | |
except Exception as e: | |
return str(e) |