Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

dpnotify - integracja blogów dobrychprogramów z Linuksowym pulpitem

Witam, dzisiaj w przeciągu ok. 4 godzin udało mi się wstępnie skonstruować aplikację która monitoruje wybrane wpisy na blogach i wysyła powiadomienia poprzez system notyfikacji w systemach Uniksowych - mowa o libnotify (poprzez notify-send wstępnie).

Strona projektu: github.com/webnull/dpnotifyFanpage: dpnotify na facebookuTwitter: webnull

Program został napisany w Pythonie przy najmniejszym użyciu jakichkolwiek bibliotek dlatego lista jego zależności jest bardzo krótka.
No więc aby nasz program nie rozleciał się podczas pieczenia potrzebować będziemy Pythona 2, najlepiej Pythona 2.7. Niestety Python 3 odpada z racji braku stabilnej wersji BeautifulSoup. Na pewno potrzebny będzie SQLite3, GIT, GNU Getopt oraz wymieniony wcześniej BeautifulSoup.

No więc przejdźmy do rzeczy...

Czyli instalacja pakietów zależnościowych w różnych systemach.

Gentoo:
Dodatkowo dla Pythona USE="sqlite"

emerge emerge dev-python/beautifulsoup dev-db/sqlite =dev-lang/python-2.7.3 git

Debian/Ubuntu/Linux Mint etc.apt-get install python python-beautifulsoup sqlite3

Arch Linux:pacman -S python2 python2-beautifulsoup3 git

Instalujemy aplikację...

cd /tmp/ # przechodzimy do katalogu tymczasowego git clone git://github.com/webnull/dpnotify.git # pobieramy pliki projektu z systemu kontroli wersji cd dpnotify ./install.sh

No i... zainstalowane. Może w kiepski sposób bo na razie nie było czasu aby zrobić paczki ale działa i później jak się spakuje aplikację to będzie można instalować aplikację w o wiele łatwiejszy sposób : )

Cieszcie się użytkownicy Linuksa, teraz będziecie z komentarzami na bieżąco! : )

Możecie przykładowo dodać ten wpis i obserwować jak pojawiają się komentarze pod nim. Mogę Was w tym wpisie informować o postępach prac nad aplikacją.

Jak będę mieć czas to postaram się Wam jutro zaimplementować obsługę RSS - dodać powiadomienia o nowych wpisach na blogach, myślę, że nie powinno to być trudnym zadaniem : )

Mała instrukcja użytkowania aplikacji

No więc tak... aplikację napisałem w ok. 4 godziny, nie mniej, nie więcej. Dlatego interfejsu graficznego na razie nie oczekujcie a jako, że to jest tylko demon (serwer) to mogę do tego napisać jakiegoś prostego klienta w QT4. W planach mam także dynamiczną konfigurację aplikacji (tak aby klient edytował plik a serwer go przeładowywał), ale nie wszystko na raz.

Póki co klientem jest serwer sam w sobie, czyli kilka prostych poleceń dostępnych z poziomu tej samej aplikacji.

Lista subskrypcji wszystkich wpisów:dpnotify --list

Dodanie nowego wpisu do obserwowania:dpnotify -a http://www.dobreprogramy.pl/webnull/cz-Programowanie-w-Linuksie,35898.html

Usunięcie wpisu:dpnotify -r http://www.dobreprogramy.pl/webnull/cz-Programowanie-w-Linuksie,35898.html

Uruchomienie aplikacji w trybie cichym (daemon):dpnotify --daemon

Uruchomienie aplikacji normalnie z pokazaniem wszystkich informacji:dpnotify

Pomoc:dpnotify --help

No więc na początku dodajemy sobie jakieś wpisy:dpnotify -a http://www.dobreprogramy.pl/webnull/cz-Programowanie-w-Linuksie,35898.html

Pierwsze uruchomienie po instalacji

Pierwsze uruchomienie programu nie wymaga niczego innego jak dodania obserwowanych wpisów do lokalnej bazy danych przy pomocy polecenia dpnotify -a [adres] oraz uruchomienia dpnotify --daemon

Program powinien się "schować" między procesy, można sprawdzić czy działa on w tle wpisując:

ps aux |grep dpnotify

Z początku zobaczymy falę powiadomień przy dodaniu każdego wpisu ale nie martwcie się tym, później nawet jak zrestartujecie program to zapamięta on ustawienia i nie będzie już pokazywać starych komentarzy - używa z bazy danych SQLite3 aby zapamiętywać stare komentarze.

Konfigurację programu możemy edytować ręcznie używając dowolnego edytora tekstowego, np. nano

nano ~/.dpnotify/config

Jeśli jakieś awatary nam się źle wyświetlają można spróbować usunąć lokalną bazę danych z awatarami usuwając katalog ~/.dpnotify/cache

rm ~/.dpnotify/cache -r

W razie jakiejś awarii programu związanej z komentarzami na blogach można także usunąć samą bazę danych SQLite3 która znajduje się w pliku ~/.dpnotify/db_cache.sqlite3

rm ~/.dpnotify/db_cache.sqlite3 -r

Aby zrestartować całą konfigurację programu tak aby utworzył on ją na nowo wystarczy wykonać:

rm ~/.dpnotify -r

Miłego użytkowania aplikacji, błędy proszę zgłaszać najlepiej na githubie a jak nie macie konta to tutaj.

 

linux oprogramowanie internet

Komentarze

0 nowych
Banan   10 #1 31.08.2012 20:18

DZIĘKI WEBNULL! Od dawna czegoś takiego mi brakowało, jak tylko wrócę do domu w poniedziałek leci instalacja, bo teraz mam dostęp tylko do Windy.

webnull   9 #2 31.08.2012 20:25

Mi też zawsze tego brakowało... : )

webnull   9 #3 31.08.2012 20:32

Ten komentarz piszę po to aby zrobić dla Was zrzut ekranu ;-)

Ludvick   7 #4 31.08.2012 21:55

@webnull

"Byczka" znakazłem:

Napisałeś, że dla Arch Linuksa trzeba wykonać:

"apt-get install python2 python2-beautifulsoup3 git"

a powinno być:

"pacman -S python2 python2-beautifulsoup3 git"

webnull   9 #5 31.08.2012 23:27

@Ludvick
Dzięki, poprawione ; )

command-dos   18 #6 31.08.2012 23:49

zastanawiam się, czy skomplikowane byłoby zrobić takie notyfikacje w pidginie - nowy wpis na blogu, nowy wpis na głównej, obserwacja wpisów - co Wy na to?
BTW - na DP brakuje mi wynalazku a'la ding z interii...

webnull   9 #7 31.08.2012 23:50

@command-dos
Powiadomienia na pidgina masz przez Jabbera : )

  #8 01.09.2012 01:21

Niezły ten twój wpis, pod firefoxem 15 strona się sypie (chodzi mi o bloga)

http://zapodaj.net/images/b0fd8f676a17c.png
http://zapodaj.net/images/9b87ddb90ef33.png

WTF ?

command-dos   18 #9 01.09.2012 09:18

@webnull - kurcze, dzięki za uświadomienie ;) chyba się skuszę, tylko czy jest opcja obserwacji wpisu, jak w przypadku, który opisałeś? Najbardziej zależy mi na nowych komentarzach pod konkretnym wpisem. Z forum raczej nie korzystam, więc forum olewam ;)

webnull   9 #10 01.09.2012 09:50

Chyba nie. Można tylko dostawać powiadomienia z portalu. Tak więc mogę zmodyfikować tak dpnotify aby był przystosowany do wywoływania poleceń użytkownika bądź najzwyczajniej w świecie obsługiwał wtyczki.

Poprzez wtyczki można by było w Pythonie przez dbusa skontaktować się z Pidginem.

Banan   10 #12 01.09.2012 10:21

@webnull

(jeśli nie wiesz)
Nie musisz pisać kilku komentarzy obok siebie, wystarczy zedytować poprzedni.

webnull   9 #13 01.09.2012 10:25

W sumie to nie wiedziałem...

webnull   9 #14 01.09.2012 20:45

@lokes21 (niezalogowany) | 01.09.2012 1:21
Pod Chromium jest to samo.

  #15 01.09.2012 23:57

Cześć, widzę że korzystasz z KDE jak chcesz to na kdefamily.pl jest masa wpisów o KDE, jak zawsze są mile widziane osoby obeznane w temacie.

pawelllek   6 #16 03.09.2012 11:19

@webnull musisz zrobić program uniwersalny - aby inne serwisy też można było podpinać :-)

Axles   17 #17 03.09.2012 11:55

Oj nie wygląda to za łatwo, a na pewno nie tak jak oczekiwałem po przeczytaniu tematu, niemniej spróbuję , a już coś z tego urodzi się.

adamwiacek   3 #18 03.09.2012 11:57

rss się zepsuł?

webnull   9 #19 03.09.2012 11:58

@Axles
Teraz wystarczy teraz pobrać paczkę i zainstalować dwuklikiem:
http://webnull.kablownia.org/Paczkownia/Debian/binary/

Tylko jedna zależność jest nie dodana do paczki - libnotify-bin, musisz zrobić sudo apt-get install libnotify bin dodatkowo aby program działał. Później zaaktualizuję program i paczkę. Aktualnie programem się nie zajmuję ponieważ mam teraz inny projekt - moja nowa odsłona strony WWW.

@pawelllek
Program jest w języku angielskim, wystarczy dodać obsługę GNU Gettext oraz wtyczek i będzie można podpiąć np. twittera czy osworld.pl

webnull   9 #20 03.09.2012 11:59

@adamwiacek | 03.09.2012 11:57
Nie ma jeszcze dodanej obsługi RSS ale obiecuję, że pojawi się za niedługo.

Najpierw w planach mam:
+ Obsługę wtyczek
+ Dodanie wtyczki do RSS oraz spróbowanie sił z API Twittera w celu stworzenia wtyczki
+ GNU Gettext (myślę, że to zostawię na później)

webnull   9 #21 03.09.2012 12:01

No i późniejsze plany to przeniesienie aplikacji do biblioteki Pythona i stworzenie prostego GUI w QT4.

Myślę, że na tym poziomie rozwoju aplikacji przeniesienie jej do biblioteki będzie bardzo prostą rzeczą.
Właściwie to wystarczy oddzielić kod GNU Getopt od aplikacji i całą resztę wrzucić do biblioteki i stworzyć nową binarkę ze starym GNU Getopt która importuje bibliotekę i wywołuje jej funkcje... nic prostszego być nie może ; )

kwpolska   6 #22 03.09.2012 12:43

racz zrobić setup.py i wrzucić do pypi jak człowiek. ale najpierw zabije cie za linie 3, 106-109 i za uzycie dziadka getopt zamiast argparse.

Humanoid   5 #23 03.09.2012 14:24

Wydawało mnie się, że komentowałem ten wpis...

Pytanie: tam trza wszystko samemu ustawiać, czy jest możliwość aby program sam wyłapywał wpisy i informował o nowych komentarzach (jak i nowych wpisach)?

Jaahquubel_   13 #24 03.09.2012 15:55

Jak napisałem wpis o klejeniu obrazków w Octave'ie w celu wstawienia ich na blog DP, to ktoś z redakcji napisał mi, że kupa dobre, ale niepotrzebnej roboty - i wkrótce pojawiła się nowa odsłona bloga i nie ma limitu na obrazki.
Życzę nam wszystkim, aby to dpnotify też okazało się kupą dobrej, nikomu niepotrzebnej roboty, tzn aby redakcja sama stworzyła stosowny mechanizm, niezależny od platformy systemowej.
Póki co, będę używał. :)

Edit:

Schrzaniłeś coś z zależnościami w tej paczce. Muszę sam zainstalować sqlite3, a potem dopiero Twoje cudo.

Edit2:
A jakby tak podać do dpnotify adres podstrony swojego profilu z komentarzami, a aplikacja sama by wylistowała sobie wszystkie wpisy, które się komentowało i dodała je do swojej bazy?

Autor edytował komentarz.
Jaahquubel_   13 #25 03.09.2012 16:17

Kurde, nie funguje, jak mawiają sąsiedzi z południa.

Znaczy, nie działa.

Edit: OK, jeszcze testuję.

Autor edytował komentarz.
iluzion   5 #26 03.09.2012 17:11

Dobre! Mam tylko jedno ale...

"Niestety Python 3 odpada z racji braku stabilnej wersji BeautifulSoup."

Wypluj te słowa. Stabilna wersja BeautifulSoup 4 działa pod Pythonem 3 oficjalnie (sam używam, wystarczy skorzystać z 2to3.py --write bs4):

http://www.crummy.com/software/BeautifulSoup/#Download

Zachęcam do aktualizacji, bo masz starą wersję ;) Po imporcie można poznać.

Autor edytował komentarz.
webnull   9 #27 03.09.2012 19:51

@Jaahquubel_ | 03.09.2012 15:55
Aktualnie obsługuje tylko adresy bezpośrednie do wpisów a, że obecnie jestem zajęty innym projektem teraz to do dpnotify dodam nowe funkcje i poprawki dopiero za kilka dni.

webnull   9 #28 03.09.2012 19:55

@iluzion | 03.09.2012 17:11
W repozytorium Debiana (nie jestem pewien) i Gentoo BeautifulSoup 4 jest w testingu wciąż niestety z jakiegoś powodu.

Axles   17 #29 03.09.2012 20:37

@webnull
"Teraz wystarczy teraz pobrać paczkę i zainstalować dwuklikiem:
http://webnull.kablownia.org/Paczkownia/Debian/binary/ "

Hm nie ma to jak na końcu czytać komentarze gdy już zrobiłem wszystko wg.instrukcji :] ale działa przynajmniej nie rzucało żadnych błędów, tylko teraz nie za mądre pytanie, jak to używać :P
Jak mogę uzyskać taki fajny efekt jak na twoim 1 screenie?

webnull   9 #30 03.09.2012 20:40

dpnotify -a [BEZPOŚREDNI LINK DO WPISU]
dpnotify # uruchamia aplikację

iluzion   5 #31 03.09.2012 20:42

@webnull

Zazwyczaj w repozytoriach jest stare oprogramowanie. Nie ma się czemu dziwić. Tego jest tyle, że nie sposób być ze wszystkim na bieżąco. W przypadku Pythona chyba lepiej korzystać z pip do instalacji pakietów, a nie apt itp.

webnull   9 #32 03.09.2012 21:01

@iluzion | 03.09.2012 20:42
Dziękuję za radę. Uwzględnię obsługę Pythona 3 w najbliższych wersjach. Jednak to dopiero za kilka dni będę mógł zrobić bo teraz skupiłem się na tworzeniu na nowo swojej strony domowej i nie mam czasu na inne projekty : )

Jaahquubel_   13 #33 04.09.2012 13:49

W dalszym ciągu nie działa. Czy jest coś, co mogę Ci podać, co powie Ci coś więcej niż "nie działa"?
W konsoli mam:
+ Adding dobreprogramy.pl/Nowe-Nokie-moga-podbic-swiat,Aktualnosc,35955.html
+ Adding dobreprogramy.pl/webnull/dpnotify-integracja-blogow-dobrychprogramow-z-Linuksowym-pulpitem,35907.html
+ Adding dobreprogramy.pl/webnull/cz-Programowanie-w-Linuksie,35898.html
+ Adding dobreprogramy.pl/Ubuntu-znow-z-GNOME-alfa-Ubuntu-GNOME-wydana,Aktualnosc,35937.html
+ Adding dobreprogramy.pl/Banan/Blogi-na-dobrychprogramach-Sierpien,35948.html
+ Adding dobreprogramy.pl/Shaki81/Blogger-od-kuchni-wywiad-z-Jaahquubel,35711.html
+ Adding dobreprogramy.pl/Linux-Mint--dystrybucja-idealna,Blog,35909.html
+ Loaded 82 comments from cache.
GET: http://www.dobreprogramy.pl/webnull/dpnotify-integracja-blogow-dobrychprogramow-...
GET: http://www.dobreprogramy.pl/Linux-Mint--dystrybucja-idealna,Blog,35909.html
GET: http://www.dobreprogramy.pl/Shaki81/Blogger-od-kuchni-wywiad-z-Jaahquubel,35711....
GET: http://www.dobreprogramy.pl/Banan/Blogi-na-dobrychprogramach-Sierpien,35948.html
Unknown option -a
Unknown option -a
Unknown option -a
Unknown option -a
Unknown option -a
GET: avatars.dpcdn.pl//Avatar.ashx?file=142715_1274120217.jpg&type=UGCFriendsList
Unknown option -a
GET: avatars.dpcdn.pl//Avatar.ashx?file=42695_1258027875.gif&type=UGCFriendsList
Unknown option -a
GET: avatars.dpcdn.pl//Avatar.ashx?file=147033_1266498241.jpg&type=UGCFriendsList
Unknown option -a
GET: avatars.dpcdn.pl//Avatar.ashx?file=55901_1258902959.jpg&type=UGCFriendsList
Unknown option -a
Unknown option -a
GET: avatars.dpcdn.pl//Avatar.ashx?file=36754_1308009817.jpg&type=UGCFriendsList
Unknown option -a
GET: avatars.dpcdn.pl//Avatar.ashx?file=140363_1330069795.png&type=UGCFriendsList
Unknown option -a
GET: avatars.dpcdn.pl//Avatar.ashx?file=192973_1330890935.png&type=UGCFriendsList
Unknown option -a
sh: Syntax error: ")" unexpected
GET: http://www.dobreprogramy.pl/Nowe-Nokie-moga-podbic-swiat,Aktualnosc,35955.html
GET: http://www.dobreprogramy.pl/webnull/cz-Programowanie-w-Linuksie,35898.html
GET: http://www.dobreprogramy.pl/Ubuntu-znow-z-GNOME-alfa-Ubuntu-GNOME-wydana,Aktualn...

I te GET-y co ustalony czas wyświetlają się nowe.

webnull   9 #34 04.09.2012 15:24

@Jaahquubel_ | 04.09.2012 13:49
Czy masz w systemie polecenie "notify-send"?

Jaahquubel_   13 #35 04.09.2012 15:41

Oczywiście! Co więcej, działa. Normalnie korzystam.
Poza tym, skoro instalowałem z paczki, to paczka powinna mieć to w zależnościach i Twoje pytanie powinno być bezzasadne.

webnull   9 #36 05.09.2012 20:46

@Jaahquubel_ | 04.09.2012 15:41
Szczerze mówiąc udostępniłem Wam prototyp aplikacji z nadzieją, że będzie jakieś zainteresowanie. Jest to pierwsza wersja bez żadnych poprawek. W paczkach zapomniałem o jednej zależności lecz niestety ostatnio nie jestem u siebie i nie mam czasu się tym zająć. Obiecuję, że znajdę czas w przyszłym tygodniu a tymczasem zapraszam na kontakt przez Jabbera (jest podany w profilu).

Jeden bug jest pewny - większe i dłuższe komentarze mogą się nie wyświetlać lecz rozwiążę ten problem poprzez implementację dbus.