Blib Skrevet 22. juli 2004 Del Skrevet 22. juli 2004 (endret) Har tenkt å prøve å laste ned et par bilder fra web, men støter borti non problemer. Hovedgrunnen til dette er pga de ikke har noen som helst bilder på nettsidene, men bruker ei php-fil i <img>-elementet. I tillegg har da alle disse samme filnavn, men forskjellig variabel. Så derfor fungerer ikke de vanlige programmene jeg bruker til slikt. Og derfor tenkte jeg at kanskje PHP kunne klare noe. Men jeg finner ikke utav noen metode for dette allikevel ser jeg ved litt leting. Eneste fornuftige jeg har greid å komme opp med nå er et script som kan lage masse .html-filer med <img>-elementer i seg, men jeg vil gjerne lagre selve bildene til disk. Kan det kanskje gjøres med GD eller noe slikt? Har aldri testet noen av disse bildebehandlingsgreiene til PHP før.. Edit: Bildene jeg vil ha ned er forresten RealLife Comics, med bilder fra http://www.reallifecomics.com/daily.php?do...111-00000-00000 og hvor strip_id kan variere fra 1 til 1300 eller noe. Endret 22. juli 2004 av Blib Lenke til kommentar
Lokaltog Skrevet 22. juli 2004 Del Skrevet 22. juli 2004 (endret) Tenker.. Er det kanskje mulig å bruke noe som: function outputimage($url) { $im = @imagecreatefromgif($url); $hash = md5($url); if(@imagepng($im, "$hash.png")) echo("Skrev bilde til disk.\r\n"); else echo("Bildet eksisterer ikke.\r\n"); } for($i = 1; $i <= 1300; $i++) { outputimage("http://www.reallifecomics.com/daily.php?do_command=show_strip&strip_id=$i&auth=00000-00000-11111-00000-00000"); } Edit: sjekka, og den her funker. Men ikke alle bildene eksisterer, så forandret koden litt. Edit2: Mulig det er pc'en min som får timeout på bildene. Endret 22. juli 2004 av lokaltog Lenke til kommentar
Blib Skrevet 22. juli 2004 Forfatter Del Skrevet 22. juli 2004 (endret) Hmm, ser fint ut. Hvordan får jeg det til å fungere her? Må jeg kalle den funksjonen eller noe? (Har ikke brukt funksjoner frem til nå). Trenger jeg GD installert? Og forresten, de har en ekstremt treg server, noe som er hovedgrunnen til hvorfor jeg vil laste ned bildene. Tenkte på å dele opp fila i 20 forskjellige scripts, et som tok fra 1-50, et annet for 51-100, et fra 101 til 150 osv for å få det ned raskest mulig Endret 22. juli 2004 av Blib Lenke til kommentar
Lokaltog Skrevet 22. juli 2004 Del Skrevet 22. juli 2004 Bare å sette inn denne kodeblokken, for()-loopen tar seg av å kalle funksjonen. function outputimage($url, $num) { $im = @imagecreatefromgif($url); if(@imagepng($im, "$num.png")) echo("Skrev bilde til disk.\r\n"); else echo("Bildet eksisterer ikke.\r\n"); } for($i = 1; $i <= 50; $i++) { outputimage("http://www.reallifecomics.com/daily.php?do_command=show_strip&strip_id=$i&auth=00000-00000-11111-00000-00000", $i); } Driver og eksperimenterer, for jeg får timeout på noen bilder.. Denne er iallefall basic hvordan du gjør det.. Skriver bildene i formen 1.png, 2.png osv.. Lenke til kommentar
Blib Skrevet 22. juli 2004 Forfatter Del Skrevet 22. juli 2004 Yey. Hvor blir de lagret? Lenke til kommentar
Lokaltog Skrevet 22. juli 2004 Del Skrevet 22. juli 2004 Yey. Hvor blir de lagret? I samme mappe som scriptet ligger. Derfor må du CHMOD'e denne mappa til 666/777 slik at bildene kan bli skrevet der. Lenke til kommentar
Blib Skrevet 22. juli 2004 Forfatter Del Skrevet 22. juli 2004 Konge! Det ser ut til å fungere helt strålende ja, bortsett fra det med timeoutene. Tror du at du kan klare å komme rundt det? Lenke til kommentar
Lokaltog Skrevet 22. juli 2004 Del Skrevet 22. juli 2004 Hei, fant ut en ting.. skriver ny funksjon til deg, for noen av bildene er png fra før av! kommer i den posten her snart.. Lenke til kommentar
Blib Skrevet 22. juli 2004 Forfatter Del Skrevet 22. juli 2004 *venter i spenning* For å slippe det timeoutproblemet ser det ialelfall ut til at vi bare blir nødt til å kappe opp scriptet på 5 bilder av gangen og lage MEGET mange filer. For så å lage et php-script som kan åpne de, ti av gangen eller noe Lenke til kommentar
Lokaltog Skrevet 22. juli 2004 Del Skrevet 22. juli 2004 Ok, laga en ny post. Fant ut at scriptet ikke timet ut på noen av bildene, men at de var PNG fra før av. Derfor har jeg laga en ny funksjon som ser sånn her ut: function outputimage($url, $num) { $im = imagecreatefromgif($url); if(!$im) $im = imagecreatefrompng($url); if(imagepng($im, "$num.png")) echo("Skrev bilde til disk.\r\n"); else echo("Bildet eksisterer ikke.\r\n"); } for($i = 1; $i <= 50; $i++) { outputimage("http://www.reallifecomics.com/daily.php?do_command=show_strip&strip_id=$i&auth=00000-00000-11111-00000-00000", $i); } Scriptet er VELDIG tregt, og jeg vet ikke om PHP eller nettleseren tillater å kjøre script som tar så lang tid. Derfor ville det kanskje være en idé å lage et script som kjører seg selv gang på gang med et nummer som øker for hver gang. (vha header("Location:");?) Fortsetter å se på det, poster nye versjoner hvis jeg finner noe nytt Lenke til kommentar
Blib Skrevet 22. juli 2004 Forfatter Del Skrevet 22. juli 2004 Skrev bilde til disk. Warning: imagecreatefromgif(): 'http://www.reallifecomics.com/daily.php?do_command=show_strip&strip_id=2&auth=00000-00000-11111-00000-00000' is not a valid GIF file in <path>\htdocs\reallife\script.php on line 4 Skrev bilde til disk. Warning: imagecreatefromgif(): 'http://www.reallifecomics.com/daily.php?do_command=show_strip&strip_id=3&auth=00000-00000-11111-00000-00000' is not a valid GIF file in <path>\htdocs\reallife\script.php on line 4 Skrev bilde til disk. Warning: imagecreatefromgif(): 'http://www.reallifecomics.com/daily.php?do_command=show_strip&strip_id=4&auth=00000-00000-11111-00000-00000' is not a valid GIF file in <path>\htdocs\reallife\script.php on line 4 Fatal error: Maximum execution time of 30 seconds exceeded in <path>\reallife\script.php on line 4 Hvorfor får jeg de "not a valid GIF file"-errorene? Og ellers, tusen, tusen takk for at du tar deg tid Lenke til kommentar
Lokaltog Skrevet 22. juli 2004 Del Skrevet 22. juli 2004 Du får samme output som meg.. De errorene skal du ikke bry deg om - skal fikse dem i scriptet jeg holder på med nå.. Er godt på vei! Lenke til kommentar
Blib Skrevet 22. juli 2004 Forfatter Del Skrevet 22. juli 2004 (endret) Whey! Det høres helt supert ut. Forresten, er det mulig å outputte noe som helst i et dokument som det også står header(Location:script.php); i? Tenkte jeg skulle prøve meg litt selv, men det ble da kun til redirecting og jeg fikk ikke gjort noe særlig annet Endret 22. juli 2004 av Blib Lenke til kommentar
Lokaltog Skrevet 22. juli 2004 Del Skrevet 22. juli 2004 (endret) Da er funksjonen i boks! Den kjører seg selv gang på gang, så du må lukke dokumentet når du ikke vil ha flere! <?php function outputimage($url, $num) { $im = @imagecreatefromgif($url); if(!$im) $im = @imagecreatefrompng($url); if(@imagepng($im, "$num.png")) return true; else return false; } $num = $_GET['num']; $next = $num + 1; if(outputimage("http://www.reallifecomics.com/daily.php?do_command=show_strip&strip_id=$num&auth=00000-00000-11111-00000-00000", $num)) header("Location: bilde.php?num=$next"); ?> Dette legges i fila bilde.php. I en god nettleser med tabbed browsing starter du ett vindu med http://dinadresse/bilde.php?num=1, ett vindu med http://dinadresse/bilde.php?num=20, ett vindu med http://dinadresse/bilde.php?num=30 osv, alt etter hvor mange vinduer du gidder å åpne. Når ett vindu er ferdig med alle bildene (du må holde øye med det på FTP/hvor enn du lagrer filene), kan du lukke det og la de andre fortsette. Vinduene skriver bilde etter bilde av seg selv, og stopper aldri med mindre du lukker det. Edit: den stopper av seg selv hvis det mangler et bilde eller når du når bilde 1300 eller hvor mange det er. Ha det gøy! Endret 22. juli 2004 av lokaltog Lenke til kommentar
Blib Skrevet 22. juli 2004 Forfatter Del Skrevet 22. juli 2004 (endret) The requested URL /reallife/bilde.php was not found on this server. Samt at den opprettet en fil kalt ".png" (Altså uten noe filnavn egentlig) som inneholdt en enkeltstripe (Vet ikke hvilket nummer)., Ellers er jeg så overglad som du får meg Edit: AHA! Jeg har kalt scriptet mitt script.php, du bilde.php. Ser feilen, skal rette det opp nå. *tusen*takk Endret 22. juli 2004 av Blib Lenke til kommentar
Lokaltog Skrevet 22. juli 2004 Del Skrevet 22. juli 2004 (endret) Du MÅ legge koden i en fil som heter "bilde.php", og du MÅ starte et nettleservindu med adressen http://etellerannet/bilde.php?num=1! Edit: variabelen "num" på slutten definerer hvilket bilde den skal starte på. Endret 22. juli 2004 av lokaltog Lenke til kommentar
Blib Skrevet 22. juli 2004 Forfatter Del Skrevet 22. juli 2004 (endret) Jepp, det ser rått ut. Og nå funker det som bare pokker. Forresten så oppretter det fremdeles en liten fil kalt ".png" som inneholder ... *sjekker* Aha. Den mystery-filen inneholder dagens bilde. Det er vel strip_id=0 kan jeg tenke meg, ettersom daiyl.php peker til den. Wohoo! Hmm, skulle gjerne hatt med leading zeroes da, slik at det blir mulig å sortere det på navn senere i Windows. Det kan sikkert ordnes med et program senere, men for andre så hadde de kanskje likt hvis du kunne klart å legge til det? Ikke noen særlig biggie da men Edit: Hittil er litt over 2 megs megs bilder kommet ned hit. You're a lifesaver Endret 22. juli 2004 av Blib Lenke til kommentar
Lokaltog Skrevet 22. juli 2004 Del Skrevet 22. juli 2004 Jepp, det ser rått ut. Og nå funker det som bare pokker. Forresten så oppretter det fremdeles en liten fil kalt ".png" som inneholder ... *sjekker* Aha. Den mystery-filen inneholder dagens bilde. Det er vel strip_id=0 kan jeg tenke meg, ettersom daiyl.php peker til den. Wohoo! Hmm, skulle gjerne hatt med leading zeroes da, slik at det blir mulig å sortere det på navn senere i Windows. Det kan sikkert ordnes med et program senere, men for andre så hadde de kanskje likt hvis du kunne klart å legge til det? Ikke noen særlig biggie da men Edit: Hittil er litt over 2 megs megs bilder kommet ned hit. You're a lifesaver 2 sekunder så har du det:) Lenke til kommentar
Lokaltog Skrevet 22. juli 2004 Del Skrevet 22. juli 2004 (endret) Her har du en med leading zeroes: <?php function outputimage($url, $num) { $pad = str_pad($num, 4, "0", STR_PAD_LEFT); $name = "$pad.png"; $im = @imagecreatefromgif($url); if(!$im) $im = @imagecreatefrompng($url); if(@imagepng($im, $name)) return true; else return false; } $num = $_GET['num']; $next = $num + 1; if(outputimage("http://www.reallifecomics.com/daily.php?do_command=show_strip&strip_id=$num&auth=00000-00000-11111-00000-00000", $num)) header("Location: bilde.php?num=$next"); ?> Edit: oops! Edit2: oops! Endret 22. juli 2004 av lokaltog Lenke til kommentar
Blib Skrevet 22. juli 2004 Forfatter Del Skrevet 22. juli 2004 (endret) N-ydelig. Har satt ting på stopp her da og skal begynne på nytt med leading zeroes. Helst 4-sifret da, siden det er 1300 filer. (Slik at #1 blir 0001.png ) Og jeg kan rett og slett bare ikke takke deg nok. Ikke bare får jeg ned den råeste tegneserien noensinne, jeg har også lært meg 4-5 nye PHP-saker som jeg vet jeg kommer til å få enomt mye bruk for. Edit: eeeek! Det ser ut til at den nå timer ut før den rekker å laste ned bildet. Så nå dukker det ikke opp nye filer. Kan det fikses? Endret 22. juli 2004 av Blib Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå