Spaces:
Build error
Build error
| import gradio as gr | |
| import os | |
| import pandas as pd | |
| from googleapiclient.discovery import build | |
| from transformers import pipeline | |
| # Set up YouTube Data API credentials and initialize | |
| api_key = "AIzaSyBUX6ak7fd2KEh-2aUM_aH26jVEw6Wj5V4" # Replace with your own API key | |
| youtube = build('youtube', 'v3', developerKey=api_key) | |
| # Initialize sentiment analysis pipeline | |
| sentiment_pipeline = pipeline("sentiment-analysis") | |
| def get_video_comments(video_id, max_length=512): | |
| comments = [] | |
| next_page_token = None | |
| while True: | |
| response = youtube.commentThreads().list( | |
| part='snippet', | |
| videoId=video_id, | |
| pageToken=next_page_token if next_page_token else '' | |
| ).execute() | |
| for item in response['items']: | |
| comment = item['snippet']['topLevelComment']['snippet']['textDisplay'] | |
| # Truncate the comment if it exceeds the maximum length | |
| comment = comment[:max_length] | |
| comments.append(comment) | |
| next_page_token = response.get('nextPageToken') | |
| if not next_page_token: | |
| break | |
| return comments | |
| def analyze_sentiment(comments): | |
| if comments: # Ensure there are comments to analyze | |
| results = sentiment_pipeline(comments) | |
| return results | |
| else: | |
| return [] | |
| def process_video(yt_link): | |
| video_id = yt_link.split("=")[-1] # Extract video ID from the link | |
| comments = get_video_comments(video_id) | |
| sentiment_results = analyze_sentiment(comments) | |
| # Create a DataFrame from the comments and sentiment analysis results | |
| df = pd.DataFrame({ | |
| 'Comments': comments, | |
| 'Sentiment': [result['label'] for result in sentiment_results], | |
| 'Score': [result['score'] for result in sentiment_results] | |
| }) | |
| return df | |
| # Define the Gradio interface | |
| iface = gr.Interface( | |
| fn=process_video, | |
| inputs=gr.Textbox(lines=2, placeholder="Enter YouTube video URL here..."), | |
| outputs="dataframe", | |
| title="YouTube Video Comments Sentiment Analysis", | |
| description="Enter a YouTube video link to analyze the sentiment of its comments." | |
| ) | |
| # Launch the interface | |
| iface.launch(share=True) | |