מלמולים טכנולוגיים

קוד פתוח, בלון נפוח

להתעדכן בחדשות משורת הפקודה

פורסמה על־ידי ozzyboy ב 30/12/2010

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

python -c "import urllib2; import xml.dom.minidom; print('\n'.join([ item.getElementsByTagName('title')[0].childNodes[0].nodeValue for item in xml.dom.minidom.parseString(urllib2.urlopen('http://www.ynet.co.il/Integration/StoryRss1854.xml').read()).getElementsByTagName('item') ]))"

עריכה: גרסא מקוצרת ואלגנטית יותר (תודה מאיר):

python -c "import urllib2; from xml.etree.ElementTree import parse; print('\n'.join([title.text for title in parse(urllib2.urlopen('http://www.ynet.co.il/Integration/StoryRss1854.xml')).findall('/channel/item/title')]))"

והרי רשימת הכותרת מ RSS המבזקים של YNET.
ניתן לשנות את ה URL שיתאים לכל אתר אחר שמייצא RSS בצורה תקנית.
עצה קטנה: בדביאן ונגזרותיה, אם רוצים שעברית תציג כמו שצריך בטרמינל, מומלץ להשתמש ב mlterm.

פלט לדוגמא. הבלוג אינו אחראי לדיכאון העלול להגרם מקריאת הכותרות

8 תגובות לרשומה “להתעדכן בחדשות משורת הפקודה”

  1. meir כתב/ה

    ראשית אפשר לוותר על ה-parseString וה-read ולהשתמש ב-file במקום (urlopen מחזיר דמוי קובץ) וכדי לחזור על ה-namespace לייבא רק את parse, להשתמש ב-firstChild ו-data ואז נקבל:

    import urllib2; from xml.dom.minidom import parse; print('\n'.join([ item.getElementsByTagName('title')[0].firstChild.data for item in parse(urllib2.urlopen('http://www.ynet.co.il/Integration/StoryRss1854.xml')).getElementsByTagName('item') ]))

    אם רוצים גרסה פחות תקינה פוליטית, אפשר למצוא רק את title ולדלג על שני הראשונים שקישורים לערוץ:
    python -c "import urllib2; from xml.dom.minidom import parse; print('\n'.join([ title.firstChild.data for title in parse(urllib2.urlopen('http://www.ynet.co.il/Integration/StoryRss1854.xml')).getElementsByTagName('title') ][2:]))"

  2. ozzyboy כתב/ה

    מאיר – תודה על התיקון, צודק בקשר לשימוש באוביקט שמוחזר מ urlopen כקובץ, לא חשבתי על זה :)
    בקשר לגרסא הפחות תקינה פוליטית – אמנם זה מקצר קצת, אבל מרגיש לי פחות "נכון".

  3. meir כתב/ה

    עם גרסת ה-ElementTree שזמינה החל מפייתון 2.5, נקבל:
    ython -c "import urllib2; from xml.etree.ElementTree import parse; print('\n'.join([title.text for title in parse(urllib2.urlopen('http://www.ynet.co.il/Integration/StoryRss1854.xml')).findall('/channel/item/title') ]))"

  4. זיו כתב/ה

    הייתי חייב להגיב עם גרסה ב-PHP
    גרסת PHP

  5. ozzyboy כתב/ה

    תודה על השיפורים! עדכנתי את הפוסט.

  6. ירון שהרבני כתב/ה

    עכשיו כל שנותר הוא לתקן את הבאג ב־vte‏ (gnome-terminal) והכול יהיה מושלם ☺

  7. [...] לזה וזה, גם אני בפוסט [...]

  8. yblogy כתב/ה

    גרסת הBASH

להגיב

Fill in your details below or click an icon to log in:

WordPress.com Logo

אתה מגיב באמצעות חשבון WordPress.com שלך. Log Out / לשמור )

Twitter picture

אתה מגיב באמצעות חשבון Twitter שלך. Log Out / לשמור )

Facebook photo

אתה מגיב באמצעות חשבון Facebook שלך. Log Out / לשמור )

Connecting to %s

 
Follow

Get every new post delivered to your Inbox.