Toto je starší verze dokumentu!


FEL ČVUT Reupload

FEL ČVUT Reupload je projekt, který řeší automatizované zálohy záznamů přednášek a jejich přehlednou organizaci na YouTube kanálu. Umožňuje stažení videí z různých zdrojů, přidání metadat, a nahrání na YouTube kanál (všechno kromě zadávání metadat dělá automaticky). Všechna nahraná videa mají viditelnost nastavenou na UNLISTED. Díky tomu jsou přístupné pouze přes odkaz, který je k dispozici pouze tady, na FELwiki, na stránkách jednotlivých předmětů. K videím mají technicky tedy přístup pouze lidé z ČVUT, protože stránky předmětů jsou dostupné jen po přihlášení.

Videa jsou organizována do playlistů po jednotlivých předmětech. Každé video má název ve formátu AAA 1. přednáška (14. 3. 2021): Téma přednášky, kde AAA je zkrácený kód předmětu. Toto značení umožňuje rychlou orientaci v tématech, pokud člověk zpětně hledá nějakou konkrétní přednášku.

Popis projektu

Pro snadné nahrávání byl vytvořen Reuploader. Je to balík spojující několik dalších projektů:

  • samotný Reuploader: shell script který řeší vkládání a formátování metadat, volání jednotlivých downloaderů, a nahrávání výsledného videa
  • youtube_uploader_selenium: skript využívající selenium pro nahrávání videí na YouTube (je to kompletně přepsaný fork jiného projektu, který nám kvůli své nízké kvalitě a chybějícím mechanismům pro headless přihášení k FEL Google účtu přes SSO nevyhovoval)
  • gdown.pl: jednoduchý perl skript pro stahování z Google Drive
  • destreamer: (ČVUT fork) nástroj pro stahování videí z MS Stream, kam se nahrávají záznamy z MS Teams
  • sharepoint_downloader: náš vlastní nástroj zjednodušující stahování ze služby SharePoint, kam se evidentně také nahrávají záznamy z MS Teams
  • youtube-dl: generický nástroj pro stahování videí a nahrávání livestreamů z různých platforem (nejen z YouTube)
  • experimenální implementace nahrávání interního přehrávače BBB pomocí upraveného nástroje bbb-recorder, která už není potřebná a snad už ani nikdy potřebná nebude

Reuploader je Docker image a jeho distribuce probíhá přes Docker Hub pod označením ondt/reuploader. Tato metoda umožňuje celý reuploader distribuovat jako jeden velký balík, bez nutnosti stahovat a řešit všechny dependencies. Pokud víte něco o formátu AppImage a domníváte se že by šel použít místo dockeru, tak nám dejte vědět.

Buildění Reuploaderu při vydání nové verze probíhá automaticky přes CI/CD pipeline využívající GitHub Actions.

Nahrávání přednášek

Co je potřeba
  • odhodlání po každé přednášce spustit jeden příkaz a vložit odkaz na přednášku + nějaká metadata (což je samozřejmě mnohem jednodušší než to dělat manuálně ;-))
  • způsob jak spustit Docker image
    • ideálně Linux, Windows a MacOS prý taky fungují, ale netestovali jsme to
    • doporučujeme použít VPS kvůli rychlé Internetové konektivitě, pokud máte

1. Přidání do systému

Napište nám, musíme váš FEL email přidat do systému.

2. Instalace Dockeru

Postupujte podle oficiální dokumentace. Pro rychlou instalaci na systémech Ubuntu nebo NixOS můžete použít tyto snippety:

Ubuntu
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt install docker-ce docker-ce-cli containerd.io aufs-tools
NixOS
# configuration.nix
{
  ...
  virtualisation.docker.enable = true;
}

3. Spuštění Reuploaderu

Reuploader lze spustit standardním způsobem (s ukládáním cookies) takto:

sudo docker run -v reuploader:/src/cookies --rm -it ondt/reuploader

Při prvním spuštění se ten Docker image stáhne. To chvilku trvá, ale při každém dalším spuštění se už použije lokální kopie.

Základní způsob spuštění ale neumožňuje nahrání lokálních souborů. Proto existuje také wrapper, který spustí Reuploader jinak, pokud je první argument skriptu název nějakého souboru.

Reuploader se ptá na ČVUT username a heslo, které poté při přihlášení vkládá do webovek u kterých pak ukládá cookies do připojeného Docker volume. Díky tomu se obvykle stačí na přihlašovací údaje zeptat jen jednou a dál už neotravovat. Přečtěte si zdrojáky Reuploaderu a skriptu pro nahrávání, (a případně i ostatních součástí), abyste porozuměli tomu, jak se s přihlašovacími údaji manipuluje.

Lze také vyhodit -v reuploader:/src/cookies, pak se nebudou ukládat cookies. Bude ale potřeba se pokaždé znovu přihlásit ČVUT účtem.

4. Update Reuploaderu

Čas od času vznikne nová verze, ať už kvůli přidávání nových funkcí, nebo kvůli fixování bugů způsobených změnou UI webovek, na kterých Reuploader závisí. Lokální Docker image lze updatnout jedním příkazem:

sudo docker pull ondt/reuploader

Doporučujeme si nastavit na repozitáři notifikace o vydání nové verze podle návodu.

Detaily k implementaci

  • Hned po spuštění Reuploaderu se spustí asynchronně proces, který během zadávání metadat otestuje přihlášení do YouTube, tj. jestli jsou k dispozici platné cookies. V případně pozitivního výsledku se pak už neotravuje s přihlášením, pokud to náhodou ještě není potřeba pro Destreamer nebo jiné downloadery.