Pubié le

Êtes-vous à court d'idées ?

Authors

Comment trouver des idées interessantes à traiter ?

Parfois les idées fussent, l'impression d'être submergé à ne plus quoi savoir choisir.

Parfois c'est le vide. L'angoisse de la page blanche.

Dans ce balancement permanent entre trop-plein et pénurie, une constante demeure : l'écoute.

Quoi de mieux que de s'en remettre à ceux qui attendent nos idées ? Les auditeurs, les spectateurs, les lecteurs. Ils sont souvent les mieux placés pour suggérer ce à quoi nous n'avions pas pensé.

J'ai créé un script qui répond à ce problème. Pour chaque lien YouTube répertorié dans 'list_of_videos.csv', le programme génère un fichier compilant les sujets de vidéos proposés par les auditeurs.

Note: La librairie youtube-comment-downloader doit être installé afin que le programme fonctionne.

import requests
import re
import csv
import os

USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'
FILE = 'list_of_videos.csv'
OUTPUT_DIR = 'export'

def get_youtube_title(url):
    headers = {'User-Agent': USER_AGENT}
    response = requests.get(url, headers=headers)
    if response.status_code != 200:
        return None

    match = re.search(r'<title>(.*?)</title>', response.text, re.DOTALL | re.IGNORECASE)
    if match:
        title = match.group(1)
        if title.endswith(' - YouTube'):
            title = title[:-10]
        return title.strip()
    return None

csv_reader = csv.reader(open(FILE, 'r'))
for row in csv_reader:
    title = get_youtube_title(row[0])
    title = title.replace(' ', '_').lower()
    output_file = f'{OUTPUT_DIR}/{title}.json'

    if os.path.exists(output_file):
        print(f"File {title}.json already exists, skipping...")
        continue

    print(f"Video URL: {row[0]}, Title: {title}")
    os.system(f'youtube-comment-downloader --youtubeid {row[0].split("v=")[-1]} --output {output_file}')
    with open(output_file, 'r') as f:
        lines = f.readlines()
    with open(output_file, 'w') as f:
        for line in lines:
            if 'video about' in line or 'video on' in line:
                f.write(line)
    print(f"Filtered comments saved to {title}_filtered.json")
    os.remove(output_file)

Ressources