Jak to jest wspomniane na głównej stronie często przesiaduję na #error w sieci IRCNet. Ostatnio powstał nowy kanał #cycki. Nazwa mówi sama za siebie ^^. Ot ludziska wrzucają linki do fotek z wiadomą zawartością. Niestety ani irssi ani pidgin czy inny klient nie potrafi wyświetlić obrazka z linka więc trzeba klikać… Nie zawsze można kliknąć w linka więc jak żyć? Nic prostszego. Na jakimś serwerze uruchomić sobie na screenie irssi, dodać plugin made by winnetou i potem tylko co jakiś czas, z bezpiecznego łącza, zaglądać do galerii, która się automagicznie generuje…
Plugin dostępny jest w repozytorium svn
Plik grabimgs.pl wrzucam do katalogu $HOME/.irssi/scripts
oraz nadajemy mu prawa wykonywania. W pliku musimy wprowadzić 2 poprawki
- linijka 36
my $output="/PATH/WHERE/IMAGES/SHOULD/BE/SAVED";
- linijka 40
if ($channel == "#CHANNEL"){
Ciągi pisane wielkimi literami zastępujemy odpowiednio ścieżką do katalogu, w którym obrazek ma być zapisany oraz nazwą kanału, z którego linki chcemy pobierać. Jeśli ma być kilka kanałów to
możemy zastąpić regexpem
Skoro pobraliśmy skrypt, ustawiliśmy odpowiednie prawa i wprowadziliśmy żądane poprawki to możemy go załadować poleceniem (wydanym w irssi oczywiście!)
I to by było na tyle – od tej pory każdy link wklejony na danym kanale zostanie sparsowany i jeśli będzie to obrazek to zostanie zapisany w podanej lokalizacji. Linka do galerii #cycki nie podam z oczywistych względów ;)
Małe TODO:
-
sprawdzić zawartość linka przed zapisaniem na dysk - w przypadku podania kilku kanałów zapisywać linki w odpowiednich podkatalogach
- zmienić regexpa do linków
-
usunąć wywołania system()/exec() -
sprawdzić typ pliku (MIME) przed zapisaniem -
zmienić sposób nadawania nazw plików (ma sumę md5) -
sprawdzać duplikaty (po sumie md5)
[AKTUALIZACJA]
Rewizja 4: Lekkie przepisanie funkcji zapisujących obrazek. Dodane sprawdzenie typu MIME przed zapisaniem obrazka na dysku. Poprawione pobieranie plików (teraz link może zawierać znaki ? i &). Usunięcie wywołań systemowych (system()/exec()) – pure perl.
[AKTUALIZACJA 2]
Właśnie powstała wersja 1.0 skryptu ;) Już ma wszystko co powinna mieć. Zostało tylko dorobić przechwytywanie obrazków z wielu kanałów.