Spaces:
Runtime error
Runtime error
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 |