כיצד להוריד את הסדרה המועדפת עליך באופן אוטומטי

בפוסט אחר דיברנו עליו הורדת פרקי טורנט (TED), תוכנית מצוינת שנכתבה בג'אווה המאפשרת לנו להוסיף את הסדרות המועדפות עלינו ולהוריד אותן אוטומטית עם צאת הפרקים החדשים.

השיטה המתוארת בפוסט זה מהווה אלטרנטיבה ל- TED, שרבים מכם כנראה ימצאו עניין..

הערה: לפני שנתחיל נראה זהיר לומר שישנן שיטות אחרות להשגת אותן תוצאות. אחת הדרכים לעשות זאת היא באמצעות TED, אך ישנם גם לקוחות סיקור שמגיעים עם תמיכת RSS (מה שהופך את הכל להרבה יותר קל). כמו כן, ישנם סקריפטים אחרים (הדומים לזה שמוצג למטה) שעושים את אותו הדבר (ואפילו טוב יותר) ... אני חושב למשל על FlexRSS.

השיטה מורכבת מיצירת משימה מתוזמנת שמפעילה סקריפט פיתון כל כמה זמן. סקריפט זה מוריד את הזרמים באמצעות RSS. אתרי הורדות סיקור רבים מאפשרים אפשרות זו, הינה הפופולארית ביותר ezRSS. היתרון בשימוש ב- RSS להורדת טורנטים הוא בכך שהוא מאפשר לך "להירשם" ולהוריד את טורנטים של הסדרה המועדפת עליך ככל שמופיעים פרקים חדשים. בדיוק כמו כשאתה מנוי לבלוג או לעדכון חדשות.

השלבים הבאים

1.- התקן את החבילה מרק יפה-פיתון.

sudo apt-get install python-beautifuloup

2.- פתח את עורך הטקסט המועדף עליך. העתק את הקוד הבא לתוכו ושמור את הקובץ בשם הבא: ~ / bin / tormon.py

#! / usr / bin / env פיתון

ייבא urllib2, urlparse
מ- urllib2 יבוא HTTPError, URLError
מייבוא
יבוא os
יבוא optparse

__ שימוש __ = ""
tormon.py -O ~ / test / tormon -u "http: //rss.feed"
'' '

מחלקה ראשית (אובייקט):
    '' '
    tormon בודק עדכון rss לאיתור טורנטים חדשים. כאשר הוא מוצא. טורנט חדש, אל
    מוריד אותו לספריית פלט שצוינה, שם (ככל הנראה) ניטור
    תוכנית סיקור תוריד את הקובץ המתאים.    
    '' '
    def parse_options (עצמי):
        use = 'use:% prog [options]' + __ use__
        מנתח = optparse.OptionParser (שימוש = שימוש)
        parser.add_option (
            '-O', '--output_dir', dest = 'output_dir',
            help = 'מדריך לתוכו נשמרים טורנטים חדשים',
            metavar = 'DIR')
        parser.add_option (
            '-f', '--filetype', dest = 'filetype',
            פעולה = 'הוסף',
            ברירת מחדל = [],
            help = 'סוגי קבצים מותרים',
            metavar = 'TYPE')
        parser.add_option (
            '-d', '- downloaded_torrents', dest = 'הורד_טורנטים',
            ברירת מחדל = os.path.expanduser ('~ / .downloaded_torrents'),
            help = 'יומן של טורנטים שכבר הורדו',
            metavar = 'FILE')
        parser.add_option (
            '-e', '--error_log', dest = 'error_log',
            help = 'יומן הטורנטים טורמון נכשל בהורדה',
            metavar = 'FILE')
        parser.add_option (
            '-b', '--batch', dest = 'אצווה',
            help = 'קובץ המכיל רשימת כתובות אתרים להזנת RSS',
            metavar = 'FILE')
        parser.add_option (
            '-u', '--url', dest = 'url',
            פעולה = 'הוסף',
            ברירת מחדל = [],
            help = 'url of the RSS feed',
            metavar = 'URL')
        parser.add_option (
            '-m', '- mark_all_downloaded', dest = 'mark_all_downloaded',
            פעולה = 'חנות_אמת',
            ברירת מחדל = שקר,
            help = "סמן את כל הטורנטים שהורדו כבר")
        parser.add_option (
            '-M', '- match_by_filename', dest = 'match_by_filename',
            פעולה = 'חנות_אמת',
            ברירת מחדל = שקר,
            help = "זיהוי קבצים שהורדו לפי שם קובץ ולא כתובת URL. ברירת המחדל היא התאמה לפי כתובת URL.")        
        (self.opt, args) = parser.parse_args ()
        אם self.opt.batch:
            לתור פתוח (self.opt.batch, 'r'):
                line = line.strip ()
                אם שורה ולא line.startswith ('#'):
                    self.opt.url.append (שורה)
        אם לא self.opt.output_dir:
            self.opt.output_dir = os.path.expanduser ('~ / Desktop')
        אם לא self.opt.filetype:
            self.opt.filetype = ['. סיקור'] אם לא self.opt.error_log:
            self.opt.error_log = self.opt.downloaded_torrents + '. שגיאות'
        נסה:
            os.makedirs (self.opt.output_dir)
        למעט OSError:
            אם לא os.path.exists (self.opt.output_dir):
                הדפס ('הטורמון נכשל ביצירת הספריה% s'% self.opt.output_dir)
                יציאה (1)
    def load_list_of_already_downloaded_torrents (עצמי):
        נסה:
            self.downloaded = open (self.opt.downloaded_torrents, 'r'). קרא (). split ()
        למעט IOError:
            self.downloaded = [] נסה:
            self.errors = פתוח (self.opt.error_log, 'r'). קרא (). split ()
        למעט IOError:
            self.errors = [] def update_downloaded (self, url):
        self.downloaded.append (url)
        נסה:
            self.errors.remove (url)
        למעט ValueError:
            לעבור        
    def download_torrent (עצמי, url):
        נסה:
            גרב = urllib2.urlopen (url)
        למעט (HTTPError, URLError):
            # print ('הטורמון לא הצליח להוריד את% s'% url)
            אם כתובת האתר אינה בשגיאות עצמיות:
                self.errors.append (url)
        else
            שם קובץ = self.url2filename (url)
            target_file = os.path.join (self.opt.output_dir, שם קובץ)
            הדפס ('הורדת% s'% target_file)
            content = sock.read ()
            sock.close ()
            fh = פתוח (target_file, 'w')
            fh.write (תוכן)
            fh.close ()
            self.update_downloaded (url)
    def url2filename (עצמי, url):
        החזר os.path.basename (urlparse.urlparse (url) [2])
    def has_been_downloaded (self, url):
        אם self.opt.match_by_filename:
            שם קובץ = self.url2filename (url)
            להחזיר (שם קובץ ב- [self.url2filename (קישור) לקישור ב- self.downloaded))
        else
            החזר (כתובת url בהורדה עצמית)
    def parse_rss_feed (עצמי):
        לכתובת url in self.opt.url:
            הדפס ('עדכון RSS:% s'% url)
            נסה:
                גרב = urllib2.urlopen (url)
            למעט (HTTPError, URLError):
                הדפס ('הטורמון לא הצליח להוריד את% s'% url)
            else
                content = sock.read ()
                sock.close ()
                מרק = מרק יפה (תוכן)
                קישורים = ([link.nextSibling לקישור במרק.findAll ('קישור')] +
                       [קישור ['href'] לקישור ב soup.findAll ('a')] +
                       [קישור ['url'] לקישור במרק.findAll ('מדיה: תוכן')])
                לקישור בקישורים:
                    if (any ([link.lower (). endswith (ending)
                             לסיום ב- self.opt.filetype])
                        ולא self.has_been_downloaded (קישור)):
                        אם self.opt.mark_all_downloaded:
                            הדפס ('קישור% s להורדה' קישור%)
                            self.update_downloaded (קישור)
                        else
                            self.download_torrent (קישור)
    def save_list_of_already_downloaded_torrents (עצמי):
        fh = פתוח (self.opt.downloaded_torrents, 'w')
        fh.write ('n'.join (הורדה עצמית))
        fh.close ()
        fh = פתוח (self.opt.error_log, 'w')
        fh.write ('n'.join (שגיאות עצמיות))
        fh.close ()
    def __init __ (עצמי):
        self.parse_options ()        
        self.load_list_of_already_downloaded_torrents ()
        נסה:
            self.parse_rss_feed ()
        למעט KeyboardInterrupt:
            לעבור
        סוף סוף:
            self.save_list_of_already_downloaded_torrents ()
אם __name __ == '__ main__':
    ראשי ()

3.- הענק לו הרשאות ביצוע.

chmod + x ~ / bin / tormon.py

4.- בדוק שהכל עובד בסדר.

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

איפה אומר ~ / טורנטים /, עליך להחליף אותו בנתיב שבו ברצונך לשמור את הטורנטים שהורדת. זכור כי יהיו הרבה קבצי .torrent.

כאשר כתוב "http: //rss.feed", עליך להחליף אותו בכתובת ה- URL של עדכון ה- RSS של הסדרה המועדפת עליך. איך להשיג את זה? ובכן למקרה שתרצו להשתמש ezRSS, הלכתי לדף הראשי וכתבתי את שם הסדרה. רשימה ענקית תופיע עם התוצאות. במקרה שתרצה לחדד את החיפוש שלך (תאריך סינון, איכות או אדם שקרע את הסרטון), תוכל לעשות זאת על ידי הדרכתך עם הדוגמאות המתפרסמות בבירור בדף זה. ברגע שיש לך את התוצאות שאתה מחפש, לחץ לחיצה ימנית על הקישור שאומר עדכון RSS מבוסס חיפוש שמופיע לצד הכפתור הכתום האופייני לעדכוני RSS. העתק את הקישור והדבק אותו במקום ה- http://rss.feed של הדוגמה.

כמה נתונים נוספים שיש לזכור:

  • אם הפרמטר -O מושמט, קבצי .torrent יורדו לשולחן העבודה.
  • אם אתה מפעיל את אותה פקודה מיד לאחר מכן, היא לא אמורה להוריד שום סיקור חדש, אלא אם כן הוסף סיקור חדש לעדכון ה- RSS.
  • פקודה זו יוצרת את התיקיה שבה יישמרו הטורנטים אם היא לא קיימת.
  • רשימה של כתובות ה- URL של הטורנטים שהורדו בהצלחה תישמר ב- ~ / .downloaded_torrents.
  • כדי לפקח על יותר מ -1 עדכון RSS, אתה יכול להשתמש בפרמטר -u. דוגמה: tormon.py -u "http: //rss.feed1" -u "http: //rss.feed2"

5.- אם הכל עובד בסדר, אתה יכול להוסיף את הסקריפט כמשימה מתוזמנת של crontab.

-e crontab

פקודה זו תפתח עורך טקסט.

הדבק את הקוד הבא כך שיהיה בתחילת הקובץ:

PATH = / sbin: / bin: / usr / sbin: / usr / bin: / home / USER / bin
MAILTO = משתמש

שינוי משתמש לפי שם המשתמש שלך.

הדבק את הקוד הבא איפשהו למטה PATH = ...

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

פעולה זו תריץ את התסריט כל רבע שעה. בטח, אתה יכול לשנות את זה כדי להתאים לצרכים שלך. כשמדובר בסדרות טלוויזיה, זה אולי יהיה זהיר להפעיל אותו פעם בשבוע. אל תשכח לקרוא את ההודעה הקודמת שלנו בה אנו מסבירים שלב אחר שלב כיצד להוסיף משימות ל- crontab.

לרוץ כל יום ראשון בשעה 10 בבוקר:

00 10 * * 0 tormon.py -u "http: //rss.feed"
הערה: אל תשכח להחליף את הפרמטרים שעברו storm.py עם אלה שמתאימים לצרכים שלך. לכל הפחות, בפקודה לעיל, יהיה עליך להחליף את כתובת ה- URL של עדכון ה- RSS.

לסיום, ודא שיש שורה ריקה בסוף קובץ crontab. אני לא יודע למה, אבל זו דרישה לקרונטאב שהכל יעבוד בסדר.

שמור את הקובץ וצא מעורך הטקסט.

הערה: במקרה שיש לך סוכן העברת דוא"ל מותקן, כגון exim4, הקו MAILTO = USER יורה ל- crontab לשלוח לך את תוצאות הביצוע של tormon.py בדוא"ל.


השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

  1. אחראי לנתונים: מיגל אנחל גטון
  2. מטרת הנתונים: בקרת ספאם, ניהול תגובות.
  3. לגיטימציה: הסכמתך
  4. מסירת הנתונים: הנתונים לא יועברו לצדדים שלישיים אלא בהתחייבות חוקית.
  5. אחסון נתונים: מסד נתונים המתארח על ידי Occentus Networks (EU)
  6. זכויות: בכל עת תוכל להגביל, לשחזר ולמחוק את המידע שלך.

  1.   ג'ייקוקאלנה דיג'ו

    טוב למזלי אני יודע קצת אנגלית. עשיתי את זה עם YaRSS. לראות אם זה עובד.

  2.   ג'ייקוקאלנה דיג'ו

    כן מגניב. אך איש אינו מסביר כיצד להשתמש ב- FlexRSS. בדף שלך הכל נחמד מאוד אבל לא מצאתי דרך להוסיף אותו להציף ... הם גם אומרים שמבול מגיע עם ברירת מחדל וזה לא נכון.

    לגבי

  3.   מיקל מאול אי טור דיג'ו

    ל- Qbittorrent ואחרות יש מערכות תזמון מובנות. יהיה טוב להסביר כיצד כל אחד מהם עובד. בדרך כלל אני מסביר את המיקרו-טורנט עבור MS WOS ואת ה- Qbittorrent עבור לינוקס. בספוילר היה הדרכה, אך אין ספק שתקבלו ביקורים רבים אם תכינו סרטונים עם כל תוכנית סיקור פופולרית ותוסיפו למשל את ה- EZ

  4.   בואו נשתמש בלינוקס דיג'ו

    תודה מיקל! אני אקח את זה בחשבון, כמו כל ההערות וההצעות שלך!
    אני שולח לך חיבוק גדול! פול.

  5.   עשב ים דיג'ו

    הנה מאגר המכיל תוכנית זו:
    https://launchpad.net/~lopeztobal/+archive/maths
    בְּאֶמצָעוּת: http://linuxmusica.com/

  6.   שאריק דיג'ו

    הפסיקו להטיף לשימוש בגרעין והפיצו את השימוש במערכת הפעלה!

  7.   בואו נשתמש בלינוקס דיג'ו

    חה חה ...