Spaces:
Sleeping
Sleeping
File size: 2,703 Bytes
559513f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
import gradio as gr
import os
from tweet_analyzer import TweetDatasetProcessor
from dotenv import load_dotenv
load_dotenv()
class TwitterCloneApp:
def __init__(self):
self.processor = None
def process_upload(self, file):
"""Process uploaded PDF file and analyze personality"""
try:
self.processor = TweetDatasetProcessor()
text = self.processor.extract_text_from_pdf(file.name)
df = self.processor.process_pdf_content(text)
personality_analysis = self.processor.analyze_personality()
return f"Processed {len(df)} tweets\n\nPersonality Analysis:\n{personality_analysis}"
except Exception as e:
return f"Error processing file: {str(e)}"
def generate_tweet(self, context):
"""Generate a new tweet based on the analyzed personality"""
if not self.processor:
return "Please upload and analyze a dataset first."
try:
tweet = self.processor.generate_tweet(context)
return tweet
except Exception as e:
return f"Error generating tweet: {str(e)}"
def create_interface(self):
"""Create the Gradio interface"""
with gr.Blocks(title="Twitter Personality Cloner") as interface:
gr.Markdown("# Twitter Personality Cloner")
gr.Markdown("Upload a PDF file containing tweets to analyze the author's personality and generate new tweets in their style.")
with gr.Tab("Analyze Personality"):
file_input = gr.File(label="Upload PDF Dataset", file_types=[".pdf"])
analyze_button = gr.Button("Analyze Dataset")
analysis_output = gr.Textbox(label="Analysis Results", lines=10)
analyze_button.click(
fn=self.process_upload,
inputs=file_input,
outputs=analysis_output
)
with gr.Tab("Generate Tweets"):
context_input = gr.Textbox(label="Context (optional)", placeholder="Enter topic or context for the tweet")
generate_button = gr.Button("Generate Tweet")
tweet_output = gr.Textbox(label="Generated Tweet")
generate_button.click(
fn=self.generate_tweet,
inputs=context_input,
outputs=tweet_output
)
return interface
def main():
app = TwitterCloneApp()
interface = app.create_interface()
interface.launch(share=True)
if __name__ == "__main__":
main() |