Identifikátor filmů Aky v Pythonu

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

Leave a Reply

Your email address will not be published. Required fields are marked *