wtorek, 3 lutego 2009

Ściąganie wszystkich zdjęć wybranego użytkownika z portalu Nasza-Klasa - wersja 3

UWAGA: Sktypt ma wyłącznie na celu pokazanie możliwości języka Python i jego bibliotek. Autor nie ponosi żadnej odpowiedzialności za działania skryptu oraz ewentualne straty nim spowodowane, pamiętaj korzystasz z niego na własną odpowiedzialność. Przed skorzystaniem upewnij się, że jego działanie jest zgodne z regulaminem serwisu Nasza-Klasa.

Udostępniam najnowszą i najbardziej dopracowaną wersję skryptu, w której nie trzeba podawać parametru max, ponieważ sprawdzam id ostatniego zdjęcia. To praktycznie wystarcza, bo jeśli użytkownik usunie jakieś zdjęcie pomiędzy to po prostu nie zostanie ono poprane( 404).

skrypt.py

potrzebna biblioteka httplib2:

httplib2


A więc ostateczna lista parametrów:
naszLogin naszeHasło Id

PS.
Proszę nie męczcie mnie już pytaniami jak zainstalować pythona czy jakieś biblioteki, albo dlaczego skrypt nie działa.

niedziela, 1 lutego 2009

Nasza-Klasa: pobieranie zdjęć - poprawiona wersja

UWAGA: Sktypt ma wyłącznie na celu pokazanie możliwości języka Python i jego bibliotek. Autor nie ponosi żadnej odpowiedzialności za działania skryptu oraz straty nim spowodowane, pamiętaj korzystasz z niego na własną odpowiedzialność. Przed skorzystaniem upewnij się, że jego działanie jest zgodne z regulaminem serwisu Nasza-Klasa.

Nawiązując do mojego wcześniejszego posta , po drobnym researchu wyciągnełem kilka wniosków, które zaowocowały drugą wersją sktyptu.

Po pierwsze nie musimy się już przejmować ciastkami( cookies) za to lista parametrów programu wydłużyła się o 2 i teraz wygląda tak:

nasza-klasa.py TwójLoginDoNK TwojeHasło IdOsobyKtórejZdjeciaChcemyPobrać MaxZdjeć

przy czym czwarty parametr jest opcjonalny i jeżeli nie wpiszemy nic - to przyjmie domyślną wartość - 50.

Po Drugie: jak zauważyłem RSS zwraca tylko 10 ostatnich zdjęć ( da sie pobrać RSSa dla wszystkich zdjęć?) , wiec ten pomysł na razie odpada.

zobacz kod: kod
pobierz: nasza-klasa.py

enjoy.

Ściąganie wszystkich zdjęć wybranego użytkownika z portalu Nasza-Klasa

UWAGA: Sktypt ma wyłącznie na celu pokazanie możliwości języka Python i jego bibliotek. Autor nie ponosi żadnej odpowiedzialności za działania skryptu oraz straty nim spowodowane, pamiętaj korzystasz z niego na własną odpowiedzialność. Przed skorzystaniem upewnij się, że jego działanie jest zgodne z regulaminem serwisu Nasza-Klasa.

Napisałem prosty skrypcik do sciągania n pierwszych zdjęć użytkownika o znanym Id na Naszej-Kasie. Już tłumaczę jak on działa i co porzebujemy:

1) musimy mieć konto w serwisie Nasza-Klasa
2) musimy znać id użytkownika, którego zdjęcia chcemy pobrać: można je łatwo znaleść na przykład w pasku adresu url( http://nasza-klasa.pl/profile/xxxxxxx, gdzie xxxxxxx to właśnie to Id)
3) ponieważ mój sktypt jest troche prymitywny:) i nie sprawdza ilośći zdjęć naszego użytkownika musimy podać ile zdjęć chcemy ściągnąć - ale tu można podać spokojnue większą liczbe, bo skrypt jest odporny na błędny
4) i wreszcie najważniejsze: musimy mieć zainstalowanego pythona i parę bibliotek( przypuszczam że wszyskie są w katalogu lib Pythona)
5) WAŻNE: musimy pobrać cookie zalogowanego użytkowika, bo jak na razie skrypt tego nie robi, i wpisać je do zmiennej:

cookies = 'remember_me=...; __utma=...; cookies += ' nk_session=...'

polecam Live HTTP Header do tego celu, można je znaleść też w przeglądarce( Firefox2: Narzędzia->Opcje->Wyświetl Ciasteczka->'wpisujemy w filtrze: nasza-klasa'->i odczytujemy poszczególne ciastka)

jak uruchamiać?:

Linux:
$ python nasza-klasa.py Id max (np. $ python nasza-klasa.py 1234567 50)
Windows:
start->cmd i wpisujemy: nasza-klasa.py Id max

no i źródła:

nasza-klasa.py

miłej zabawy, pozdro

TO DO:
* ułatwić podawanie cookies
* oprzeć silnik na RSS/XML

piątek, 7 listopada 2008

LAMP na (X/K) Ubuntu

Ponieważ ostatnimi czasy czesto udaje mi sie rozsypać ubuntu, mniej więcej z taką szybkością z jaką sie instaluje :) postanowiłem zautomatyzowac proces instalowania LAMP'a - Linux Apache MySql PHP.

Proces trwa porównywalnie z instalacją na przykład XAMPP'a pod Windowsem, ale nikt nie przekona mnie do instalacji Apacha pod tym systemem. No chyba, że chcesz sobie zrobić stronke składającą sie maxymalnie z 8 plików html połączonych linkami:)

A teraz jak to zrobić pod łubuntu:

plik lampInstaller.sh

#! /bin/bash

echo 'LAMP installer for Ubuntu'

sudo apt-get install apache2

sudo apt-get install php5-apache2-mod-bt
sudo apt-get install php5-suhosin
sudo apt-get install php5-mysql

#php cli - command line interface

#sudo apt-get install php5-cli

#Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.3 with Suhosin-Patch Server at localhost Port 80

# http://localhost:80/ -> It works!

sudo apt-get install mysql-server-5.0

# GUI w Applications->Programowanie

sudo apt-get install mysql-admin
sudo apt-get install mysql-query-browser

I to wszystko:)

Oczywiście apache, php oraz mysql instaluje sie w domyślnych lokalizacjach(/etc/...) i z domyślną konfiguracją. W celu dopasowania do własnych potrzeb należy pogrzebać w odpowiednich plikach konfiguracyjnych(/etc/apache2/apache2.conf, php.ini itp)

Do developowania konfiguracja jest całkowicie wystarczająca.

I jeszcze bonus script:

lamp.sh

#! /bin/bash

function startLamp() {
sudo /etc/init.d/apache2 start
sudo /etc/init.d/mysql start
}


function stopLamp() {
sudo /etc/init.d/apache2 stop
sudo /etc/init.d/mysql stop
}

function restartLamp() {
sudo /etc/init.d/apache2 restart
sudo /etc/init.d/mysql restart
}


#echo 'Lamp start/stop/restart script'
# more info: http://www.debian-administration.org/articles/28

# Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Starting lamp..."
startLamp
;;
stop)
echo "Stopping lamp..."
stopLamp
;;
restart)
echo "Restarting lamp..."
restartLamp
;;
*)
echo "Usage: lamp.sh {start|stop|restart}"
exit 1
;;
esac

echo 'Done'

exit 0

sobota, 1 listopada 2008

Jak pozbyć sie reklam na ugu.pl

Wygląda na to, że ugu coraz bardziej podnosi poprzeczkę
Ale trzeba być twardym :)

Najpierw przeanalizujmy gdzie wstawiane są reklamy:

Pierwsza zaraz po sekcji :

<body><noscript>noscript>
<div>
<script type="text/javascript" src="http://img.ugu.pl/advert.js">
</script>
</div>

a druga przed </body>
<script type="text/javascript">
var pageTracker = ...
pageTracker._trackPageview();
</script>

Najprostrzym rozwiązanie będzie po prostu wyrzucić sekcję <body>, a kod strony wstawiać między
<html
<head>
</head>
zawartosc strony
</html>

W prawdzie tracimy zgodność, ze standardami W3C,
ale większość przeglądarek wyświetli naszą stronę poprawnie.
Niestety ugu posunęło sie dalej i jeśli nie znajdzie w kodzie HTMLa napisu
<body>to wstawi na poczatku strony kod:

<html><body><!-- --><noscript></noscript>
<div>
<script type="text/javascript" src="http://img.ugu.pl/advert.js">
</script>
</div>


można to łatwo ukryć w CSSie:

body
{
...
margin-top: -100px;
position: relative;
...
}

i reklama jest niewidoczna:)

Powodzenia

Mam nadzieje, że "specjaliści" z ugu znowu czegoś nie wymyślą:)

niedziela, 26 października 2008

Bot gadu-gadu z wykorzystaniem EKG i Python'a

Opiszę jak w prosty sposób napisać własnego bot'a gg.
Wymagana jest podstawowa znajomość języka Python i środowiska Linux.

Użytkownicy [x/k]Ubuntu mogą pobrać EKG z repozytorium wpisując:
sudo apt-get install ekg
warto też zainstalowa najnowszą wersje Pythona
sudo apt-get install python
pozstali muszą skompilować ze źródeł.
A teraz do dzieła:

odpalamy ekg: #ekg

wpisujemy
set uin 'numer gg'
set password 'hasło'
save

teraz czas zacząc pisać bota:
przechodzimy do katalogu ~/.gg/
tworzymy katalog scripts (#mkdir scripts)

i tu tworzymy plik najlepiej z rozszerzeniem .py

jeśli chcemy by nasz skrypcik odpalał sie zaraz po uruchomieniu EKG w katalogu scripts tworzymy kolejny katalog: autorun i tu wrzycamy nasz plik.
stuktura programu:

# importujemy bibliotekę ekg
import ekg

#ta funkcja wywołuje się przy starcie skryptu
def init():
ekg.printf("generic","Bot loaded");
#ustawiamy opis
ekg.command("_descr \"Opis\"");
return 1

#ta funkcja wywołuje się przy zamykaniu skrypu
def deinit():
ekg.printf("genetic","Bot unloaded");
logfile.close()

#przechwytywanie zdarzeń:
def handle_msg(uin, name, msgclass, text, time, secure):

uin - numer gg od którego przyszła wiadomość
text - treść wiadomości
time - czas nadejscia

pozostałe parametry są raczej mniej istotne.

Zabawa polega na tym, aby przechwycić text i odpowiednio na niego odpowiedzieć.

Jak narazie napisałem prosty kalkulator.



Ale zamierzam napisać coś znacznie ciekawszego:)

I jeszcze wywołanie skryptu: w konsolce ekg:
python (un)load nazwa_skryptu.py

środa, 13 sierpnia 2008

Funkcja do sprawdzania poprawnosci kodu pocztowego* w JavaScripcie

function validatePostalCode(inputCode){

var correct = /^[\-]{0,1}[0-9]{2}-[0-9]{3}$/;
if(!correct .test(inputCode)
alert('kod pocztowy ma niepoprawny format \n (poprawny: xx-xxx)');
}

*dotyczy polskich kodów pocztowych