Identifikátor filmů Aky v Pythonu
Nástroj pro automatické vyhledání, identifikaci a ohodnocení filmů.
Skript v Pythonu, který rekurzivně projde složku a její podložky, vyhledá všechny video soubory, pokusí se o jejich identifikaci a získání jejich hodnocení z filmových databází IMDb (International Movie Database) a ČSFD (Česko-slovenská Filmová Databáze). Výsledky své práce vytiskne na standardní výstup seřazené v sestupném pořadí podle průměrného hodnocení filmu.
Pár poznámek ke skriptu
K identifikaci využívá API serveru www.opensubtitles.org.
Hodnocení filmů jsou v základu získávána ze serverů http://www.imdb.com a http://www.csfd.cz.
Skript ignoruje filmy ve formátu DVD (přesněji: ignoruje složky s názvem “video_ts”).
Rozpoznání je pouze orientační, identifikační algoritmus je poměrně jednoduchý a je v něm spousta místa pro vylepšení, klidně si ho vylepšete.
Skript je uvolněn pod GPL licencí.
První kroky
Po stažení a rozbalení archivu vznikne nová složka “aky“, obsahující několik souborů a složek. Skript spustíte z konzole pomocí souboru “movie.py”. A to buď příkazem:
python movie.py
nebo pomocí sekvence příkazů:
chmod +x movie.py
./movie.py
Při zadávání těchto příkazů se musíte nacházet ve složce “aky“, ve které se nachází zmíněný “movie.py“. Do složky se dostane příkazem “cd” (Např.: “cd /home/tojaj/aky”).
Takto spuštěný skript hledá video soubory v aktuální složce. Skript se dá spustit s parametrem -p, za který uvedete cestu k složce s Vaší filmovou sbírkou. -p není jediný parametr, kterému skript rozumí. Pojďme se nyní podívat na další parametry se kterými můžete skript spustit.
Parametry skriptu
-h nebo --help
Velice důležitý parametr, který zobrazí stručnou nápovědu.
-p CESTA nebo --path=CESTA
Tímto parametrem informujete skript, kde má začít filmy hledat.
-i nebo --info
Při spuštění s tímto parametrem, skript vypíše všechny jazyky, ve kterých může být vytištěn výsledný seznam filmů.
-l JAZYK nebo --lang=JAZYK
Tímto parametrem zvolíte jazyk, ve kterém chcete mít výsledný seznam filmů. Místo JAZYK použijte zkratku některého jazyka, jak ji vypsal parametr -i.
-v nebo --verbose
Tento parametr zapne „upovídaný režim“. Skript bude zobrazovat stručné informace o průběhu své práce. Toto se může hodit v případě, že skript provádí identifikaci většího množství filmů, což může být zdlouhavé.
Ukázka výstupu skriptu
tomas@laptop:~/aky$ python movie.py -p ../filmy/ +----------------------------------------------------------------------+ |Movie name: My Bloody Valentine +----------------------------------------------------------------------+ Filename: My.Bloody.Valentine.2008.DvDRip-FxM.avi Path: /home/tomas/filmy/My.Bloody.Valentine.2009.DvDRip-FxM Filesize: 733956096 Year: 2009 -- Rating: -- CSFD = 50 IMDB = 57 -- Average rating: [53] +----------------------------------------------------------------------+ |Movie name: Valkyrie +----------------------------------------------------------------------+ Filename: Valkyrie.avi Path: /home/tomas/filmy/Valkyrie Filesize: 732692480 Year: 2008 -- Rating: -- CSFD = 82 IMDB = 73 -- Average rating: [77]
Pár poznámek k vlastnostem skriptu
Plugin systém
Skript má vlastní pluginový systém pro část, starající se o získání hodnocení filmů. V současné době, skript obsahuje dva pluginy. První, který získá hodnocení z IMDb pomocí vzdáleného volání procedur poskytovaného serverem opensubtitles.org. A druhý, který získá hodnocení filmu na ČSFD parsováním jejich stránek.
Každý plugin musí splňovat pouze pár základních podmínek:
- Musí se nacházet v adresáři “rating“, který se nachází v hlavním adresáři se skriptem.
- Musí mít název souboru odpovídající regulárnímu výrazu: [_a-zA-Z-]+rating.py (například “superdatabaze_rating.py“).
- Musí v sobě mít volání funkce register_plugin() z modulu rating.rateall, jejímž parametrem je jméno funkce pluginu, která bude zaregistrována do pluginového systému k použití.
- Hodnocení se k filmu vkládá přidáním klíče (S prefixem, obsahující název zdroje hodnocení, a sufixem “Rating“. Například: “superdatabazeRating“) do slovníku, obsahujícího údaje o filmu.
- Toto hodnocení musí být textový řetězec, obsahující celočíselnou hodnotu v rozmezí 0-100 (Pokud Vámi vybraný zdroj hodnocení používá jiné rozmezí, je vhodné ho přepočítat do intervalu 0-100).
- Pro inspiraci doporučuji prozkoumat oba existující pluginy imdb_rating.py a csfd_rating.py.
Šablona výsledků
Formát, v jakém jsou výsledky prezentovány, je dán textovou šablonou “template.tpl” v adresáři “view“.
Úprava šablony výsledků:
- Jde o obyčejný textový soubor, který si můžete snadno editovat a upravit si vzhled výsledků k obrazu svému.
Jazyk výsledků
V základu umí skript zobrazit text výstupu v češtině a angličtině.
Přidání dalšího jazyka je však snadné.
Stačí soubor s novým jazykem nakopírovat do adresáře “view“.
Vytvoření nového překladu je také jednoduché:
- Stačí vytvořit soubor s názvem “lang_zkratkajazyka.py” v adresáři “view“.
- Obsah souboru zkopírujte z originálního souboru s překladem lang_en či lang_cs a pouze přepište anglické/české názvy na jejich odpovídající protějšky pro Vámi vybraný jazyk.
- Pak spustíte skript s parametrem “-l zkratkajazyka” či “–language=zkratkajazyka” a výstup bude v nově vytvořeném jazyce.
Na stáhnutí
Zdrojové kódy: aky_v01.tar.gz