Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| from langchain.document_loaders import YoutubeLoader | |
| def process_youtube_url(url, language): | |
| try: | |
| loader = YoutubeLoader.from_youtube_url( | |
| youtube_url=url, | |
| add_video_info=True, | |
| language=[language], | |
| ) | |
| docs = loader.load() | |
| return str(docs), [], "" | |
| except Exception as e: | |
| error_msg = str(e) | |
| available_languages = extract_available_languages(error_msg) | |
| recommended_language = extract_recommended_language(error_msg) | |
| return f"Error: {error_msg}", available_languages, recommended_language | |
| def extract_available_languages(error_msg): | |
| languages = [] | |
| generated_section = False | |
| for line in error_msg.split("\n"): | |
| if line.startswith("(GENERATED)"): | |
| generated_section = True | |
| elif generated_section and line.startswith(" - "): | |
| lang_code, lang_name = line[3:].split(" (", 1) | |
| languages.append(f"{lang_name[:-1]} ({lang_code})") | |
| return languages | |
| def extract_recommended_language(error_msg): | |
| generated_section = False | |
| for line in error_msg.split("\n"): | |
| if line.startswith("(GENERATED)"): | |
| generated_section = True | |
| elif generated_section and line.startswith(" - ") and "[TRANSLATABLE]" in line: | |
| lang_code, lang_name = line[3:].split(" (", 1) | |
| return f"{lang_name[:-1]} ({lang_code})" | |
| return "" | |
| iface = gr.Interface( | |
| fn=process_youtube_url, | |
| inputs=[ | |
| gr.Textbox(label="YouTube URL", placeholder="https://youtu.be/example"), | |
| gr.Dropdown(label="Language", choices=["en", "ja", "fr","de","it"],allow_custom_value=True), | |
| ], | |
| outputs=[ | |
| gr.Textbox(label="Loaded Documents / Error Message",show_copy_button=True), | |
| gr.Dropdown(label="Available Languages"), | |
| gr.Textbox(label="Recommended Language") | |
| ], | |
| title="YouTube Transcript Loader", | |
| description="Enter a YouTube URL and select the language to load the transcript using LangChain's YoutubeLoader.[buy me a coffee](https://www.buymeacoffee.com/regulusle04)", | |
| ) | |
| if __name__ == "__main__": | |
| iface.launch() |