overclokk / py-youtube-downloader

MIT License
2 stars 1 forks source link

Multiple clips from same video #2

Open Ared0 opened 2 years ago

Ared0 commented 2 years ago

Tagliare più clip dallo stesso video, magari specificando i minutaggi in un file di testo esterno.

overclokk commented 2 years ago

Yes, ci stavo pensando anch'io, usando un formato non a secondi com'è ora ma HH:MM:SS, un array preso da un file, si.

overclokk commented 2 years ago

La follia qui sarebbe anche poter aggiungere lo scraping dei timestamp dal video e usare quelli per fare le clip, ma questo ora non ci serve, è solo un piano futuro di conquista :-D

Ared0 commented 2 years ago

Se youtube invia le pagine già renderizzate non dovrebbe essere troppo difficile. Sarebbe più problematico se ti invia la versione in JS da far renderizzare

overclokk commented 2 years ago

Inanto ho inquadrato due formati per il file dei timestamps:

Primo scenario: Start:End

HH:MM:SS,HH:MM:SS
HH:MM:SS,HH:MM:SS
HH:MM:SS,HH:MM:SS
...

Questo formato è per un eventuale file, ogni riga una clip, start end separati da virgola e per calcolare i secondi si splitta (':') poi si calcola il resto.

Da considerare in caso il video duri meno di un'ora o la clip sia nella prima ora quindi se splittando non abbiamo `HH' lo si aggiunge manualmente (banalmente si aggiunge uno 0 int), alla fine ciclo for e si creano tutte le clip.

Seconodo scenario (da tenere in considerazione per il futuro):

00:00 Intro
00:10 Primo capitolo
00:20 Secondo capitolo
...

In questo caso se si dovessero prendere i capitoli da YT si dovrà creare un array (lista o come si chiama in python) prendendo il tempo fra i capitoli (00:00,00:10 ecc), per calcolare i secondi abbiamo già la funzione sopra. Questo non è indispensabile per ora.

Qui provo a lavorarci io e nel caso ti chiedo aiuto.

overclokk commented 2 years ago

Ho introdotto due funzioni per parsare eventuale file, sia con formato chapters yt che formato start:end, la funzione parse_file ritorna una lista prendendo le righe che definiscono il timestamp.

L'unico problema al momento è gestire la lista presa dai chapters per riparsarla in formato start:end, ma al momento devo anche lavorare e metto in pausa.

Ho aggiunto le due versioni dei file nella cartella dei test, ho anche aggiunto qualche unit test ovviamente, se riusciamo anche per altre funzionalità ad aggiungere i vari test sarebbe ottimo.

Banalmente ho chiamato chapters.txt il file dei chapters (00:00 Intro, ecc) e timestamps.txt il file per il formato start:end

Chiedo anche a te come vogliamo gestire la posizione dei file.

Ared0 commented 2 years ago

Se lavoro a uno scraper per le descrizioni e convertiamo direttamente in quella fase i chapter nel formato start:end?

Cosi ci generiamo il file degli input in automatico in un formato unico

overclokk commented 2 years ago

Mi sembra sia già compreso con pytube la description, ora non sono al pc, vedi prima li così c'è meno da lavorare.

overclokk commented 2 years ago

Trovata https://pytube.io/en/latest/api.html#pytube.YouTube.description

overclokk commented 2 years ago

Ho aggiunto una funzione per convertire i chapter format in timestamp format, ho fatto una prova prendendo i chapter dalla description e crea le clip correttamente, quindi perfetto dieri.

Al momento ho commentato la parte che prende il testo dalla descrizione perché direi che si debba rivedere il workflow da CLI prima.