Kako automatski preuzeti svoje omiljene serije

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..

Napomena: Prije nego što započnemo, čini se razboritim reći da postoje i druge metode za postizanje istih rezultata. Jedan od načina da se to učini je upotreba TED-a, ali postoje i neki klijenti za bujice koji dolaze s podrškom za RSS (što sve čini puno lakšim). Takođe, postoje i druge skripte (slične prikazanoj dolje) koje rade isto (i još bolje) ... Mislim, na primjer, na FlexRSS.

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"
Napomena: ne zaboravite zamijeniti parametre proslijeđene storm.py s onima koji odgovaraju vašim potrebama. U gornjoj naredbi barem biste morali zamijeniti URL RSS feeda.

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.


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   jakeukalane rekao je

    Pa srećom znam malo engleskog. Uradio sam to sa YaRSS-om. Pogledajte da li radi.

  2.   jakeukalane rekao je

    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

  3.   Miquel Mayol i tur rekao je

    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

  4.   Koristimo Linux rekao je

    Hvala Miquel! Uzeću ga u obzir, kao i svi vaši komentari i prijedlozi!
    Šaljem te u veliki zagrljaj! Paul.

  5.   Morska trava rekao je

    Evo spremišta koje sadrži ovaj program:
    https://launchpad.net/~lopeztobal/+archive/maths
    putem: http://linuxmusica.com/

  6.   Sharik rekao je

    Prestanite propovijedati upotrebu jezgra i propagirajte upotrebu operativnog sistema!

  7.   Koristimo Linux rekao je

    Hehe ...