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

svn co https://valhalla.org.pl/svn/irssi-scripts

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

($channel == "#CHANNEL")

możemy zastąpić regexpem

($channel =~ /CHANNEL|CHANNEL|CHANNEL/)

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!)

/RUN grabimgs.pl

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.

WykopShare