Software

Automatická detekce volného místa v autobusech na lince Liberec - Praha

19. 4. 2009 23:06

12.3.2010: Viz Oskarův komentář, prográmek je opět pravděpodobně nefunkční na rezervaci pro SA.

Prográmek řeší automatické ohlášení volného místa na lince Liberec-Praha provozované

Dopravní podnik města Liberce, a.s.
na adrese http://dpml.rezervace-bus.cz/
STUDENT AGENCY s.r.o.
na adrese http://www.studentagency.cz/express/vnitro/

Modelová situace, zapomenete se rezervovat do autobusu a po chvíli je už všude plno. Občas se ale někdo odhlásí. Zjistit to, že se někdo odhlásil je komplikované a znamená to sledovat několik stránek pořád dokola nebo si nainstalovat rozšíření do Firefoxu ReloadEvery.

Existuje ale jiné řešení (CLI verze pro Linux)
Download: bus-004.tar.gz
Screenshot: sa.png
Konkurenční program ;) (verze pro .NET/Mono)
Program s podobnou ideou, ale mnohokrát vylepšený naleznete na stránkách Matěje Finwë Humpála.
Rozšíření pro firefox (Add-on) (multiplatformní)
Zatím nedotáhnuté, musím ještě dodělat to hlavní, hldání spoje. Jednoduchá rezervace autobusu student agency

Moje řešení

Moje řešení jde ale jiným směrem. Když chcete sledovat určitý spoj, stačí si zjistit jeho ID a pak říct mému scriptu, aby to pohlídal. Jde pouze o upozornění na volné místo, takže rezervaci musíte provést osobně, ale i tak, je to docela dobrá pomůcka.

Jak zjistit ID

Přejděte na stránku pro den, který chcete sledovat a klikněte na lupičku u nejbližšího spoje. Otevře se nová stránka a v adresním řádku má napsané na konci číslo, které je právě ID spoje. Pokud u vašeho vybraného spoje lupička není, stačí ji tipnout z jiného ID spoje nad požadovaným. Je větší jen o 1.

Najděte tedy pokusně požadovanou stránku vašeho spoje a zapamatujte si její ID.

Jak používat program

Program je napsán v jazyce PHP, protože je to jediný jazyk na scriptování, který ovládám. Určitě by to bylo možné napsat v nějakém vhodnějším jazyku, ale perl, python, bash, ruby ani nic jiného se kuli tomu nechci učit.

Program se spoučtí z příkazová řádky a pokud si ho dáte do adresáře, který je v PATH, pak stačí spouštět jen jako

$ sa 54700

Je možné uvést i více sledovaných spojů

$ sa 54700 54701 54702 54703

Omezení programu

Program kontroluje všechny zadané spoje každých 20 vteřin. Pokud je ve spoji místo, tak se také pokaždé ukáže bublina s oznámením volného místa. Je proto vhodné sledovat jen zcela zaplněné autobusy.

Program vyžaduje spouštění na Linuxu s fungujícím notification-daemon, který právě dělá ty bubliny. Pro gentoo to znamená závislosti na x11-libs/libnotify a `>=dev-lang/php-5. Asi k tomu vytvořím ebuild, aby se to dalo jednoduše nastavit.

Pro php plati ještě jeden požadavek. Zatím se stránka stahuje pomocí volání funkce fopen, takže musí být v /etc/php/cli-php5/php.ini zapnuta direktiva allow_url_fopen=On.

Changelog

bus-004 – 14.10.2009

bus-003 – 19.4.2009

sa-002 – 22.3.2009

sa-001 – 16.3.2008

TODO

Sledování jestli je v autobuse místo je až ta krajní možnost. Někdy se hodí, že máte sice místo, ale například na sedadle 59 a chcete ho na sedadle menším než 16. Další možností je, že sedíte u okénka a chcete do uličky, nebo jste v posile a chcete do regulérního autobusu. Toto zatím program neumí, ale až budou vznikat podobné požadavky, jistě to do programu dopíšu.

Finwe30.9.2009 9:22
SA Notify 1.7

Ahoj, přihřeju si polívčičku a prozradím, že verze SA Notify 1.7 podporující nový rezervační systém je venku :)

Taky koukám jak puk na kontrolu linek DPML a hlavně to rozšíření do Firefoxu, to jestli někdy dotahneš do konce, budu bez práce zase já :)

Oskar11.10.2009 14:25
URL fopen obejití

Ahoj, pokud se chceš vyhnout nutnosti nastavovat URL fopen wrapper, který navíc v další verzi PHP už nemá být, vygooglil jsem na to jednoduchou funkci, která využívá curl:

function curlGet($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, „BezAgentaToH­lasiError/403“);
curl_setopt($ch, CURLOPT_RETUR­NTRANSFER, true);
return curl_exec($ch); }

Oskar12.3.2010 11:51
Tak… a je čas na novou verzi :)

Tak nám zase (potřetí) změnili web. Nový systém je výrazně propracovanější a tím i složitější na ovládání z hlediska uživatele. Navíc nějak donutí Firefox, aby si nepamatoval přihlašovací údaje, takže je to tam potřeba pořád vyplňovat,

Asi to bude chtít konečně vytvořit rezervačního démona, co mu předám datum a čas spoje, spustím ho a on poběží tak dlouho, dokud se mu nepodaří něco zarezervovat, pak mi jen pošle e-mail :)

JayBee31.3.2010 20:00
Už to obnovovat nebudu

Tak to je teda od nich hezké. Bohužel pro ně jsem přestal používat linky SA. Linky DPML jsou většinou z části ještě volné, takže už nepotřebuji nic sledovat.

Deep11.7.2010 16:32
škoda

Je to škoda, že skript už nebude obnovován. Dlouho mi sloužil k plné spokojenosti. Po pár drobných úpravách mi dokonce posílal SMSku s volnými místy. Tak se asi budu muset víc ponořit do tajů parsování v PHP a zkusit si to spravit. Každopádně děkuji za dosavadní podporu skriptu.

Autor WWW
Titulek
Číslo stojedna  
Severovýchod Valid XHTML 1.0 Strict Valid CSS 2 Text to HTML converter and formatter Jay Bee simple CMS