слашдот(/.)

April 4th, 2006Category: My Life

На слашдот се появяват доста интересни неща за четене. Аз от бая време имам rss на страницата си, който показва най-новите новини. Първоначално ползвах официалният rss линк, който, обаче, започна да ме банва заради често проверяване за нови статии (всеки път, когато някой зареди началната ми страницата. После намерих афтерслаш -> сайт, който обновява по няколко пъти на ден новините от /. и позволява да се ползва rss към него без да има лимит. Въпреки, че новините идваха малко по-бавно, си струваше. Но на 31ви, новините спряха да се обновяват. При което тръгнах да търся алтернатива. Не намерих нищо подобно и дори след около 1 ден страницата им отново започна да обновява новини от /., но вече бях решил да си реша проблема сам и да не разчитам на някой посредата.
Първоначално си мислех да сложа лимит на обновяването, който според /. беше 30 минути. Но като четях правилата на /. открих, че лимитът е само над rss и xml файловете. html страниците нямат лимит. Затова реших да си направя мой си парсър. Получи се доста хитро. Малко дървено, може би, но върши работа. Сега не трябва да се притеснявам, че ще ме баннат :)
Скриптчето е комбинация от греп, пърл, вгет, и сед:

  1. #!/usr/bin/perl -w
  2. #by Georgi Todorov
  3. # Under the Creative Commons Attribution-ShareAlike 2.5
  4. # Признание-Споделяне на споделеното 2.5 България
  5. # http://creativecommons.org/licenses/by-sa/2.5/bg/deed.bg
  6. system('lynx -source slashdot.org > sd.out');
  7. open (GREPIT,'egrep "(generaltitle)" -A 5 sd.out|grep h3 -A 2|sed -e \'s|--||g\'|sed -e \'s|</h3>||g\'|sed -e \'s|<h3>| \&#8226;|g\'|sed -e \'s|Read More...</b></a>|Read More...</b></a></div>|g\'|');
  8. print '<div class="generaltitle">';
  9. while (<GREPIT>){
  10. $_=~ s/<span><a href=\"\/\/linux.slashdot.org\/\">Linux<\/a>:<\/span>//g;
  11. $_=~ s/<span><a href=\"\/\/games.slashdot.org\/\">Games<\/a>:<\/span>//g;
  12. $_=~ s/<span><a href=\"\/\/science.slashdot.org\/\">Science<\/a>:<\/span>//g;
  13. $_=~ s/<span><a href=\"\/\/it.slashdot.org\/\">IT<\/a>:<\/span>//g;
  14. $_=~ s/<span><a href=\"\/\/hardware.slashdot.org\/\">Hardware<\/a>:<\/span>//g;
  15. $_=~ s/<span><a href=\"\/\/yro.slashdot.org\/\">Your Rights Online<\/a>:<\/span>//g;
  16. $_=~ s/<span><a href=\"\/\/politics.slashdot.org\/\">Politics<\/a>:<\/span>//g;
  17. $_=~ s/<span><a href=\"\/\/developers.slashdot.org\/\">Developers<\/a>:<\/span>//g;
  18. $_=~ s/<span><a href=\"\/\/bsd.slashdot.org\/\">BSD<\/a>:<\/span>//g;
  19. $_=~ s/<span><a href=\"\/\/apple.slashdot.org\/\">Apple<\/a>:<\/span>//g;
  20. $_=~ s/<span><a href=\"\/\/ask.slashdot.org\/\">Ask Slashdot<\/a>:<\/span>//g;
  21. $_=~ s/<span><a href=\"\/\/books.slashdot.org\/\">Book Reviews<\/a>:<\/span>//g;
  22. $_=~ s/<span><a href=\"\/\/apache.slashdot.org\/\">Apache<\/a>:<\/span>//g;
  23. $_=~ s/<\/a>/<\/a><\/div>/g;
  24. print $_;
  25. }
  26. system ('rm sd.out');

Не е много кадърно написано, защото можеше всичко да го направя на пърл, ама започнах от командния ред да си играя и си останах с командния ред. После само добавих няколко линии, които премахват ненужни линкове от новините.

2 Responses at слашдот(/.)

  1. Ако се беше допитал до мен щях да ти дам един плугин който ползвам за RSS от http://www.last.fm/user/aph3x

    ако някой зареди страницата - тегли rss, и пази в кеш-а изтегленето за определено време (което си нагаласиш) за следващите посетители.

    .. Хм .. сега се сетих че е плугин към блога пък на тебе ти трябва за заглавната страница.. ама нищо.. да знаеш за в бъдеще :)

    Comment by afx — 2006-04-06 #

  2. Първоначално и аз това щях да правя, но в така няма да имам най-новите новини :))
    С моето скриптче се показват последните новини без да се притеснявам за RSS работи.

    Мерси все пак :)

    Comment by TeraHz — 2006-04-06 #

Leave a Reply


Georgi’s Blog is proudly powered by WordPress
Постове (RSS) and Коментари (RSS).
Get Firefox! Creative Commons License
25 queries. 1.495 seconds.