Kuinka ladata suosikkisarjasi automaattisesti

Toisessa viestissä puhuimme Torrent-jaksojen latausohjelma (TED), erinomainen Java-ohjelmassa kirjoitettu ohjelma, jonka avulla voimme lisätä suosikkisarjamme ja ladata ne automaattisesti uusien lukujen ilmestyessä.

Tässä viestissä kuvattu menetelmä on vaihtoehto TED: lle, jota monet teistä todennäköisesti kiinnostavat..

Huomaa: Ennen kuin aloitamme, näyttää järkevältä sanoa, että on olemassa muita menetelmiä saavuttaa sama tulos. Yksi tapa tehdä tämä on käyttää TED: ää, mutta on myös joitain torrent-asiakkaita, jotka tulevat RSS-tuella (mikä tekee kaikesta paljon helpompaa). Lisäksi on olemassa muita skriptejä (samanlaisia ​​kuin alla olevat), jotka tekevät saman (ja jopa paremmin) ... Ajattelen esimerkiksi FlexRSS: ää.

Menetelmä koostuu ajoitetun tehtävän luomisesta, joka suorittaa python-komentosarjan niin usein. Tämä skripti lataa torrentit RSS: n kautta. Monet torrentin lataussivustot sallivat tämän vaihtoehdon, suosituin on ezRSS. RSS: n käytön etuna torrentien lataamisessa on, että sen avulla voit "tilata" ja ladata suosikkisarjasi torrentit uusien lukujen ilmestyessä. Aivan kuten tilatessasi blogin tai uutissyötteen.

Seuraavat vaiheet

1.- Asenna paketti python-kaunis keitto.

sudo apt-get asenna python-beautifulsoup

2.- Avaa suosikki tekstieditori. Kopioi seuraava koodi siihen ja tallenna tiedosto seuraavalla nimellä: ~ / bin / tormon.py

#! / usr / bin / env python

tuo urllib2, urlparse
tiedostosta urllib2 tuonti HTTPError, URLError
from BeautifulSoup tuo BeautifulSoup
tuonti os
tuo optparse

__käyttö __ = '' '
tormon.py -O ~ / test / tormon -u "http: //rss.feed"
'''

luokka Pää (esine):
    '''
    tormon tarkistaa RSS-syötteen uusien torrentien varalta. Kun se löytää uuden .torrent-tiedoston,
    lataa sen määritettyyn lähtöhakemistoon, jossa (oletettavasti) valvonta
    torrent-ohjelma lataa vastaavan tiedoston.    
    '''
    def parse_options (itse):
        käyttö = 'käyttö:% prog [vaihtoehdot]' + __ käyttö__
        parser = optparse.OptionParser (käyttö = käyttö)
        parser.add_option (
            '-O', '--output_dir', dest = 'output_dir',
            help = 'hakemisto, johon uudet torrentit tallennetaan',
            metavar = 'DIR')
        parser.add_option (
            '-f', '--filetype', dest = 'tiedostotyyppi',
            action = 'liitä',
            oletus = [],
            help = 'hyväksyttävät tiedostotyypit',
            metavar = 'TYYPPI')
        parser.add_option (
            '-d', '--downloaded_torrents', dest = 'ladatut_torrentit',
            oletus = os.path.expanduser ('~ / .downloaded_torrents'),
            help = 'jo ladattujen torrentien loki',
            metavar = 'TIEDOSTO')
        parser.add_option (
            '-e', '--error_log', dest = 'error_log',
            help = 'torrent-lokin lataaminen tormonia epäonnistui',
            metavar = 'TIEDOSTO')
        parser.add_option (
            '-b', '--batch', dest = 'erä',
            help = 'tiedosto, joka sisältää luettelon rss-syötteen URL-osoitteista',
            metavar = 'TIEDOSTO')
        parser.add_option (
            '-u', '--url', dest = 'url',
            action = 'liitä',
            oletus = [],
            help = 'RSS-syötteen URL-osoite',
            metavar = 'URL')
        parser.add_option (
            '-m', '- mark_all_downloaded', dest = 'mark_all_downloaded',
            action = 'store_true',
            oletus = väärä,
            help = "merkitse kaikki torrentit ladatuiksi")
        parser.add_option (
            '-M', '- match_by_filename', dest = 'match_by_filename',
            action = 'store_true',
            oletus = väärä,
            help = "tunnista ladatut tiedostot tiedostonimen, ei URL-osoitteen perusteella. Oletusarvoinen haku vastaa URL-osoitetta.")        
        (self.opt, args) = jäsennin.parse_args ()
        jos itse.opt.erä:
            avoimelle linjalle (itseop. erä, 'r'):
                line = line.strip ()
                jos viiva ja ei viiva. aloitusvaihe ('#'):
                    self.opt.url.append (rivi)
        jos ei itse.opt.output_dir:
            self.opt.output_dir = os.path.expanduser ('~ / Desktop')
        ellei se ole itse. opt. tiedostotyyppi:
            self.opt.filetype = ['. torrent'] ellei itse.opt.error_log:
            self.opt.error_log = self.opt.downloaded_torrents + '. virheet'
        yrittää:
            os.makedirs (self.opt.output_dir)
        paitsi OSError:
            jos ei os.path.exists (self.opt.output_dir):
                tulosta ('tormon ei luonut hakemistoa% s'% self.opt.output_dir)
                poistua (1)
    def load_list_of_already_downloaded_torrents (itse):
        yrittää:
            itse.lataus = avoin (itse.opt.lataus_torrentit, 'r'). lue (). jako ()
        paitsi IOError:
            self.downloaded = [] kokeile:
            self.errors = open (self.opt.error_log, 'r'). read (). split ()
        paitsi IOError:
            self.errors = [] def update_downloaded (itse, URL):
        self.downloaded.append (url)
        yrittää:
            self.errors.remove (url)
        paitsi ValueError:
            kulkea        
    def download_torrent (itse, URL):
        yrittää:
            sukka = urllib2.urlopen (url)
        paitsi (HTTPError, URLError):
            # print ('tormonin lataaminen epäonnistui% s'% url)
            jos URL-osoite ei ole itse. virheissä:
                self.errors.append (url)
        else:
            tiedostonimi = itse.url2tiedostonimi (URL)
            target_file = os.path.join (self.opt.output_dir, tiedostonimi)
            tulosta ('Ladataan% s'% target_file)
            content = sukka.luku ()
            sukka.sulje ()
            fh = avoin (kohde_tiedosto, 'w')
            fh.write (sisältö)
            fh.close ()
            self.update_downloaded (URL)
    def url2filename (itse, URL):
        palauta os.path.basename (urlparse.urlparse (url) [2])
    def has_been_downloaded (self, url):
        jos itse.opt.match_by_filename:
            tiedostonimi = itse.url2tiedostonimi (URL)
            return (tiedostonimi tiedostossa [itse.url2tiedostonimi (linkki) linkille itsestään.lataus])
        else:
            return (URL itse. ladattu)
    def parse_rss_feed (itse):
        URL-osoitteelle self.opt.url:
            tulosta ('RSS-syöte:% s'% url)
            yrittää:
                sukka = urllib2.urlopen (url)
            paitsi (HTTPError, URLError):
                tulosta ('tormon ei onnistunut lataamaan% s'% url)
            else:
                content = sukka.luku ()
                sukka.sulje ()
                keitto = BeautifulSoup (sisältö)
                links = ([link.nextSibling linkille keittossa.findAll ('linkki')] +
                       [link ['href'] linkille keitto.findAll ('a')] +
                       [linkki ['url'] linkille keitto.findAll ('media: sisältö')])
                linkille linkeissä:
                    jos (mikä tahansa ([linkki.lower (). endswith (loppu)
                             päättyessä self.opt.filetype])
                        ja ei itse. has_been_downloaded (link)):
                        jos itse.opt.mark_all_downloaded:
                            tulosta ('Merkitään% s ladattavaksi'% link)
                            self.update_downloaded (linkki)
                        else:
                            self.download_torrent (linkki)
    def save_list_of_already_downloaded_torrents (itse):
        fh = auki (itse.opt.latattu_torrents, 'w')
        fh.write ('n'.join (itse ladattu))
        fh.close ()
        fh = avoin (its.opt.error_log, 'w')
        fh.write ('n'.join (itsevirheet))
        fh.close ()
    def __init __ (itse):
        self.parse_options ()        
        self.load_list_of_already_downloaded_torrents ()
        yrittää:
            self.parse_rss_feed ()
        paitsi KeyboardInrtrupt:
            kulkea
        lopuksi:
            self.save_list_of_already_downloaded_torrents ()
jos __nimi __ == '__ main__':
    Pää ()

3.- Myönnä sille suoritusoikeudet.

chmod + x ~ / bin / tormon.py

4.- Tarkista, että kaikki toimii hyvin.

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

Missä sanotaan ~ / torrentit /, sinun on korvattava se polulla, johon haluat tallentaa ladatut torrentit. Muista, että .torrent-tiedostoja on paljon.

Jos siinä lukee "http: //rss.feed", sinun on korvattava se suosikkisarjasi RSS-syötteen URL-osoitteella. Kuinka saada se? No, jos haluat käyttää ezRSS, Menin pääsivulle ja kirjoitin sarjan nimen. Tulosten mukana tulee valtava luettelo. Jos haluat tarkentaa hakua (suodattaa päivämäärä, laatu tai video kopioinut henkilö), voit tehdä sen ohjaamalla sinut esimerkkeihin, jotka on selvästi julkaistu tällä sivulla. Kun olet saanut etsimäsi tulokset, napsauta hiiren oikealla painikkeella linkkiä Hakupohjainen RSS-syöte joka näkyy RSS-syötteiden oranssin painikkeen vieressä. Kopioi linkki ja liitä se korvaamalla http://rss.feed esimerkistä.

Jotkut ylimääräiset tiedot pidettävä mielessä:

  • Jos -O-parametri jätetään pois, .torrent-tiedostot ladataan työpöydälle.
  • Jos suoritat saman komennon heti sen jälkeen, sen ei pitäisi ladata uutta torrentia, ellei uutta torrentia ole lisätty RSS-syötteeseen.
  • Tämä komento luo kansion, johon torrentit tallennetaan, jos sitä ei ole olemassa.
  • Luettelo onnistuneesti ladattujen torrentien URL-osoitteista tallennetaan hakemistoon ~ / .downloaded_torrents.
  • Voit seurata useampaa kuin yhtä RSS-syötettä käyttämällä parametria -u. Esimerkki: tormon.py -u "http: //rss.feed1" -u "http: //rss.feed1"

5.- Jos kaikki toimii hyvin, voit lisätä komentosarjan crontab-ajoitetuksi tehtäväksi.

crontab -e

Tämä komento avaa tekstieditorin.

Liitä seuraava koodi siten, että se on tiedoston alussa:

PATH = / sbin: / bin: / usr / sbin: / usr / bin: / home / USER / bin
MAILTO = KÄYTTÄJÄ

Muuttaa USER käyttäjänimelläsi.

Liitä seuraava koodi jonnekin alapuolelle PATH =…

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

Tämä suorittaa komentosarjan 15 minuutin välein. Toki, voit muuttaa sen tarpeidesi mukaan. Kun on kyse televisiosarjoista, saattaa olla järkevää suorittaa se kerran viikossa. Älä unohda lukea edellistä viestiämme, jossa selitämme askel askeleelta miten lisätä tehtäviä crontab.

Ajo joka sunnuntai klo 10:

00 10 * * 0 tormon.py -u "http: //rss.feed"
Huomaa: älä unohda vaihtaa parametrit, joille välitettiin storm.py tarpeidesi kanssa. Ainakin yllä olevassa komennossa joudut korvaamaan RSS-syötteen URL-osoitteen.

Viimeistele varmistamalla, että crontab-tiedoston lopussa on tyhjä rivi. En tiedä miksi, mutta kaikkien on toimittava kunnolla.

Tallenna tiedosto ja poistu tekstieditorista.

Huomaa: Jos sinulla on asennettuna sähköpostinsiirtoagentti, kuten exim4, rivi MAILTO = USER käskee crontabia lähettämään sinulle tormon.py-ohjelman suorituksen tulokset sähköpostitse. posti.


Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastuussa tiedoista: Miguel Ángel Gatón
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.

  1.   jakeukalane dijo

    No onneksi osaan englantia. Tein sen YaRSS: n kanssa. Katso jos se toimii.

  2.   jakeukalane dijo

    Kyllä siistiä. mutta kukaan ei selitä kuinka FlexRSS: ää käytetään. Sivullasi kaikki on erittäin mukavaa, mutta en ole löytänyt tapaa lisätä sitä vedenpaisumukseen ... he sanovat myös, että Deluge toimitetaan oletusarvoisesti, eikä se ole totta.

    terveiset

  3.   Miquel Mayol ja Tur dijo

    Qbittorrentilla ja muilla on sisäänrakennetut ajoitusjärjestelmät. Olisi hyvä selittää, miten kukin niistä toimii. Selitän yleensä MS WOS: n mikrotorrentin ja Linux: n Qbittorrentin. Spoilerissa oli opetusohjelma, mutta varmasti saat paljon käyntejä, jos teet videoita jokaisen suositun torrent-ohjelman kanssa, lisäämällä esimerkiksi EZ

  4.   Käytetään Linuxia dijo

    Kiitos Miquel! Otan sen huomioon, kuten kaikki kommenttisi ja ehdotuksesi!
    Lähetän sinulle suuren halauksen! Paul.

  5.   Meriheinä dijo

    Tässä on arkisto, joka sisältää tämän ohjelman:
    https://launchpad.net/~lopeztobal/+archive/maths
    kautta: http://linuxmusica.com/

  6.   Sharik dijo

    Lopeta saarnaaminen ytimen käytöstä ja levitä käyttöjärjestelmän käyttöä!

  7.   Käytetään Linuxia dijo

    Hah hah ...