Si të shkarkoni serialin tuaj të preferuar automatikisht

Në një postim tjetër, kemi biseduar Shkarkuesi i Episodeve të Torrentit (TED), një program i shkëlqyeshëm i shkruar në Java që na lejon të shtojmë seritë tona të preferuara dhe t'i shkarkojmë ato automatikisht kur dalin kapituj të rinj.

Metoda e përshkruar në këtë post është një alternativë ndaj TED, të cilën me siguri shumë prej jush do ta konsiderojnë me interes..

Shënim: Para se të fillojmë, duket e mençur të thuhet se ka metoda të tjera për të arritur të njëjtat rezultate. Një mënyrë për ta bërë këtë është duke përdorur TED, por ka edhe disa klientë torrent që vijnë me mbështetje RSS (gjë që e bën gjithçka shumë më të lehtë). Gjithashtu, ka skenarë të tjerë (të ngjashëm me atë të treguar më poshtë) që bëjnë të njëjtën gjë (dhe madje edhe më mirë)… Unë jam duke menduar, për shembull, për FlexRSS.

Metoda konsiston në krijimin e një detyre të planifikuar që ekzekuton një skemë python çdo shpesh. Ky skript shkarkon përrenjtë përmes RSS. Shumë faqe për shkarkimin e torrenteve e lejojnë këtë mundësi, më e popullarizuara ezRSS. Avantazhi i përdorimit të RSS për të shkarkuar torrente është se ju lejon të "pajtoheni" dhe të shkarkoni torrentët e serive tuaja të preferuara ndërsa shfaqen kapituj të rinj. Ashtu si kur regjistroheni në një blog ose lajme.

Hapat që duhet të ndiqni

1. - Instaloni paketën python-supë e bukur.

sudo apt-get instaloj python-beautifulsoup

2. - Hapni redaktuesin tuaj të preferuar të tekstit. Kopjoni kodin e mëposhtëm në të dhe ruani skedarin me emrin e mëposhtëm: bin / bin / tormon.py

#! / usr / bin / env python

import urllib2, urlparse
nga urllib2 importo HTTPError, URLError
nga importi BeautifulSoup BeautifulSoup
ju importoj
importoni optarse

__usage __ = ""
tormon.py -O ~ / test / tormon -u "http: //rss.feed"
""

klasa kryesore (objekti):
    ""
    tormoni kontrollon një burim RSS për përrenj të rinj. Kur gjen një .torrent të ri, tek
    e shkarkon atë në një direktori të caktuar të prodhimit, ku (me sa duket) një monitorim
    programi torrent do të shkarkojë skedarin përkatës.    
    ""
    def pars_options (vetë):
        përdorimi = 'përdorimi:% prog [opsionet]' + __ përdorimi__
        parser = optparse.OptionParser (përdorimi = përdorimi)
        parser.add_option (
            '-O', '--output_dir', dest = 'output_dir',
            help = 'direktoria në të cilën ruhen torrentët e rinj',
            metavar = 'DIR')
        parser.add_option (
            '-f', '--filetype', dest = 'lloji i skedarit',
            veprim = 'shtoj',
            parazgjedhur = [],
            ndihmë = 'llojet e skedarëve të pranueshëm',
            metavar = 'LLOJI')
        parser.add_option (
            '-d', '--downloaded_torrents', dest = 'downloaded_torrents',
            parazgjedhur = os.path.expanduser ('~ /. shkarkuar_torrentë'),
            ndihmë = 'regjistri i torrentëve të shkarkuar tashmë',
            metavar = 'DOSJE')
        parser.add_option (
            '-e', '--error_log', dest = 'error_log',
            ndihmë = 'regjistri i torrentëve dështoi të shkarkohej',
            metavar = 'DOSJE')
        parser.add_option (
            '-b', '--batch', dest = 'grumbull',
            ndihmë = 'skedari që përmban listën e url-ve të RSS-së',
            metavar = 'DOSJE')
        parser.add_option (
            '-u', '--url', dest = 'url',
            veprim = 'shtoj',
            parazgjedhur = [],
            ndihmë = 'url i burimit RSS',
            metavar = 'URL')
        parser.add_option (
            '-m', '- mark_all_downloaded', dest = 'mark_all_downloaded',
            veprim = 'dyqan_vërtetë',
            parazgjedhur = False,
            ndihmë = "shënoni të gjithë torrentët si të shkarkuar tashmë")
        parser.add_option (
            '-M', '- match_by_filename', dest = 'match_by_filename',
            veprim = 'dyqan_vërtetë',
            parazgjedhur = False,
            ndihmë = "njoh skedarët e shkarkuar sipas emrit të skedarit, jo URL-së. Përputhja sipas URL-së është e paracaktuar.")        
        (vetë.opt, harqe) = parser.parse_args ()
        nëse vetë.opt.batch:
            për rreshtin e hapur (vetë.opt.batch, 'r'):
                rresht = rresht.strip ()
                nëse rresht dhe jo rresht. fillon me ('#'):
                    self.opt.url.append (rreshti)
        nëse jo vetë.opt.output_dir:
            self.opt.output_dir = os.path.expanduser ('~ / Desktop')
        nëse jo vetë.opt.filetype:
            self.opt.filetype = ['. torrent'] nëse jo self.opt.error_log:
            self.opt.error_log = self.opt.downloaded_torrents + '. gabime'
        provoni:
            os.makedirs (vetë.opt.output_dir)
        përveç OSE Gabim:
            nëse jo os.path.exists (self.opt.output_dir):
                shtyp ('tormoni dështoi të krijojë drejtorinë% s'% self.opt.output_dir)
                dalja (1)
    def load_list_of_aliest_downloaded_torrents (vetë):
        provoni:
            self.downloaded = open (self.opt.downloaded_torrents, 'r'). lexo (). split ()
        përveç IOError:
            vetë.shkarkuar = [] provoni:
            self.errors = open (self.opt.error_log, 'r'). read (). split ()
        përveç IOError:
            self.errors = [] def update_downloaded (vetë, url):
        vetë. shkarkuar. shtoj (url)
        provoni:
            vetë. gabime. hiq (url)
        përveç ValueError:
            kalojë        
    def download_torrent (vetë, url):
        provoni:
            çorape = urllib2.urlopen (url)
        përveç (Error HTTP, URLError):
            # print ('tormoni dështoi të shkarkonte% s'% url)
            nëse url jo në vetvete. gabimet:
                vetë. gabime. shtojcë (url)
        tjeter:
            emri i skedarit = vetë.url2filename (url)
            target_file = os.path.join (self.opt.output_dir, emri i skedarit)
            shtyp ('Shkarkimi i% s'% target_file)
            përmbajtja = çorape.lexo ()
            çorape.ngri ()
            fh = e hapur (skedari_ target, 'w')
            fh. shkruaj (përmbajtjen)
            fh. mbyll ()
            self.update_downloaded (url)
    def url2filename (vetë, url):
        kthimi os.path.basename (urlparse.urlparse (url) [2])
    def_ është shkarkuar (vetë, url):
        nëse vetë.opt.match_by_filename:
            emri i skedarit = vetë.url2filename (url)
            kthimi (emri i skedarit në [self.url2filename (link) për lidhje në self.downloaded])
        tjeter:
            kthimi (url në vetvete. shkarkuar)
    def parse_rss_feed (vetë):
        për url në vetvete.opt.url:
            shtyp ('RSS RSS:% s'% url)
            provoni:
                çorape = urllib2.urlopen (url)
            përveç (Error HTTP, URLError):
                shtyp ('tormoni dështoi të shkarkonte% s'% url)
            tjeter:
                përmbajtja = çorape.lexo ()
                çorape.ngri ()
                supë = BeautifulSoup (përmbajtja)
                lidhje = ([link.nextSibling për lidhje në supë.findAll ('lidhje')] +
                       [link ['href'] për lidhje në supë. findAll ('a')] +
                       [link ['url'] për lidhje në supë. findAll ('media: përmbajtja')]]
                për lidhje në lidhje:
                    nëse (ndonjë ([link.lower (). mbaron me (mbaron))
                             për përfundimin në vetvete.opt.filetype])
                        dhe jo vetvetja. ka_ qenë shkarkuar (link)):
                        nëse vetë.opt.mark_all_downloaded:
                            shtyp ('Shënimi i% s si i shkarkuar'% link)
                            self.update_downloaded (link)
                        tjeter:
                            self.download_torrent (lidhje)
    def ruaj_listin_ e_përgatitur_torrentë të shkarkuar (vetë):
        fh = hapur (self.opt.downloaded_torrents, 'w')
        fh. shkruaj ('n'. bashkohu (vetë. shkarkuar))
        fh. mbyll ()
        fh = hapur (self.opt.error_log, 'w')
        fh. shkruaj ('n'. bashkohu (vetë. gabimet))
        fh. mbyll ()
    def __init __ (vetë):
        self.parse_options ()        
        self.load_list_of_already_downloaded_torrents ()
        provoni:
            self.parse_rss_feed ()
        përveç KeyboardInterrupt:
            kalojë
        me ne fund:
            self.save_list_of_alified_downloaded_torrents ()
nëse __name __ == '__ kryesore__':
    Kryesore ()

3. - Jepi leje ekzekutimi.

chmod + x ~ / bin / tormon.py

4. - Kontrolloni që gjithçka të funksionojë mirë.

tormon.py -O ~ / torrents / -u "http: //rss.feed"

Ku thote / përrenj /, ju duhet ta zëvendësoni atë me rrugën ku dëshironi të ruani torrentët e shkarkuar. Mbani në mend se do të ketë shumë skedarë .torrent.

Aty ku thuhet "http: //rss.feed", duhet ta zëvendësoni atë me URL-në e RSS-it të serive tuaja të preferuara. Si ta gjeni? Epo në rast se doni të përdorni ezRSS, Unë shkova në faqen kryesore dhe shkruaj emrin e serisë. Një listë e madhe do të shfaqet me rezultatet. Në rast se doni të përsosni kërkimin tuaj (data e filtrimit, cilësia ose personi që e shqye videon), mund ta bëni duke ju drejtuar me shembujt që janë botuar qartë në atë faqe. Pasi të keni rezultatet që kërkoni, klikoni me të djathtën në lidhjen që thotë Burim RSS i bazuar në kërkim që shfaqet pranë karakteristikës së butonit portokalli të burimeve RSS. Kopjoni lidhjen dhe ngjisni atë duke zëvendësuar http://rss.feed e shembullit.

Disa të dhëna shtesë për tu mbajtur në mend:

  • Nëse parametri -O hiqet, skedarët .torrent do të shkarkohen në Desktop.
  • Nëse ekzekutoni të njëjtën komandë menjëherë më pas, ajo nuk duhet të shkarkojë ndonjë torrent të ri, përveç nëse një torrent i ri është shtuar në burimin RSS.
  • Kjo komandë krijon dosjen ku do të ruhen torrentët nëse nuk ekziston.
  • Një listë e URL-ve të torrentëve të shkarkuar me sukses do të ruhet në tor /. Shkarkuar_torrentë.
  • Për të monitoruar më shumë se 1 burim RSS, mund të përdorni parametrin -u. Shembull: tormon.py -u "http: //rss.feed1" -u "http: //rss.feed2"

5. - Nëse gjithçka funksionon mirë, mund ta shtoni skriptin si një detyrë të planifikuar të crontab.

crontab -e

Kjo komandë do të hapë një redaktues teksti.

Ngjit kodin e mëposhtëm në mënyrë që të jetë në fillim të skedarit:

PATH = / sbin: / bin: / usr / sbin: / usr / bin: / home / USER / bin
MAILTO = PERRDORUESI

Ndryshimi PERRDORUESI me emrin tuaj të përdoruesit.

Ngjit kodin e mëposhtëm diku më poshtë Rruga =

* / 15 * * * * tormon.py -u "http: //rss.feed"

Kjo do të ekzekutojë skenarin çdo 15 minuta. Sigurisht, ju mund ta ndryshoni atë në përputhje me nevojat tuaja. Kur bëhet fjalë për serialet televizive, mund të jetë e mençur të drejtohet një herë në javë. Mos harroni të lexoni postimin tonë të mëparshëm, në të cilin shpjegojmë hap pas hapi si të shtoni detyra në crontab.

Për ta drejtuar atë çdo të Dielë në 10:XNUMX:

00 10 * * 0 tormon.py -u "http: //rss.feed"
Shënim: mos harroni të zëvendësoni parametrat e kaluar stuhi.py me ato që përshtaten me nevojat tuaja. Të paktën, në komandën e mësipërme, duhet të zëvendësoni URL-në e RSS-it.

Për të përfunduar, sigurohuni që të ketë një vijë të zbrazët në fund të skedarit crontab. Nuk e di pse por është një kërkesë e crontab që gjithçka të funksionojë mirë.

Ruani skedarin dhe dilni nga redaktuesi i tekstit.

Shënim: në rast se keni të instaluar një agjent transferimi të postës elektronike, siç është exim4, rreshti MAILTO = P USRDORUESI do t'i tregojë crontab t'ju dërgojë rezultatet e ekzekutimit të tormon.py në një e- postës


Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.

  1.   jakeukalane dijo

    Epo për fat të mirë unë di disa anglisht. Unë e bëra atë me YaRSS. Shikoni nëse funksionon.

  2.   jakeukalane dijo

    Po fresk por askush nuk shpjegon se si të përdoret FlexRSS. Në faqen tuaj është shumë mirë, por unë nuk kam gjetur një mënyrë për ta shtuar atë në përmbytje ... ata gjithashtu thonë se Deluge vjen me një nga default dhe nuk është e vërtetë.

    të fala

  3.   Miquel Mayol i Tur dijo

    Qbittorrent dhe të tjerët kanë sisteme të integruara të planifikimit. Do të ishte mirë të shpjegonim se si funksionon secili prej tyre. Unë zakonisht shpjegoj mikrotorin për MS WOS dhe Qbittorrent për Linux. Në spoiler kishte një tutorial, por me siguri që do të merrni shumë vizita nëse bëni video me secilin program torrent të njohur, duke shtuar për shembull EZ

  4.   Le të përdorim Linux dijo

    Faleminderit Miquel! Do ta marr parasysh, si të gjitha komentet dhe sugjerimet tuaja!
    Unë të dërgoj një përqafim të madh! Paul.

  5.   Bari i detit dijo

    Këtu është një depo që përmban këtë program:
    https://launchpad.net/~lopeztobal/+archive/maths
    nëpërmjet: http://linuxmusica.com/

  6.   Shariku dijo

    Ndaloni predikimin e përdorimit të një bërthame dhe përhapni përdorimin e një sistemi operativ!

  7.   Le të përdorim Linux dijo

    Hehe ...