====== FEL ČVUT Reupload ====== [[https://github.com/felwiki/reuploader|FEL ČVUT Reupload]] je projekt, který řeší automatizované zálohy záznamů přednášek a jejich přehlednou organizaci na [[https://www.youtube.com/channel/UCzQzKzGlpX4qBi060qdwIug|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 [[courses:|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 [[https://github.com/felwiki/reuploader|Reuploader]]. Je to balík spojující několik dalších projektů: * samotný [[https://github.com/felwiki/reuploader|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 * [[https://github.com/felwiki/youtube_uploader_selenium|youtube_uploader_selenium]]: skript využívající [[https://en.wikipedia.org/wiki/Selenium_(software)|selenium]] pro nahrávání videí na [[https://en.wikipedia.org/wiki/YouTube|YouTube]] (je to kompletně přepsaný fork [[https://github.com/linouk23/youtube_uploader_selenium|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) * [[https://github.com/circulosmeos/gdown.pl|gdown.pl]]: jednoduchý perl skript pro stahování z [[https://en.wikipedia.org/wiki/Google_Drive|Google Drive]] * [[https://github.com/felwiki/destreamer|destreamer]]: (ČVUT fork) nástroj pro stahování videí z MS Stream, kam se nahrávají záznamy z [[https://en.wikipedia.org/wiki/Microsoft_Teams|MS Teams]] * [[https://github.com/felwiki/sharepoint_downloader|sharepoint_downloader]]: náš vlastní nástroj zjednodušující stahování ze služby [[https://campuscvut.sharepoint.com/|SharePoint]], kam se evidentně také nahrávají záznamy z [[https://en.wikipedia.org/wiki/Microsoft_Teams|MS Teams]] * [[https://github.com/ytdl-org/youtube-dl|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 [[https://github.com/jibon57/bbb-recorder|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 [[https://hub.docker.com/r/ondt/reuploader|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 [[contact-us|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í [[https://github.com/features/actions|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 [[wp>Virtual_private_server|VPS]] kvůli rychlé Internetové konektivitě, pokud máte === 1. Přidání do systému === Napište [[contact-us|nám]], musíme váš FEL email přidat do systému. === 2. Instalace Dockeru === Postupujte podle [[https://docs.docker.com/engine/install/|oficiální dokumentace]]. Pro rychlou instalaci na systémech [[https://ubuntu.com/|Ubuntu]] nebo [[https://nixos.org/|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é [[https://github.com/felwiki/reuploader/blob/master/wrapper.sh|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 [[https://github.com/felwiki/reuploader/blob/master/reuploader.sh|Reuploaderu]] a [[https://github.com/felwiki/youtube_uploader_selenium/blob/master/youtube_uploader_selenium/__init__.py|skriptu pro nahrávání]], (a případně i [[https://github.com/felwiki|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 [[https://github.com/felwiki/reuploader|repozitáři]] notifikace o vydání nové verze podle [[https://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/configuring-notifications#configuring-your-watch-settings-for-an-individual-repository|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.