facebooktwittertwitterRSS csatorna

Weblapkészítést, keresőoptimalizálást vállalok. Bővebben...

RSS támogatás Openwrt alatt Flexgettel Transmission klienshez

Speeedfire, 2011-02-26 10:29:36

1. Bevezető
Jelenleg nincs Openwrt alá torrent kliens, ami rendelkezne RSS input funkcióval, ezért segédprogramot kell alkalmaznunk, ez a Flexget.
Tp-link 1043nd alatt teszteltem.

2. Telepítés
A Flexget futtatásához szükséges a Python keretrendszer telepítése.

opkg install python
opkg install python-sqlite3
opkg install python-expat
opkg install python-openssl
opkg install pyyaml

Emellett kell még az easy_install csomag is.

opkg install distribute

Ezek nagyméretű csomagok, külső meghajtóra kell telepíteni őket, majd linkelni. Leírás
Hogy ne legyen egyszerű az élet, trükközni kell a /tmp könyvtárral is. Ha nem extrooton van a rendszer, a memória felében maximalizált tmp meghajtó kevés lehet néhány függőség telepítéséhez (feedparser, SQLAlchemy). Szerencsére gond nélkül rá lehet mountolni egy könyvtárat a külső meghajtóról, a következő rebootig ezt fogja használni a rendszer.

mkdir …/tmphdd
chmod 1777 /tmphdd
cp -r /tmp/* …/tmphdd
mount --bind …/tmphdd /tmp

Így már nem lehet akadálya, hogy az easy_install feltegye nekünk a progit minden függőségével együtt.

python …/usr/lib/python2.6/site-packages/easy_install.py flexget

Ellenőrizzük vissza a telepítést:

…/usr/bin/flexget –V
FlexGet 1.0rxxxx a válasz

Később az upgrade sem nehezebb:

python …/usr/lib/python2.6/site-packages/easy_install.py –-upgrade flexget

A Transmission támogatáshoz fel kell tennünk még egy libraryt:

python …/usr/lib/python2.6/site-packages/easy_install.py transmissionrpc

3. Időzítés
A futtatás crontab-bal megoldható (LuCI alatt Services/Scheduled Tasks vagy crontab -e).

1 * * * * …/usr/bin/flexget

Ez a parancs óránként futtatja le az RSS ellenőrzést.

4. Konfig
A konfig fájl default helye:

~/.flexget/config.yml

Nekünk kell létrehozni. A fájl szerkezete nagyon kötött. Pluginekkel tudunk kicsalni belőle rengeteg funkcionalitást. Példán keresztül lesz a legegyszerűbb megmutatnom, de mielőtt belemásznánk a fájlba, érdemes megérteni a szűrés logikáját (lentebb).  Lényeg, hogy bejövő feed elemeit három kategóriába rendezi minden plugin.
- accepted: megfelelt a „pozitív” szűrőnek, mehet az outputra (esetünkben transmission)
- rejected: megfelelt a „negatív” szűrőnek, kuka
- undecided: az illesztés nem járt eredménnyel

flexget filtering


A pluginek sorrendje nem számit, mindegyik elvégzi az illesztést. A trükk az, hogy „rejected”-ből már nem kerülhet vissza elem.
Két fő részegysége van konfig fájlunknak, presets és feeds. A presets alatt definiálhatunk plugineket ill. szűrőkombinációkat, a feeds alatt pedig belőjük az adott RSSt és meghívjuk a preseteket. Jöjjön a példa. Alárendelt elemek mindig két szóközzel beljebb legyenek (TAB nem jó)!

 

presets:   

global: #ezek a pluginek minden feedre végrehajtódnak

email: #minden letöltésről szeretnénk emailben értesülni

active: true

from: xxx@gmail.com

to: yyy@gmail.com

smtp_host: smtp.gmail.com

smtp_port: 587

smtp_login: true

smtp_username: zzzz

smtp_password: pppp

smtp_tls: true

transmission: # minden kimenet transmissionbe kerüljön

host: 192.168.1.1

port: 9091

removewhendone: False

username: xxx

password: yyy

ratio: -1.0 #végtelen seed

addpaused: No

tveng: #nem globális beállításoknál az első mondjuk nem szinkronos sorozatok legyen

exists_series: # ez a plugin lecsekkolja, hogy megvan-e már a tárhelyünkön a cucc letöltött példánya. Ha igen, reject.

- /mnt/hdd2/Torrent

series: # sorozatokat figyel, elég sok szolgáltatása van, amiket itt mind jól nem használunk:)

- Chuck

- Bones

regexp: #Egyszerű string illesztő, ebben a példában azokat a találatokat dobjuk el, amikben szerepel a „HUN” karaktersorozat nem betükkel körülvéve. Tipikusan a magyar release-ekben .HUN. szerepel, ami eldobásra kerül, de mondjuk a Ghost.Hunters nem. Az illesztés ennél a pluginnál nem kis/nagybetű érzékeny. Ha csak a szinkronos cuccokat akarjuk megtartani, reject_excluding írandó.

reject:

- '[\W_]HUN[\W_]'

quality: #Szűrés minőségre. Elég egyértelmű, táblázat megtalálható itt.

- hdtv

tvhu: #Mivel a fenti példa dobja a magyar cuccokat, egy másik presetet lövünk be ezeknek.

exists_series:

- /mnt/hdd2/Torrent

series:

- Heti Hetes

quality:

- hdtv

- sdtv #Az ilyen műsorok legtöbbször hdtv alatti minőségben kerülnek fel, ezért az sdtv bejegyzés is kell.

feeds: sorozatokeng: #Feedünk neve rss: #Az RSS lehet bármilyen szűrt verzió is headers: #Ha kell azonosítás a letöltéshez cookie: uid=xxx; pass=yyy #Böngészőből kinyerhető adatok preset: #Az adott feednél meghívott presetek listája, a global alattiak mindenképp lefutnak, tehát nem kell hívni őket - tveng sorozatokhu: #Feedünk neve rss: #Az RSS lehet bármilyen szűrt verzió is headers: #Ha kell azonosítás a letöltéshez cookie: uid=xxx; pass=yyy #Böngészőből kinyerhető adatok preset: #Az adott feednél meghívott presetek listája, a global alattiak mindenképp lefutnak, tehát nem kell hívni őket - tvhu

 

 

Ezt a két presetet mindenképp szét kell választani, még ha a feed címe egyezik is. Sok plugin feedhez kötött „emlékező” funkcióval rendelkezik, ami automatán dobja a korábban már elutasított elemeket. Ha egy feed alá írnánk őket, a regexp plugin eme funkciója nem engedné át a Heti hetest, mivel azt már dobta a „HUN” tartalom miatt a „tveng”-nél.
Sok plugin létezik, sok paraméterrel, nem célom kivesézni őket. Itt megtalálható minden info, ami kellhet. Példa is van bőven. Elkészült konfigunkat ellenőrizzük le

…/usr/bin/flexget –-check


Ha a szintaktika jó, jöhet a

…/usr/bin/flexget –-test


Ez csinál egy tesztadatbázist, lekéri az RSSt, lefuttatja a szűrőket, csak kimenetet nem generál.
A Flexget (OpenWRT szinten) zabálja a memóriát, swap nélkül bele se kezdjünk a használatába. A CPUt nem nagyon terheli, de ha fut a Transmission (és futnia kell a plugin miatt), már izzad a hardver. Rosszabbodik a helyzet, ha van találat és betöltődik a Transmission-be, ami elkezdi azt tölteni és a helyet foglalni. Ez tovább lassítja a swappolást. Ezt a problémát kikerülhetjük, ha letiltjuk a Transmision plugint és egyszerű letöltést választunk kimenetnek. Ezt a presetek végére szúrjuk be.

download: …/torrentek helye

Ha ez megvan, kell egy script, ami hozzáadja a torrenteket a Transmission-höz. Mentsük addtorrent.sh néven.
Végül egy egyszerű kis parancsfájl megoldja, hogy leálljon a Transmission, mielőtt indul a Flexget, majd újrainduljon és hozzáadódjanak letöltött torrentfájljaink. Mentsük ezt is el és cron segítségével időzítve futassuk.

#!/bin/sh
/etc/init.d/transmission stop
sleep 3
…/usr/bin/flexget
/etc/init.d/transmission start
…/addtorrent.sh


Ennyi lenne. Köszönöm a prohardveres arcoknak a fórumon nyújtott segítséget és a Flexget IRC cstornáján gazpachoking és paranoidi türelmét és gyors reagálását az általam talált bugokra.

pluhi
Észrevételeiteket, javaslataitokat erre a címre várom:
pluhi81[at]gmail[dot]com


Szólj hozzá:

A hozzászóláshoz belépés/regisztráció szükséges.