Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีใช้ Emacs สำหรับ RSS ด้วย Elfeed

วิธีใช้ Emacs สำหรับ RSS ด้วย Elfeed

Emacs เป็นซอฟต์แวร์ที่ขยายได้มาก มันสามารถเป็น text editor, อีเมลคลายเอ็นต์ และ USENET reader ด้วย Elfeed คุณยังสามารถใช้ Emacs เป็น RSS feed reader ได้อีกด้วย

Elfeed คืออะไร?

Elfeed เป็น RSS feed reader ที่เบาแต่ทรงพลัง เขียนสำหรับ Emacs ใช้ระบบ tag-based แบบง่ายในการจัดเรียง RSS feeds ไม่ chỉนั้น ยังมีระบบ "hook-based" tagging อันทรงพลังที่ให้คุณ auto-tag feeds ตามเนื้อหาได้

วิธีใช้ Emacs สำหรับ RSS ด้วย Elfeed

ทำให้ Elfeed เหมาะสำหรับผู้ที่ติดตาม RSS feeds เยอะและมองหาวิธีจัดเรียง feeds อัตโนมัติ

ทำไมถึงใช้ Feedreader ใน Emacs?

Emacs ทำงานบนแนวคิด interoperability (ความสามารถในการทำงานร่วมกัน) Emacs รับข้อมูลและอนุญาตให้ตีความได้หลายวิธี

วิธีใช้ Emacs สำหรับ RSS ด้วย Elfeed

แม้คุณจะใช้ Emacs แค่แก้ไขข้อความ แต่การเข้าถึงอีเมลขณะแก้ไขข้อความ เช่นกัน ช่วยให้คุณใช้ข้อความที่กำลังเขียนในอีเมลที่กำลังเขียนได้อย่างราบรื่น

วิธีใช้ Emacs สำหรับ RSS ด้วย Elfeed

นี่คือเหตุผลที่การนำ RSS feed reader มาใส่ใน Emacs น่าสนใจ มันจะให้คุณใช้ความสามารถแก้ไขข้อความอันทรงพลังของ Emacs เพื่อจัดการ feeds และฟังก์ชันอื่นๆ ใน Emacs

การติดตั้ง Elfeed บน Emacs

การติดตั้ง Elfeed ง่ายมาก มีใน GNU ELPA repository เข้าถึงได้โดยไม่ต้องแก้ไข init.el

วิธีใช้ Emacs สำหรับ RSS ด้วย Elfeed

ติดตั้ง Elfeed: กด Alt + X เพื่อเปิด command buffer พิมพ์ package-install ให้ชื่อแพ็กเกจ elfeed กด Enter Emacs จะดาวน์โหลดซอร์สโค้ด Elfeed และคอมไพล์ทันที

การตั้งค่า RSS Feed แรกใน Emacs

หลังติดตั้งแล้ว เข้าถึง Elfeed โดยกด Alt + X พิมพ์ elfeed จะโหลด Elfeed buffer ว่าง

วิธีใช้ Emacs สำหรับ RSS ด้วย Elfeed

มี 2 วิธีเพิ่ม RSS feed เข้า Elfeed:

  • แก้ไข init.el file ด้วยตนเอง
  • ภายใน Emacs

เพิ่ม RSS Feed ด้วยตนเองใน Elfeed

เพิ่ม feed URLs ใน init.el ได้ง่าย เพราะ Elfeed มีตัวแปร elfeed-feeds ที่ติดตาม บอก Elfeed ว่า feed ไหนต้อง fetch และแสดงในหน้าสรุป

ตัวอย่างจาก init.el ของผม:

(setq elfeed-feeds '("https://feeds.maketecheasier.com/MakeTechEasier" "https://solar.lowtechmagazine.com/feeds/all-en.atom.xml" "https://old.reddit.com/r/f1technical.rss"))

Setq เป็นฟังก์ชัน Emacs ตั้งค่าตัวแปร ในที่นี้ตั้งค่า elfeed-feeds ด้วยลิงก์ feed 3 รายการ

Elfeed จะเพิ่มลิงก์เหล่านั้นเข้า database ภายใน และโหลดครั้งหน้าที่รันโปรแกรม

วิธีใช้ Emacs สำหรับ RSS ด้วย Elfeed

เพิ่ม RSS Feed ภายใน Emacs

อีกวิธีคือให้ Elfeed รับ feed links ขณะรันอยู่ อัปเดต feed roster ได้โดยไม่ต้องโหลด Emacs ใหม่

กด Alt + X เปิด command buffer พิมพ์ elfeed-add-feed กด Enter Elfeed จะขอ URL ของ feed ที่ต้องการโหลด

วิธีใช้ Emacs สำหรับ RSS ด้วย Elfeed

ตัวอย่างผม ใส่ feed URL ของเราเพื่อรับอัปเดตบทความเทคโนโลยีทุกวัน

คัดลอก feed URL กด Ctrl + Y ใน URL prompt เพื่อวางลิงก์ใน Emacs กด Enter เพื่อยืนยัน

วิธีใช้ Emacs สำหรับ RSS ด้วย Elfeed

วิธี Auto-tag และ Filter Feeds ใน Emacs

นอกจากรายการและดู RSS feeds แล้ว Elfeed ยังทำฟังก์ชันอื่นๆ ให้คุณปรับแต่ง feed list ได้ละเอียด

ฟีเจอร์นึงคือ automatic tagging ให้ tag RSS entries ที่มาจาก feed เฉพาะทันที

ตัวอย่าง หากมีหลาย feeds เรื่องหัวข้อเดียวกัน สามารถตั้งให้ทุก feed มี tag เดียวกัน ทำให้จัดเรียงหลาย feeds ในหน้าสรุปได้ง่ายและเข้าใจง่าย

แก้ไข RSS feeds ใน init.el ดูตัวอย่างสั้นนี้:

(setq elfeed-feeds '(("https://feeds.maketecheasier.com/MakeTechEasier" tech news) ("https://solar.lowtechmagazine.com/feeds/all-en.atom.xml" tech) ("https://old.reddit.com/r/f1technical.rss" tech f1)))

เพื่อ auto-tag RSS feed ต้องทำ 2 อย่างกับรูปแบบ elfeed-feeds เริ่มต้น:

  • หุ้ม feed link ด้วยวงเล็บ บอก elfeed-feeds ว่ารายการนี้มีหลายส่วน
  • ให้คำที่จะเป็น tag สำหรับลิงก์นั้น รองรับหลาย tags คั่นด้วยช่องว่าง
วิธีใช้ Emacs สำหรับ RSS ด้วย Elfeed

การ Filter RSS Feed ใน Elfeed

Tags นี้ทำงานร่วมกับระบบ filtering อันทรงพลังของ Elfeed ให้จัดกลุ่ม RSS feeds โดยอาศัย tags เพียงอย่างเดียว

ตัวอย่าง หากมี feeds tagged ว่า "news", "news tech", "news gaming" Elfeed ให้จัดกลุ่มทั้งหมดภายใต้ tag "news"

Filter feed list: กด S ขณะอยู่ใน Elfeed เพื่อเปิด filter prompt ค่าเริ่มต้น:

@6-months-ago +unread
  • สัญลักษณ์ @ บ่งชี้ช่วงวันที่ อาจเป็นวันที่แน่นอน เช่น "2022-02-22" หรือสัมพัทธ์ เช่น "3-days-ago"
  • สัญลักษณ์ + เป็น tag operator บอก Elfeed ให้รวม feeds ที่มี tag นี้โดยเฉพาะ
วิธีใช้ Emacs สำหรับ RSS ด้วย Elfeed

พิจารณา RSS feed ต่อไป:

[0](setq elfeed-feeds [1] '(("https://feeds.maketecheasier.com/MakeTechEasier" tech news) [2] ("https://solar.lowtechmagazine.com/feeds/all-en.atom.xml" tech) [3] ("https://old.reddit.com/r/f1technical.rss" tech f1) [4] ("https://www.autosport.com/rss/f1/photos/" f1) [5] ("https://www.philstar.com/rss/world" news)))

กรอง tag "tech" พิมพ์ +tech ใน filter prompt จะแสดง 3 ลิงก์แรก หากเพิ่ม +news จะแสดงลิงก์ที่ 1 และ 5

รู้แล้วคุณสามารถกรองได้เฉพาะเจาะจง เช่น ต้องการ tech ทั้งหมดแต่ไม่รวม f1 พิมพ์:

+tech -f1

วิธี Auto-tag Feeds ตาม URL

อีกวิธี auto-tag RSS entries ใน Elfeed คือจัดเรียงตาม URL เหมาะหากใช้ Elfeed สมัคร feeds ที่มีโครงสร้าง URL คล้ายกัน

วิธีใช้ Emacs สำหรับ RSS ด้วย Elfeed

ใช้ elfeed-new-entry-hook ของ Elfeed นี่คือ hook function ที่รันคำสั่ง custom ตามเงื่อนไข ฟังก์ชันนี้จะรันทุกครั้งที่เพิ่ม entry ด้วย elfeed-add-feed

ใช้ elfeed-make-tagger ภายใน hook นี้ ฟังก์ชันทั่วไปที่ tag links ตาม options ที่ตั้งค่า การรวมทั้งสองฟังก์ชันเพื่อ auto-tagging อาจเป็นแบบนี้:

(add-hook 'elfeed-new-entry-hook (elfeed-make-tagger :feed-url "medium\\.com" :add '(medium)))
วิธีใช้ Emacs สำหรับ RSS ด้วย Elfeed

ฟังก์ชันนี้จะ auto-tag ลิงก์ที่มี slug "medium.com"

สามารถเฉพาะเจาะจงได้มากขึ้น เช่น tag ตาม URL และกรอง entry ที่เก่ากว่า 3 เดือน:

(add-hook 'elfeed-new-entry-hook (elfeed-make-tagger :feed-url "medium\\.com" :before "3 months ago" :add 'medium))

วิธีสร้าง Custom Colors และ Fonts สำหรับ Tags

นอกจาก auto-tagging แล้ว ยังปรับแต่งลักษณะ Elfeed ตาม tag ได้ เหมาะหากต้องการให้ feeds ที่มี tag เฉพาะเด่นออกไป

วิธีใช้ Emacs สำหรับ RSS ด้วย Elfeed

ต้อง redefine ฟังก์ชัน elfeed-search-face-alist คำสั่งที่ Elfeed ใช้เปลี่ยนลักษณะ summary buffer ใช้ defface และ push:

  • defface สร้าง "face" ใหม่สำหรับ Emacs "face" คือชุดค่าที่อาจมีทั้ง font และสีพื้นหลัง
  • push เพิ่ม definition เข้าไปในคำสั่งที่มีอยู่ใน Emacs

รวมฟังก์ชันทั้งสองเพื่อสร้าง custom "face" สำหรับ Elfeed ตัวอย่าง face นี้ highlight tag f1 สีแดง:

(defface elfeed-face-tag-f1 '((t :foreground "#f00")) "This is a custom font face for the F1 tag in Elfeed.") (push '(f1 elfeed-face-tag-f1) elfeed-search-face-alist)

ยินดีด้วย! ตอนนี้คุณรู้วิธีใช้ Emacs เป็น RSS reader ด้วย Elfeed รวมถึงปรับแต่งและทำให้ Elfeed อัตโนมัติให้เหมาะกับความต้องการ RSS feeds ของคุณ

หากการอภิปรายนี้ทำคุณคิดว่าสามารถทำอะไรเพิ่มเติมกับ Emacs ได้ อ่านบทความเรื่อง best productivity packages for Emacs

คำถามที่พบบ่อย

1. ลบ feed ใน Elfeed ยังไง?

ลบ feed ได้ 2 วิธี: ลบ entry ของ feed ใน init.el หรือใช้ customize function ของ Emacs

วิธีแรก: ลบ feed URL ในตัวแปร elfeed-feeds วิธีที่สอง: กด Alt + X เปิด command buffer พิมพ์ customize จะเปิดหน้าต่าง customize

พิมพ์ elfeed-feeds ในกล่องค้นหา จะแสดง feeds ที่สมัครอยู่ คลิกปุ่ม DEL ข้างลิงก์ feed ที่ต้องการลบ แล้วคลิก Apply และ Save ด้านล่าง

2. เพิ่ม feeds ใน Elfeed แล้วไม่ refresh ทำไง?

Elfeed ไม่ auto-refresh feed links ให้ กด Shift + G เพื่อเริ่มอัปเดต feeds ที่สมัครอยู่ทั้งหมด

หากต้องการอัปเดต feed เฉพาะตัว ใช้ฟังก์ชัน elfeed-update-feed

3. Auto tags ไม่ทำงาน แก้ยังไง?

ส่วนใหญ่เพราะมี tags ขัดแย้งสำหรับ feed เดียวกัน เกิดได้หากใส่ feed URL เดียวกันใน manual และ automatic feeds

แก้โดยลบ manual entry ใน init.el หรือ automatic feed entry ใน customize buffer ของ Emacs