import csv import re from datetime import datetime from gradio_client import Client import requests import os # Giphy API details API_KEY = "KzPlVn6nz6czmjWpPEy6reL52r1H5gs7" SEARCH_URL = "https://api.giphy.com/v1/gifs/search" # Initialize the client with the correct Hugging Face Space client = Client("Abu1998/Meme_finder") print(client) # Add this line to verify the client object def generate_script(user_input): # Define the system message and input sentence print("Generating script for:", user_input) # Add this line to verify the function call # ... rest of the function ... system_message = """Task: Act as a YouTube Shorts content writer. Objective: Create engaging, catchy, and trendy scripts for YouTube Shorts videos that are brief, attention-grabbing, and optimized for viral potential. Guidelines: Each script should be 15-30 seconds long. Use a hook in the first few seconds to capture viewers' attention. Ensure the content is aligned with trending topics, challenges, or popular culture. Incorporate humor, relatable scenarios, or strong emotions to resonate with the audience. End with a clear call-to-action (CTA) like “Follow for more!” or a cliffhanger. Example Flow: User Input: “Write a script about the Monday blues.” AI Output: Script: "POV: It’s Monday morning, and you’re already done with the week. [Clip shows someone groggily hitting the snooze button, dragging themselves out of bed]. But wait… there’s coffee. And suddenly, everything’s okay! ☕✨ [Cut to a quick burst of energy with upbeat music]. If you’re just surviving till the weekend, hit that follow button for more relatable vibes!" """ # Make the API call with the specified parameters result = client.predict( message=user_input, system_message=system_message, max_tokens=512, temperature=0.7, top_p=0.95, api_name="/chat" ) # Extract the script from the result script = result.strip() # Function to split script into words def split_into_words(script_text): words = re.findall(r'\w+', script_text) # Find all words return words # Convert the script to a list of words words = split_into_words(script) # Create download directory if it doesn't exist DOWNLOAD_DIR = '/content/memes2' os.makedirs(DOWNLOAD_DIR, exist_ok=True) # Download GIFs for each word for index, word in enumerate(words): params = { 'api_key': API_KEY, 'q': word, 'limit': 1 } response = requests.get(SEARCH_URL, params=params) data = response.json() if data['data']: gif_url = data['data'][0]['images']['original']['url'] gif_response = requests.get(gif_url) filename = f"{index}.gif" filepath = os.path.join(DOWNLOAD_DIR, filename) with open(filepath, 'wb') as f: f.write(gif_response.content) print(f"Downloaded GIF for '{word}' as '{filename}'") return script