Hei,
olen tällä hetkellä tekemässä itselleni yksityiskäyttöön nettisivua, josta voisi katsoa päivittäin kyseisenä päivänä julkaistut nettisarjakuvat (tyylin Matin maapallo) Koska en haluaisi viedä turhaa kaistaa sarjakuvien sivustoilta, olisi oikeastaan ainoa ratkaisu joka päivä erillisellä skriptillä ladata sarjakuvat omalle serverilleni netistä. Ongelmaksi kuitenkin tulee se, etten oikeastaan osaa muuta kieltä kuin PHP:tä, jolla ei taida onnistua kyseinen asia :/
Elikkä nyt itse kysymykseen: Voiko (ja miten) Perlillä tai bashilla voisi toteuttaa ohjelman, joka hakee internet-sivun lähdekoodista tietyn osoitteen (esim. lauseen <img class="kissakuva" src="www.foo.com/bar/kissa.jpg"> sisältä osoitteen www.foo.com/bar/kissa.jpg) jonka jälkeen lataa ko. kuvan koneelle?
Kiitos jo etukäteen :)
Kuvan voi kopioida suoraan PHP:llä:
<?php // kuvan alkuperäinen osoite $osoite = "https://www.ohjelmointiputka.net/img/palkki2.jpg"; // kuvan nimi omalla palvelimella $tiedosto = "oma.jpg"; // kopioidaan kuva tarvittaessa if (!file_exists($tiedosto)) { copy($osoite, $tiedosto); } echo "<img src=\"$tiedosto\">"; ?>
Toisaalta jos sivu on sinulle yksityiskäyttöön, tuskin ketään haittaa, vaikka kopioisit sarjakuvat joka päivä muutaman kerran erikseen.
Tuo kieltämättä toimisi muuten, mutta haluaisin sarjakuvat myös tietokantaan, jotta niiden katseleminen olisi mahdollista myös jälkikäteen. PHP:llä toteutettuna pitäisi sarjakuva-sivulla käydä ainakin kerran päivässä, jotta ne tallentuisi tietokantaan. Siksi ajattelin, että skriptin teko perl/bash akselilla ja sen pyörittäminen joka päivä crontabilla vaikka 5 aikaan aamulla olisi parempi ratkaisu :/
Toinen asia on se, että monilla sarjakuvasivustoilla päivän strippi ei välttämättä ole timestamp nimellä, vaan ihan uniikilla nimellä. Siksi olisi hyvä, jos skripti pystyisi myös etsimään sivuston lähdekoodista sen päivän sarjakuvan nimen tyyliin:
Tässä on tämän päivän sarjakuva<br /> <div class="sarjak"><img src="img/sarjisjee.jpg"></div>
ylläolevasta koodista skripti etsisi lähdekoodista kohdan "<div class...." ja sitä kautta sen päivän sarjakuvan kuvatiedoston osoitteen.
Anteeksi todella paljon jos ajatuksen juoksustani ei saa mitään selkoa :D Yritän kuitenkin parhaani
Voihan cronilla ajaa yhtä hyvin PHP-skriptinkin tai vaikka laittaa wgetin "käymään" sarjakuvasivulla.
Kielellä kuin kielellä toteutus on jokseenkin samaa luokkaa. Komentorivityökaluilla tuo onnistuu suunnilleen näin (vedän hatusta):
#!/bin/bash TMP="/tmp/pid-$$-sarjakuva" hae() { wget http://sarja.kuva/sivu.php -qO sivu.html || return 2 grep -B 1 '<div class="sarjak">' sivu.html > rivit.html || return 3 IMG=$(tail -n 1 rivit.html | cut -d '"' -f 4) test -n "$IMG" || return 3 wget "http://sarja.kuva/$IMG" -qO kuva.jpg || return 4 grep -oE "^[^<]+" rivit.html > nimi.txt || return 5 # Lisää vielä tietokantaan... } mkdir -p "$TMP" || exit 1 cd "$TMP" hae RET="$?" cd / rm -rf "$TMP" exit $RET
Aihe on jo aika vanha, joten et voi enää vastata siihen.