ลองเช็คสถิติจาก google reader พบว่า Feed ที่อ่านบ่อยที่สุด คือ feed ข่าวกีฬาจากเวบผู้จัดการ (ราวๆ 30 ข่าวต่อวัน) แต่ว่า feed ตัวนี้มันเป็น “ข่าวกีฬา” แบบรวมๆ ทำให้มีข่าวที่ไม่สนใจจะอ่านโผล่มาให้เห็นอยู่เรื่อยๆ เช่นข่าวเทนนิส, แข่งรถ, NBA, NFL อะไรพวกนี้ ซึ่งไม่ได้สนใจจะอ่านเลย ที่อยากอ่านมีแต่ข่าวฟุตบอลอย่างเดียว
ก็เลยมานั่งคิดดูว่า ทำยังไงถึงจะ filter เอาข่าวที่ไม่สนใจพวกนี้ออกไปได้ สุดท้ายก็มาปิ๊งไอเดียว่า ใช้ Yahoo Pipes ดีกว่า
Yahoo Pipes เป็นบริการสำหรับ ตัด ต่อ ผสม ข้อมูลที่อยู่บนเวบในรูปแบบต่างๆ (ทั้ง feed, csv, xml ฯลฯ) ขั้นตอนการทำก็คือ จับเอาโมดูล Fetch feed มาวางก่อน แล้วใส่ URL ของ feed ที่เราต้องการลงไป (ในกรณีนี้คือ feed ข่าวของผู้จัดการ) จากนั้นก็ต่อ output ของ Fetch feed มาลงที่โมดูล Filter แล้วใส่กฎให้มันบล็อกทุก item ที่ใน description มีคำว่า “บาสเกตบอล” หรือ “เทนนิส” อยู่ สุดท้ายก็ต่อ output ออกไปที่ Pipe output
เท่านี้เราก็ได้ feed ข่าวกีฬาที่ไม่มีข่าวบาสเกตบอล และข่าวเทนนิสแล้ว (ด้วยวิธีลูกทุ่งๆ หน่อย คิดวิธีหรูกว่านี้ไม่ออก) แต่พอลองเปิดดูเนื้อหา feed ดูแล้วพบว่า มันอ่านไม่ออก ก็ต้องย้อนไปดูที่ feed ต้นฉบับซึ่งก็เป็นอย่างที่คิด คือ มันใช้ encoding แบบ Windows-874 พอดูดเข้าไปใน yahoo pipes ที่มันเป็น UTF-8 มันก็เลยออกมาอ่านไม่ออก
ไปดูในโมดูลต่างๆ ที่มีให้ใช้ ก็ไม่เห็นมีโมดูลสำหรับแปลง encoding (ท่าทาง yahoo คงคิดว่าโลกนี้เค้าใช้ utf-8 กันหมดแล้ว) ทางแก้ที่พอคิดออกคือ แปลง feed จาก windows-874 ให้กลายเป็น utf-8 ก่อน แล้วค่อยเอาใส่ pipes ก็เลยต้องเขียน script ขึ้นมาทำเอง ประมาณนี้
< ?php
$content = @file_get_contents("http://www.manager.co.th/RSS/Sport/Sport.xml");
header("Content-Type: text/xml; charset=utf-8");
echo iconv('cp874', 'utf-8', $content);
?>
แล้วก็ให้โมดูล Fetch feed ของ pipes มาดึงเอาจาก script ตัวนี้แทน
ประมาณเอาคร่าวๆ ก็ลดจำนวนข่าวจาก feed นี้ไปได้เกือบครึ่งเลย