środa, 6 kwietnia 2011

Automatyczne pobieranie na napisów na OpenWRT

Opis

Poniższa instrukcja opisuje w jaki sposób zaplanować automatyczne poszukiwanie napisów dla filmów i odcinków seriali na routerze z systemem OpenWRT w wersji Backfire 10.03.

Instalacja

Potrzebny będzie pakiet napiprojekt, który znajduje się tutaj: napiprojekt. Instalacja następuje za pomocą:

opkg install http://eko.one.pl/openwrt/backfire/10.03/napiprojekt_6_ar71xx.ipk
Opkg zainstaluje potrzebne zależności z wyjątkiem p7zip, który można dostać stąd: p7zip. Instalujemy go podobnie:
opkg install http://ecco.selfip.net/backfire/packages/p7zip_9.13-3_ar71xx.ipk

Skrypt

Tworzymy nowy skrypt wydając polecenie:
nano /usr/bin/napisy.sh
Dzięki umieszczeniu w katalogu /usr/bin, który znajduje się w zmiennej środowiskowej $PATH, plik będzie można uruchomić z dowolnego miejsca w systemie. Następnie w treści pliku powinno znaleźć się:
#!/bin/sh
# Przejrzyj po kolei wymienione katalogi
for katalog in /srv/filmy /srv/seriale
do
 # Znajdz wszystkie pliki avi, wypisz pelna sciezke: "1 linia = 1 plik", wczytuj po jednej linii do zmiennej
 # Uzycie read zabezpiecza przed sytuacją w której w nazwie pliku występują spacje
 find $katalog -name "*.avi" | while read plik_z_filmem
 do
  # Zamien rozszerzenie avi na txt, zeby utworzyc nazwe pliku z napisami do danego filmu
  # Otaczamy nazwe zmiennej cudzyslowem na wypadek gdyby nazwa pliku zawierala spacje
  plik_z_napisami=$(dirname "$plik_z_filmem")/$(basename "$plik_z_filmem" .avi).txt
  # Jesli nie istnieje plik z napisami
  if [ ! -e "$plik_z_napisami" ]
  then
   # Szukaj napisow dla danego pliku
   napiprojekt "$plik_z_filmem"
  fi
 done
done
Plikowi należy nadać pozwolenie na wykonywanie:
chmod +x /usr/bin/napisy.sh

Cron

Dzięki temu, że skrypt pomija filmy i odcinki dla których już ściągnął napisy, można spokojnie zaplanować jego cogodzinne wykonywanie. W tym celu należy dodać następującą linijkę do pliku /etc/crontabs/root:
* */1 * * * napisy.sh
Przystępne wyjaśnienie i wygodny "kalkulator" dla crona można znaleźć na http://eko.one.pl/?p=openwrt-cron