Hvordan laste ned favorittserien din automatisk

I et annet innlegg snakket vi om Torrent Episode Downloader (TED), et utmerket program skrevet i Java som lar oss legge til favorittseriene og laste dem ned automatisk når nye kapitler kommer ut.

Metoden beskrevet i dette innlegget er et alternativ til TED, som mange av dere sannsynligvis vil finne av interesse..

Merk: Før vi begynner, virker det forsvarlig å si at det finnes andre metoder for å oppnå de samme resultatene. En måte å gjøre dette på er å bruke TED, men det er også noen torrentklienter som kommer med RSS-støtte (som gjør alt mye lettere). Det er også andre manus (som ligner på den som er vist nedenfor) som gjør det samme (og enda bedre) ... Jeg tenker for eksempel på FlexRSS.

Metoden består i å lage en planlagt oppgave som kjører et python-skript med jevne mellomrom. Dette skriptet laster ned torrentene via RSS. Mange torrentnedlastingssider tillater dette alternativet, det mest populære ezRSS. Fordelen med å bruke RSS til å laste ned torrenter er at den lar deg "abonnere" og laste ned torrents til favorittseriene etter hvert som nye kapitler dukker opp. Akkurat som når du abonnerer på en blogg eller nyhetsfeed.

Trinnene som skal følges

1. - Installer pakken python-vakker suppe.

sudo apt-get install python-beautifulsoup

2. - Åpne favoritt teksteditoren din. Kopier følgende kode inn i den og lagre filen med følgende navn: ~ / bin / tormon.py

#! / usr / bin / env python

importer urllib2, urlparse
fra urllib2 importerer HTTPError, URLError
fra BeautifulSoup importerer BeautifulSoup
import os
importer optparse

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

klasse Hoved (objekt):
    '''
    Tormon sjekker en RSS-feed for nye torrenter. Når den finner en ny .torrent, til
    laster den ned til en spesifisert utdatakatalog, hvor (antagelig) en overvåking
    torrent-program vil laste ned den tilsvarende filen.    
    '''
    def parse_options (selv):
        bruk = 'bruk:% prog [alternativer]' + __ bruk__
        parser = optparse.OptionParser (bruk = bruk)
        parser.add_option (
            '-O', '--output_dir', dest = 'output_dir',
            help = 'katalog der nye torrenter lagres',
            metavar = 'DIR')
        parser.add_option (
            '-f', '--filetype', dest = 'filtype',
            action = 'legg til',
            standard = [],
            help = 'tillatte filtyper',
            metavar = 'TYPE')
        parser.add_option (
            '-d', '--downloaded_torrents', dest = 'downloaded_torrents',
            standard = os.path.expanduser ('~ / .downloaded_torrents'),
            help = 'logg av allerede nedlastede torrenter',
            metavar = 'FILE')
        parser.add_option (
            '-e', '--error_log', dest = 'error_log',
            help = 'log of torrents tormon kunne ikke lastes ned',
            metavar = 'FILE')
        parser.add_option (
            '-b', '--batch', dest = 'batch',
            help = 'fil som inneholder en liste over RSS-nettadresser',
            metavar = 'FILE')
        parser.add_option (
            '-u', '--url', dest = 'url',
            action = 'legg til',
            standard = [],
            help = 'url of the rss feed',
            metavar = 'URL')
        parser.add_option (
            '-m', '- mark_all_downloaded', dest = 'mark_all_downloaded',
            action = 'store_sannhet',
            standard = falsk,
            help = "merk alle torrenter som allerede lastet ned")
        parser.add_option (
            '-M', '- match_by_filename', dest = 'match_by_filename',
            action = 'store_sannhet',
            standard = falsk,
            help = "gjenkjenne nedlastede filer etter filnavn, ikke URL. Matching etter URL er standard.")        
        (self.opt, args) = parser.parse_args ()
        hvis self.opt.batch:
            for linje i åpen (self.opt.batch, 'r'):
                linje = linje.strip ()
                hvis linje og ikke line.startswith ('#'):
                    self.opt.url.append (linje)
        hvis ikke self.opt.output_dir:
            self.opt.output_dir = os.path.expanduser ('~ / Desktop')
        hvis ikke self.opt.filetype:
            self.opt.filetype = ['. torrent'] hvis ikke self.opt.error_log:
            self.opt.error_log = self.opt.downloaded_torrents + '. feil'
        prøve:
            os.makedirs (self.opt.output_dir)
        unntatt OSError:
            hvis ikke os.path.exists (self.opt.output_dir):
                print ('tormon kunne ikke opprette katalog% s'% self.opt.output_dir)
                utgang (1)
    def load_list_of_already_downloaded_torrents (selv):
        prøve:
            self.downloaded = open (self.opt.downloaded_torrents, 'r'). les (). split ()
        unntatt IOError:
            self.downloaded = [] prøve:
            self.errors = åpen (self.opt.error_log, 'r'). les (). split ()
        unntatt IOError:
            self.errors = [] def update_downloaded (self, url):
        self.downloaded.append (url)
        prøve:
            self.errors.remove (url)
        unntatt ValueError:
            passere        
    def nedlasting_torrent (selv, url):
        prøve:
            sokk = urllib2.urlopen (url)
        unntatt (HTTPError, URLError):
            # print ('tormon kunne ikke laste ned% s'% url)
            hvis url ikke er i selvfeil:
                self.errors.append (url)
        ellers:
            filnavn = self.url2filename (url)
            target_file = os.path.join (self.opt.output_dir, filnavn)
            skriv ut ('Last ned% s'% target_file)
            innhold = sock.read ()
            sock.close ()
            fh = åpen (målfil, 'w')
            fh.write (innhold)
            fh.close ()
            self.update_downloaded (url)
    def url2filnavn (selv, url):
        returner os.path.basename (urlparse.urlparse (url) [2])
    def has_been_downloaded (selv, url):
        hvis self.opt.match_by_filename:
            filnavn = self.url2filename (url)
            retur (filnavn i [self.url2filename (lenke) for lenke i selvdownloaded])
        ellers:
            return (url in self. lastet ned)
    def parse_rss_feed (selv):
        for url i self.opt.url:
            skriv ut ('RSS-feed:% s'% url)
            prøve:
                sokk = urllib2.urlopen (url)
            unntatt (HTTPError, URLError):
                print ('tormon kunne ikke laste ned% s'% url)
            ellers:
                innhold = sock.read ()
                sock.close ()
                suppe = BeautifulSoup (innhold)
                lenker = ([link.nextSibling for link in soup.findAll ('link')] +
                       [lenke ['href'] for lenke i suppe.findAll ('a')] +
                       [lenke ['url'] for lenke i suppe.findAll ('media: content')])
                for lenke i lenker:
                    hvis (noen ([link.lower (). slutter med (slutter))
                             for å avslutte med self.opt.filetype])
                        og ikke self.has_been_downloaded (lenke)):
                        hvis self.opt.mark_all_downloaded:
                            skriv ut ('Merking av% s som nedlastet'% lenke)
                            self.update_downloaded (lenke)
                        ellers:
                            self.download_torrent (lenke)
    def save_list_of_already_downloaded_torrents (self):
        fh = open (self.opt.downloaded_torrents, 'w')
        fh.write ('n'.join (selvdownloaded))
        fh.close ()
        fh = åpen (self.opt.error_log, 'w')
        fh.write ('n'.join (selvfeil))
        fh.close ()
    def __init __ (selv):
        self.parse_options ()        
        self.load_list_of_already_downloaded_torrents ()
        prøve:
            self.parse_rss_feed ()
        unntatt KeyboardInterrupt:
            passere
        endelig:
            self.save_list_of_already_downloaded_torrents ()
hvis __navn __ == '__ main__':
    Hoved ()

3. - Gi det gjennomføringstillatelser.

chmod + x ~ / bin / tormon.py

4. - Sjekk at alt fungerer bra.

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

Hvor sier ~ / torrenter /, må du erstatte den med banen der du vil lagre nedlastede torrenter. Husk at det vil være mange .torrent-filer.

Der det står "http: //rss.feed", må du erstatte den med URL-en til RSS-feeden til favorittserien din. Hvordan får jeg det? Vel i tilfelle du vil bruke ezRSS, Jeg gikk til hovedsiden og skrev navnet på serien. En enorm liste vil vises med resultatene. I tilfelle du vil avgrense søket ditt (filtreringsdato, kvalitet eller person som har revet videoen), kan du gjøre det ved å veilede deg med eksemplene som er tydelig publisert på den siden. Når du har fått resultatene du leter etter, høyreklikker du på lenken som står Søkebasert RSS-feed som vises ved siden av den oransje knappen som er karakteristisk for RSS-feeder. Kopier lenken og lim den inn i stedet for http://rss.feed av eksemplet.

Noen ekstra data å huske på:

  • Hvis -O-parameteren er utelatt, blir .torrent-filene lastet ned til skrivebordet.
  • Hvis du kjører den samme kommandoen umiddelbart etterpå, bør den ikke laste ned noen ny torrent, med mindre en ny torrent er lagt til i RSS-feeden.
  • Denne kommandoen oppretter mappen der torrents vil bli lagret hvis den ikke eksisterer.
  • En liste over nettadressene til de vellykkede nedlastede torrents vil bli lagret i ~ / .downloaded_torrents.
  • For å overvåke mer enn 1 RSS-feed kan du bruke -u-parameteren. Eksempel: tormon.py -u "http: //rss.feed1" -u "http: //rss.feed2"

5. - Hvis alt fungerer bra, kan du legge til skriptet som en planlagt oppgave for crontab.

crontab -e

Denne kommandoen åpner en tekstredigerer.

Lim inn følgende kode slik at den er i begynnelsen av filen:

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

Endring BRUKER av brukernavnet ditt.

Lim inn følgende kode et sted nedenfor PATH =…

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

Dette kjører skriptet hvert 15. minutt. Visst, du kan endre det etter dine behov. Når det gjelder TV-serier, kan det være klokt å kjøre den en gang i uken. Ikke glem å lese vårt forrige innlegg der vi forklarer trinn for trinn hvordan du legger til oppgaver i crontab.

Å kjøre den hver søndag klokka 10:

00 10 * * 0 tormon.py -u "http: //rss.feed"
Merk: ikke glem å erstatte parametrene som sendes til storm.py med de som passer dine behov. I det minste, i kommandoen ovenfor, må du erstatte URL-en til RSS-feeden.

For å fullføre, må du sørge for at det er en tom linje på slutten av crontab-filen. Jeg vet ikke hvorfor, men det er et crontab-krav at alt skal fungere bra.

Lagre filen og avslutt teksteditoren.

Merk: i tilfelle du har en agent for overføring av e-post, for eksempel exim4, vil linjen MAILTO = USER be crontab sende deg resultatene av utførelsen av tormon.py i en e-post. post.


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.

  1.   jakeukalane sa

    Heldigvis kan jeg litt engelsk. Jeg gjorde det med YaRSS. Se om det fungerer.

  2.   jakeukalane sa

    Ja kult. men ingen forklarer hvordan du bruker FlexRSS. På siden din er det veldig hyggelig, men jeg har ikke funnet en måte å legge det til for å strømme ... de sier også at Deluge kommer med en som standard, og det er ikke sant.

    Hilsen

  3.   Miquel Mayol i Tur sa

    Qbittorrent og andre har innebygde planleggingssystemer. Det ville være bra å forklare hvordan hver enkelt av dem fungerer, jeg forklarer vanligvis mikrotorrenten for MS WOS og Qbittorrent for Linux. I spoiler var det en veiledning, men sikkert vil du få mange besøk hvis du lager videoer med hvert populære torrentprogram, og legger til for eksempel EZ

  4.   La oss bruke Linux sa

    Takk Miquel! Jeg vil ta det i betraktning, som alle dine kommentarer og forslag!
    Jeg sender deg en stor klem! Paul.

  5.   Sjøgras sa

    Her er et depot som inneholder dette programmet:
    https://launchpad.net/~lopeztobal/+archive/maths
    via: http://linuxmusica.com/

  6.   Sharik sa

    Slutt å forkynne bruken av en kjerne og forplant bruken av et operativsystem!

  7.   La oss bruke Linux sa

    Hehe ...