Oramai sommando i video dei due canali sono a quota intorno ai ~320 video. La gestione dei metadati inizia quindi a diventare non banale, specialmente considerando che non voglio perdere nulla, e voglio riuscire a ri-caricare tutti i video online se dovesse succedere qualcosa (mi chiudono l’account, youtube perde i dati, etc).
In questo post volevo quindi descrivere il modo in cui gestisco questi metadati.
Buona Lettura!
Per tenere traccia di tutti i metadati ho sempre usato un file org, youtube.org
. Ne ho uno per il canale italiano, e uno per quello inglese.
Quello che è cambiato nel corso degli anni è la struttura di questo file org. Nello specifico, prima del 2024, non aveva una struttura fissa. Avevo una gerarchia di entries, divise in aree tematiche, a seguire mostro uno screenshot del file per dare l’idea
e i singoli video erano memorizzati come org outlines con specifici attributi
:PROPERTIES:
:TITLE: Windows Privilege Escalation - Full Course
:YOUTUBE: OmW7351U8cI
:PLAYLIST: Windows privilege escalation
:PUBBLICATION: 2025-01-02
:END:
e con tre sotto outlines: description, timestamps, references.
Verso la fine del 2023 e gli inizi del 2024 mi sono sistemato tutti questi dati e ho creato un piccolo script in emacs-lisp che utilizzo tutt’ora per la gestione delle cartelle github dei due progetti:
L’idea era quella di generare per ogni canale una cartella git contenente tutti i materiali dei vari video, che sarebbero stati così più organizzati per futuri utilizzi. Così facendo dalla mia cartella privata mi genero quella pubblica
yt-it-private ---> yt-it-github
yt-en-private ---> yt-en-github
Durante questa organizzazione non ho toccato molto la struttura gerarchica del file. Dal punto di vista della generazione, questa struttura non era neanche utilizzata, dato che per generare la cartella pubblica iteravo su tutte le outline org una alla volta, ed estraevo solamente quelle con l’attributo YOUTUBE
.
Recentemente però ho voluto fare un ulteriore cambiamento, che dal mio punto di vista semplifica ancora di più la gestione dei metadati di youtube. Adesso è tutto lineare in un singolo file org (sempre per canale) come mostrato dal seguente screenshot
Anche a livello delle cartelle, la gerarchia che esisteva prima è stata completamente rimpiazzata ad una struttura lineare. Ogni video è memorizzato in una cartella diversa, ed il nome della cartella contiene l’indice del video ed il titolo, più altre informazioni necessarie per eventuali operazioni di filtering.
L’idea che mi sono fatto è che strutture lineari di questo tipo sono molto più utili proprio perché sono semplici e tolgono quel tempo di ricerca del contenuto “dove avevo messo questo video specifico? in questa o quella cartella?”.
L’utilizzo di tag all’interno del filename permette comunque di filtrare rispetto a specifici bisogni, tipo filtrare per playlist, filtrare per keyword, etc.
In questo modo, tra l’altro, ho anche una visione molto chiara rispetto alla production pipeline per i prossimi video
L’unica cosa che vorrei implementare è l’utilizzo delle API di Youtube per interagire direttamente con i dati presenti sulla piattaforma. Nel senso, adesso nel file org ho una copia dei dati che poi carico online a mano. Vorrei automatizzare il processo, e per farlo mi basterebbe implementare delle API in emacs-lisp che interagiscono con il layer di youtube.
Così, ad esempio, potrei avere una funzione tipo la seguente per caricare nuovi video, un’altra per modificare il contenuto di video già caricati e via dicendo.
(yt-api-upload-video <MP4-FILE> <TITLE> <DESCRIPTION> ...)
Implementando questa roba riuscirei a tutti gli effetti nel gestire il canale youtube tramite un file org-mode. Sarebbe molto utile.
E niente, un po’ di dietro le quinte su come gestisco le cose internamente. Spero sia interessante, poi eventualmente ci farò un video al riguardo!