reel2meal / runit.py
jacklangerman's picture
Upload folder using huggingface_hub
f534c35 verified
raw
history blame
3.03 kB
import pyktok as pyk
pyk.specify_browser("chrome") # Specify the browser to use for accessing TikTok
import os
import moviepy.editor as mp
from openai import OpenAI
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
import time
from pathlib import Path
from openai import OpenAI
import os
import argparse
client = OpenAI(
api_key=os.environ.get("OPENAI_API_KEY"),
)
# def download_video(url):
# pyk.save_tiktok(url, save_video=True, filename="tiktok_video.mp4")
def download_video(url, outpath=Path('.')):
pyk.save_tiktok(url, True, str(outpath / 'tiktok_video.mp4'))
print('Downloaded video wait...', end='')
time.sleep(5)
print('Done')
def extract_audio(path):
outpath = Path(path).parent / "tiktok_audio.mp3"
print('Extracting audio...', flush=True)
video = mp.VideoFileClip(path)
video.audio.write_audiofile(str(outpath))
print('Audio extracted', flush=True)
return outpath
# def transcribe_audio():
# model = whisper.load_model("base")
# result = model.transcribe("tiktok_audio.mp3")
# return result["text"]
def transcribe_audio(audio_file_path):
print('sending for transcription...', flush=True)
with open(audio_file_path, 'rb') as audio_file:
transcription = client.audio.transcriptions.create(model="whisper-1", file=audio_file,
response_format="text")
print('Transcription done', flush=True)
return transcription
def format_recipe(transcript):
prompt = f"Please format the following recipe transcript into a nicely formatted recipe:\n\n{transcript}"
response = client.completions.create(engine="text-davinci-003",
prompt=prompt,
max_tokens=500,
n=1,
stop=None,
temperature=0.7)
return response.choices[0].text.strip()
def main():
# tiktok_url = input("Enter the TikTok video URL: ")
# tiktok_url = "https://www.tiktok.com/t/ZTLjYBSpt/"
tiktok_url = "https://www.tiktok.com/@emmaaaaaaam_/video/7348493781961886981"
_, user, _, video_id = tiktok_url.strip('https://').strip('http://').strip('/').split("/")
outpath = Path(video_id)
outpath.mkdir(parents=True, exist_ok=True)
download_video(tiktok_url, outpath)
video_path = [p for p in outpath.parent.rglob('*.mp4') if video_id in p.name][0]
video_path.rename(outpath / video_path.name)
video_path = str(outpath / video_path.name)
audio_path = extract_audio(video_path)
transcript_path = outpath / 'transcript.txt'
if transcript_path.exists():
with transcript_path.open() as f:
transcript = f.read()
else:
transcript = transcribe_audio(audio_path)
with transcript_path.open('w') as f:
f.write(transcript)
formatted_recipe = format_recipe(transcript)
print("Formatted Recipe:")
print(formatted_recipe)
# # Clean up temporary files
# os.remove("tiktok_video.mp4")
# os.remove("tiktok_audio.mp3")
if __name__ == "__main__":
main()