Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save Adam-s-tech/b924b7a3c586662342e9b639597ae3e9 to your computer and use it in GitHub Desktop.
Save Adam-s-tech/b924b7a3c586662342e9b639597ae3e9 to your computer and use it in GitHub Desktop.
import re
import json
from tqdm import tqdm
from time import sleep
from openai import OpenAI
import openai
# Configurez votre clé API OpenAI
openai_api_key = '<ta-clef-openai>' # Remplacez par votre clé API OpenAI
client = OpenAI(api_key=openai_api_key)
def openai_json_gen(task, model="gpt-4o-mini"):
valid = False
messages = [
{"role": "system", "content": "Tu es un assistant utile"},
{"role": "user", "content": task}
]
data = {}
while not valid:
try:
response = client.chat.completions.create(
model=model,
response_format={"type": "json_object"},
messages=messages,
)
data = json.loads(response.choices[0].message.content)
valid = True
except openai.APIError as e:
print(f"OpenAI API returned an API Error: {e}")
sleep(10)
except openai.AuthenticationError as e:
print(f"OpenAI API request was not authorized: {e}")
return None
except openai.RateLimitError as e:
print(f"OpenAI API request exceeded rate limit: {e}")
model = "gpt-3.5-turbo"
sleep(360)
except Exception as e:
print(f"An exception occurred: {type(e).__name__}: {e}")
sleep(1)
return data
# Fonction pour traduire et mettre en forme le texte en utilisant l'API ChatGPT
def translate_and_format_text(text):
prompt = (
f"Ton but est de mettre en forme un transcript de vidéo youtube. "
f"Si ce transcript est en anglais, tu le ré-écriras en français. "
f"Si il manque des mots ou si le transcript est mal écris tu le ré-écriras proprement.\n\n"
f"Voici le transcript : '{text}'\n\n"
f"Tu me donneras ta réponse en JSON, qui sera un dictionnaire avec une seule clef 'result', qui contiendra le transcript mis en forme."
)
while True:
result = openai_json_gen(prompt)
if 'result' in result and isinstance(result['result'], str):
result = result['result']
break
return result
# Lire le contenu du fichier
with open('final_output.txt', 'r', encoding='utf-8') as file:
content = file.read()
# Diviser le contenu en blocs de texte basés sur les liens vidéo YouTube
blocks = re.split(r'(https://www\.youtube\.com/watch\?v=[^\s]+)', content)
# Initialiser la barre de progression
progress_bar = tqdm(total=len(blocks) // 2, desc='Traitement des transcripts', unit='bloc')
# Réécrire le fichier avec le contenu traduit en français
with open('final_output_translated.txt', 'w', encoding='utf-8') as file:
for i in range(1, len(blocks), 2):
link = blocks[i]
text = blocks[i + 1].strip() if i + 1 < len(blocks) else ""
# Vérifier si le bloc de texte n'est pas vide
if text:
try:
# Traduire et mettre en forme le texte
translated_text = translate_and_format_text(text)
except Exception as e:
# En cas d'erreur, on peut gérer l'exception ici
print(f"Erreur lors de la traduction : {e}")
translated_text = text # Utiliser le texte original en cas d'erreur
# Écrire le lien et le texte (traduit et mis en forme) dans le fichier
file.write(f"{link}\n{translated_text}\n")
# Mettre à jour la barre de progression
progress_bar.update(1)
# Fermer la barre de progression
progress_bar.close()
print("Le fichier a été traduit et réécrit avec succès.")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment