U drugom postu smo razgovarali o tome Preuzmi torrent epizodu (TED), izvrstan program napisan na Javi koji nam omogućava da dodamo svoje omiljene serije i automatski ih preuzmemo kako nova poglavlja izlaze.
Metoda opisana u ovom postu je alternativa TED-u, koja će mnogi od vas vjerovatno biti zanimljiva.. |
Metoda se sastoji od stvaranja zakazanog zadatka koji svako toliko pokreće python skriptu. Ova skripta preuzima bujice putem RSS-a. Mnoge stranice za preuzimanje torrenta dopuštaju ovu opciju, a najpopularnije je ezRSS. Prednost upotrebe RSS-a za preuzimanje bujica je u tome što vam omogućava da se "pretplatite" i preuzmete torente svoje omiljene serije kako se pojavljuju nova poglavlja. Baš kao kad se pretplatite na blog ili feed vijesti.
Koraci koje treba slijediti
1.- Instalirajte paket python-beautifulsoup.
sudo apt-get instalirajte python-beautifulsoup
2.- Otvorite svoj omiljeni uređivač teksta. Kopirajte sljedeći kod u njega i spremite datoteku sa sljedećim imenom: ~ / bin / tormon.py
#! / usr / bin / env python
uvoz urllib2, urlparse
iz urllib2 uvozi HTTPError, URLError
iz BeautifulSoup uvoza BeautifulSoup
uvezi te
import opt parse
__usage __ = '' '
tormon.py -O ~ / test / tormon -u "http: //rss.feed"
''
klasa Main (objekt):
''
tormon provjerava rss feed za nove torente. Kada pronađe novi .torrent, za
preuzima ga u navedeni izlazni direktorij, gdje je (vjerovatno) nadzor
torrent program će preuzeti odgovarajuću datoteku.
''
def parse_options (self):
upotreba = 'upotreba:% prog [opcije]' + __ upotreba__
parser = optparse.OptionParser (upotreba = upotreba)
parser.add_option (
'-O', '--izlaz_dir', dest = 'izlaz_dir',
help = 'direktorij u koji se spremaju novi torenti',
metavar = 'DIR')
parser.add_option (
'-f', '--filetype', dest = 'tip datoteke',
action = 'dodaj',
default = [],
help = 'dopušteni tipovi datoteka',
metavar = 'TIP')
parser.add_option (
'-d', '--downloaded_torrents', dest = 'preuzete_torrente',
default = os.path.expanduser ('~ / .downloaded_torrents'),
help = 'evidencija već preuzetih bujica',
metavar = 'FILE')
parser.add_option (
'-e', '- error_log', dest = 'dnevnik_grešaka',
help = 'dnevnik torrenta tormon nije uspio preuzeti',
metavar = 'FILE')
parser.add_option (
'-b', '--batch', dest = 'šarža',
help = 'datoteka koja sadrži listu rss urls feedova',
metavar = 'FILE')
parser.add_option (
'-u', '--url', dest = 'url',
action = 'dodaj',
default = [],
help = 'url rss feed-a',
metavar = 'URL')
parser.add_option (
'-m', '- mark_all_downloaded', dest = 'mark_all_downloaded',
action = 'store_true',
default = False,
help = "označi sve torente kao već preuzete")
parser.add_option (
'-M', '- match_by_filename', dest = 'match_by_filename',
action = 'store_true',
default = False,
help = "prepoznati preuzete datoteke prema imenu, a ne URL-u. Podudaranje prema URL-u je zadano.")
(self.opt, args) = parser.parse_args ()
ako self.opt.batch:
za otvorenu liniju (self.opt.batch, 'r'):
linija = line.strip ()
ako je linija a ne line.startswith ('#'):
self.opt.url.append (linija)
ako ne self.opt.output_dir:
self.opt.output_dir = os.path.expanduser ('~ / Desktop')
ako ne self.opt.filetype:
self.opt.filetype = ['. torrent'] ako nije self.opt.error_log:
self.opt.error_log = self.opt.downloaded_torrents + '. error'
probaj:
os.makedirs (self.opt.output_dir)
osim OSError:
ako ne, os.path.exists (self.opt.output_dir):
print ('tormon nije uspio stvoriti direktorij% s'% self.opt.output_dir)
izlaz (1)
def load_list_of_already_downloaded_torrents (self):
probaj:
self.downloaded = otvoren (self.opt.downloaded_torrents, 'r'). read (). split ()
osim IOError:
self.downloaded = [] probajte:
self.errors = open (self.opt.error_log, 'r'). read (). split ()
osim IOError:
self.errors = [] def update_downloaded (self, url):
self.downloaded.append (url)
probaj:
self.errors.remove (url)
osim ValueError:
proći
def download_torrent (self, url):
probaj:
čarapa = urllib2.urlopen (url)
osim (HTTPError, URLError):
# print ('tormon nije uspio preuzeti% s'% url)
ako url nije u self.errors:
self.errors.append (url)
drugo:
filename = self.url2filename (url)
target_file = os.path.join (self.opt.output_dir, ime datoteke)
print ('Preuzimanje% s'% target_file)
content = sock.read ()
sock.close ()
fh = otvoreno (ciljna_datoteka, 'w')
fh.write (sadržaj)
fh.close ()
self.update_downloaded (url)
def url2filename (self, url):
vrati os.path.basename (urlparse.urlparse (url) [2])
def has_been_downloaded (self, url):
ako self.opt.match_by_filename:
filename = self.url2filename (url)
return (ime datoteke u [self.url2filename (link) za vezu u self.downloaded])
drugo:
return (url u self.downloaded)
def parse_rss_feed (samo):
za url u self.opt.url:
ispis ('RSS feed:% s'% url)
probaj:
čarapa = urllib2.urlopen (url)
osim (HTTPError, URLError):
ispis ('tormon nije uspio preuzeti% s'% url)
drugo:
content = sock.read ()
sock.close ()
juha = BeautifulSoup (sadržaj)
veze = ([link.nextSibling za vezu u supi.findAll ('link')] +
[veza ['href'] za vezu u supi.findAll ('a')] +
[veza ['url'] za vezu u supi.findAll ('mediji: sadržaj')])
za vezu u vezama:
ako (bilo koji ([link.lower (). završava sa (završava)
za završetak na self.opt.filetype])
a ne self.has_been_downloaded (veza)):
ako self.opt.mark_all_downloaded:
ispis ('Označavanje% s kao preuzeto'% veza)
self.update_downloaded (veza)
drugo:
self.download_torrent (veza)
def save_list_of_already_downloaded_torrents (self):
fh = otvoren (self.opt.downloaded_torrents, 'w')
fh.write ('n'.join (self.downloaded))
fh.close ()
fh = otvoreno (self.opt.error_log, 'w')
fh.write ('n'.join (self.errors))
fh.close ()
def __init __ (samo):
self.parse_options ()
self.load_list_of_already_downloaded_torrents ()
probaj:
self.parse_rss_feed ()
osim KeyboardInterrupt:
proći
konačno:
self.save_list_of_already_downloaded_torrents ()
ako je __ime __ == '__ glavni__':
Glavna ()
3.- Dodijelite mu izvršavanje dozvola.
chmod + x ~ / bin / tormon.py
4.- Provjerite radi li sve u redu.
tormon.py -O ~ / torrenti / -u "http: //rss.feed"
Gdje kaže ~ / torrenti /, morate ga zamijeniti putem na kojem želite spremiti preuzete bujice. Imajte na umu da će biti puno .torrent datoteka.
Tamo gdje piše "http: //rss.feed", morate ga zamijeniti URL-om RSS feeda svoje omiljene serije. Kako doći do njega? Pa u slučaju da želite koristiti ezRSS, Otišao sam na glavnu stranicu i napisao ime serije. Pojavit će se ogromna lista s rezultatima. U slučaju da želite precizirati svoju pretragu (datum filtriranja, kvalitet ili osoba koja je kopirala videozapis), to možete učiniti vodeći vas primjerima koji su jasno objavljeni na toj stranici. Nakon što dobijete rezultate koje tražite, kliknite desni klik na vezu koja kaže RSS feed zasnovan na pretraživanju koji se pojavljuje pored narančastog dugmeta karakterističnog za RSS feedove. Kopirajte vezu i zalijepite je zamjenom http://rss.feed primera.
Neke dodatne podatke na umu:
- Ako je parametar -O izostavljen, .torrent datoteke će se preuzeti na radnu površinu.
- Ako odmah nakon toga pokrenete istu naredbu, ona ne bi trebala preuzimati nijednu novu bujicu, osim ako nova torrent nije dodana u RSS feed.
- Ova naredba kreira mapu u kojoj će se sačuvati bujice ako ona ne postoji.
- Spisak URL-ova uspješno preuzetih bujica bit će spremljen u ~ / .downloaded_torrents.
- Da biste nadzirali više od 1 RSS feeda, možete koristiti parametar -u. Primjer: tormon.py -u "http: //rss.feed1" -u "http: //rss.feed2"
5.- Ako sve funkcionira u redu, možete dodati skriptu kao zadani crontab zadatak.
crontab -e
Ova naredba će otvoriti uređivač teksta.
Zalijepite sljedeći kod tako da bude na početku datoteke:
PUT = / sbin: / bin: / usr / sbin: / usr / bin: / home / USER / bin
MAILTO = KORISNIK
Promjena KORISNIK vašim korisničkim imenom.
Slijedeći kod zalijepite negdje ispod PUT =…
* / 15 * * * * tormon.py -u "http: //rss.feed"
Ovo će pokrenuti skriptu svakih 15 minuta. Naravno, možete ga promijeniti prema vašim potrebama. Kada je riječ o televizijskim serijama, možda bi bilo pametno voditi ih jednom sedmično. Ne zaboravite pročitati naš prethodni post u kojem objašnjavamo korak po korak kako dodati zadatke u crontab.
Trčanje svake nedjelje u 10 sati:
00 10 * * 0 tormon.py -u "http: //rss.feed"
Za kraj provjerite postoji li prazan red na kraju datoteke crontab. Ne znam zašto, ali potreban je crontab da bi sve funkcionisalo u redu.
Spremite datoteku i izađite iz uređivača teksta.
Napomena: u slučaju da imate instaliran agent za prijenos e-pošte, kao što je exim4, redak MAILTO = USER reći će crontab-u da vam pošalje rezultate izvršavanja tormon.py e-poštom.
Pa srećom znam malo engleskog. Uradio sam to sa YaRSS-om. Pogledajte da li radi.
Da super. ali niko ne objašnjava kako se koristi FlexRSS. Na vašoj je stranici sve jako lijepo, ali nisam pronašao način da to dodam delugeu ... oni također kažu da Deluge standardno dolazi s jednim, a to nije istina.
Saludos
Qbittorrent i drugi imaju ugrađene sisteme za raspoređivanje. Bilo bi dobro objasniti kako svaki od njih obično radi, a obično objašnjavam mikrotorent za MS WOS i Qbittorrent za Linux. U spojleru je bio vodič, ali sigurno ćete prikupiti mnogo posjeta ako napravite video zapise sa svakim popularnim torrent programom, dodajući na primjer EZ
Hvala Miquel! Uzeću ga u obzir, kao i svi vaši komentari i prijedlozi!
Šaljem te u veliki zagrljaj! Paul.
Evo spremišta koje sadrži ovaj program:
https://launchpad.net/~lopeztobal/+archive/maths
putem: http://linuxmusica.com/
Prestanite propovijedati upotrebu jezgra i propagirajte upotrebu operativnog sistema!
Hehe ...