Parowiec wystartował

Jakiś czas temu ogłosiłem start swojego serwisu Parowiec (dostępny też jako Steamer). Ogólnie to to służy do wyszukiwania gier w dystrybucji cyfrowej (czyli Steam itp.). Wcześniej znałem tylko SteamWatch i SteamAlerts.com, one ogarniały niestety tylko Steama, a konkurencja też istnieje i promocje też robią. Na JM ktoś wspomniał o Steam Games Sales, który ogarnia więcej serwisów. Pewnie jakbym go zobaczył wcześniej to bym sobie pomysł odpuścił :)

W każdym razie zabrałem się za realizację 21 lutego. Zdecydowałem się na Pythona (nic wygodniejszego na dzień dzisiejszy nie znam) i Django (musi być coś lepszego :/). Wszystko poszło ekspresowo. Po kilku dniach projekt już leżał na serwerze. Do opisu każdego serwisu użyłem po prostu wyrażeń regularnych w plikach JSON, np. plugin do Steama wygląda tak:
{
"host": "store.steampowered.com",
"url": "http://store.steampowered.com/search/?page=%s",
"source": "steam",
"encoding": "utf-8",
"name": "Steam",

"list_pattern": "<!-- List Items -->.*<!-- End List Items -->",
"list_separator": "</a>",

"page_stop": "%s |",

"price_pattern": "\\d+,\\d+€ </div>",
"price_remove": ["€ </div>"],
"dlc_pattern": "ico_type_dlc|ico_type_guide",
"normal_price_pattern": "<strike>\\d+,\\d+",
"normal_price_remove": ["<strike>"],
"currency": "EUR",

"title_pattern": "<h4>[^<>]+</h4>",
"title_remove": ["<h4>", "</h4>"],

"link_pattern": "http://store.steampowered.com/app/\\d+",
"link_format": "%s"
}

Potem silnik na podstawie tych plików ściąga i ciacha listy gier, obrabia i zapisuje do bazy. Tą z domyślnego w Django SQLita zmieniłem po kilku dniach na MongoDB (czysty, bez ORM Django. Głównie po to, żeby spotkać się w końcu z NoSQLem, wzrost wydajności był czasem spory, ale ogólnie to tak pi razy drzwi działa ze 2-3 szybciej.

Testy powoli prowadziłem przez parę dni. W końcy po tygodniu zdecydowałem się to wyjawić światu. Pomysł jak widać się spodobał. Dorobiłem parę podrzuconych przez ludzi: powiadamianie e-mailem, parę więcej kryterów wyszukiwania, historię cen (jeszcze nie ma widocznej, ale dane ciągle się zapisują). Dorzuciłem jeszcze wersję angielską (wykrywa po przeglądarce), jakieś reklamy, społecznościówki (raczej żeby zobaczyć jak to działa, bo jak dla mnie to to głupie jakieś).

Póki co stronka działa stabilnie, dziennie to z kilka osób wchodzi czegoś poszukać. Czyli jest dobrze, ja się na razie tematem zmęczyłem i pewnie trochę minie zanim dorobię coś nowego. Enjoy .