Wyświetlanie cytatów z serwisu bash.org.pl w konsoli
Ostatnio na IRC, nie pamiętam na jakim kanale, ktoś wkleił linka z bash'a, a inna osoba stwierdziła że nie może przeczytać cytatu z powodu braku X'ow. Oczywiście są tekstowe przeglądarki, ale na bash'u jest tyle reklam ze czasami cytat ginie w ich gąszczu, poza tym czasem nawet jak mamy X'y, możemy po prostu nie chcieć uruchamiać przeglądarki.
Napisałem więc prosty skrypt w pythonie do odczytywania cytatów z bash'a pod konsolą. Skrypt oprócz wyświetlania cytatu z konkretnego odnośnika może wyświetlać ostatnie, bądź najlepsze cytaty, ich ilość została ograniczona do jednej strony, żeby nie obciążać serwisu, poza tym czytanie większej ilości cytatów pod konsolą nie było by zbyt wygodne.
Aby dowiedzieć się jak korzystać ze skryptu wpisujemy:
python bashreader.py -h
Na koniec najważniejsze - źródła skryptu
29 marca 2009 o 12:11:15
http://bash.org.pl/text
Z tym, że to sporo waży ;)
29 marca 2009 o 12:18:49
nie prościej w BASHu? :P
29 marca 2009 o 12:56:38
chyba łatwiej byłoby przeparsować RSS (XML)..
29 marca 2009 o 12:59:42
@jam łasica: parsowanie dosc proste:) pozatym tu chodzilo o czytanie wpisu spod danego url'a, czytanie ostatnich i najlepszych to faki dodatek;)
29 marca 2009 o 14:21:38
virhilo: imho python jest dobry jak coś trzeba uruchomić bardzo rzadko i do tego działa to jako okno/daemon.. Szczególnie niektóre pybiblioteki ładują się okropnie długo, a sam program wręcz grzeszy zajętością zasobów. Prosty przykład tego że się da nawet w bashu: http://pastebin.pl/6558 :)
29 marca 2009 o 14:27:13
3ED: niezłe :)
29 marca 2009 o 14:31:10
3ED niezle:) ale u mnie jest normalny parser nie regexpy wiec bardziej elegancko:)
29 marca 2009 o 14:32:38
w ogólnym przypadku - tak, w tym szczególnym - overkill.
29 marca 2009 o 14:45:24
Ja sed-em po prostu wyrzuciłem tylko zbędny html (reklamy, menu, komenty, itp), a html2text wczytuje mi pozostały kod..
29 marca 2009 o 14:51:11
bq.. __copyright__='Copyright 2008 Łukasz Fidosz'
p.. Przecież już mamy rok 2009 ;)
29 marca 2009 o 14:51:41
Włącz texile ;)
29 marca 2009 o 14:57:39
@zwierzak: hehe-ano, w sumie to skopiowalem to z jakiegos mojego innego skryptu i przeoczylem date;) (juz poprawione)
texile tez juz jest:)
29 marca 2009 o 14:59:24
Ja też na ogół robię Ctrl+C Ctrl+V dla stałych szablonów. Chyba w końcu powinienem wziąć naszykować sobie jakiś ogólny plik, a nie kopiować z plików.
29 marca 2009 o 15:00:15
albo jakis sktypt dodajacy to i licencje:)
29 marca 2009 o 15:02:16
Za dużo pisania, Ctrl+C Ctrl+V szybsze ;)
Poza tym o takich rzeczach to powinno pamiętać IDE.
29 marca 2009 o 15:04:40
Hmm…. z pythonowych ide mam i eric’a i plugin do eclipse a itak pisze w vim’ie;)
29 marca 2009 o 15:46:00
„Poza tym o takich rzeczach to powinno pamiętać IDE.”
skeleton-mode!
http://www.emacswiki.org/cgi-bin/wiki/SkeletonMode
29 marca 2009 o 16:08:53
Drobne uwagi do kodu:
1. Dlaczego jawnie porównujesz zmienną logiczną z True? Wystarczy przecież:
if self.save_text:
2. Zamiast pętli po atrybutach i porównywania każdego z osobna użyj operatora in: (‘class’, ‘quote’) in attrs
3. W funkcji prt zamiast tego potworka z pętlą możesz użyć:
print ‘\n\n’.join(parser.quotes[:count]), usuwając niepotrzebny \n z quotes.append
To chyba wszystko :)
29 marca 2009 o 16:30:20
@mrk: Dzieki za uwagi:)
Ad. 1. nie wiem czemu ale odruchowo to jakos robie i przeoczylo mi sie to
Ad. 2. na poczatku to jakos inaczej zrobilem potem uproscilem i nie zauwazylem ze poprzednia petla jest juz niepotrzebna;]
Ad. 3. no-tak jest bardziej ‘in python way’;)
Wszystko poprawione:)
29 marca 2009 o 17:42:57
Marudzą :D
Najlepiej pisać w tym w czym się dobrze czujemy ;)