PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : userfriendly.org webcomics downloadscript



leifg
19.02.03, 21:34
manche von euch kennen vielleicht die webseite userfriendly.org (webcomic reihe)

ich habe ein script geschrieben welches alle folgen die es dort zu bestaunen gibt herunterläd und möchte euch dieses script nicht vorenthalten.

ein paar generelle funktionen zu diesem script:
ist in php geschrieben (kann ich einfach besser als bash etc...) um es auszuführen braucht ihr also einen php interpreter (unter debian apt-get install php4-cgi)

features des skripts:
erkennt selbständig welche folgen fehlen
benennt alle folgen nach dem format yyyymmtt.gif

anwendung:
in verzeichnis wechseln in das folgen geladen werden, skript starten, warten

kritik, verbesserungscorschläge, portierung auf andere sprachen bitte hier posten

hier der code:

uf_dl_script.php



#!/usr/bin/php4 -q
<?php
$startyear = 1997;
$startmonth = 11;
$startday = 17;
$today = getdate(time());
$missing = array();
$i = 0;
$bild = 0;
$finished = false;
$datum = mktime (0, 0, 0, $startmonth, $startday, $startyear);

//while (!finished)
//{

for ($datum; $datum <= mktime (0, 0, 0, $today[mon], $today[mday], $today[year]); $datum=$datum+86400)
//for ($datum; $datum < mktime (0, 0, 0, 6, 1, 2001); $datum=$datum+86400)
{


$startday=date("d",$datum);
$startmonth=date("m",$datum);
$startyear=date("Y",$datum);
$startdate = $startyear.$startmonth.$startday;
$filename = $startdate.".gif";

if (!file_exists($filename))
{
$missing[$i]=$startdate;
//echo $filename."\n";
$i++;
}
}
$gesamt = sizeof($missing);

if ($gesamt == 0)
echo "everything up to date\n";
else
echo "$gesamt issues missing ... now download\n";

foreach ($missing as $x)
{
$bild++;
echo "Fetching: #".$bild."/".$gesamt." ";
download_strip($x);
}

function download_strip($issue)
{

$timeout = 3;
// $default_reg_exp ="http\:\/\/www.userfriendly.org\/cartoons\/archives\/[[:digit:]][[:digit:]][[:alpha:]][[:alpha:]][[:alpha:]]\/[[:alpha:]][[:alpha:]][[:digit:]]*.gif";
$default_reg_exp ="http\:\/\/www.userfriendly.org\/cartoons\/archives\/[[:digit:]]*[[:alpha:]]*\/[[:alpha:]]*[[:digit:]]*.gif";
echo "(issue: $issue)";
$site = join('',file("http://ars.userfriendly.org/cartoons/?id=".$issue));

if (eregi($default_reg_exp,$site,$reg))
{
$dateiname = $issue.".gif";
while (!file_exists($dateiname))
{
$timeout--;
if ($timeout == 0)
{
echo "download FAILED!!!\n";
return false;
}
exec("nohup wget -O $dateiname $reg[0]");
}
echo " ... Done\n";
}

return true;
}


mfg
leifg

leifg
10.03.03, 13:14
hab jetzt auch noch eins für jerkcity.com geschrieben.

feedback wär mal nicht schlecht



#!/usr/bin/php4 -q
<?php
$zeros = 5;
$missing = array();
$default_reg_exp ="(\#[0-9]+)";
$site = join('',file("http://www.jerkcity.com/index.html"));
if (eregi($default_reg_exp,$site,$reg))
$latest = $reg[0];
$latest = ereg_replace("#","",$latest);

for ($i = 1; $i <= $latest; $i++)
{
$episode = $i;
$filename = make_zeros($i,$zeros).".gif";
if (!file_exists($filename))
{
$missing[$i-1]=$episode;
}
}

$size = sizeof($missing);

if ($size == 0)
echo "everything up to date\n";
else
echo "$size episodes missing ... now download\n\n";

$cur = 0;
foreach ($missing as $x)
{
$cur++;
$prozent = sprintf ("%01.2f", ($cur / $size)*100);
echo "now fetching ".$cur."/".$size." "."[$prozent%] ";
download_strip($x);
}

function download_strip($episode)
{
$timeout = 3;
$zeros = 5;
$filename = make_zeros($episode,$zeros).".gif";
$url = "http://www.jerkcity.com/jerkcity".$episode.".gif";
echo "(episode: $episode)";

while (!file_exists($filename))
{
$timeout--;
if ($timeout == 0)
{
echo "download failed";
break;
}
exec("nohup wget -O $filename $url");
}
echo " ... done\n";

return true;
}

function make_zeros($number,$zeros)
{
$size = strlen($number);
$string = "";
for ($i = $size; $i < $zeros; $i++)
{
$string = "0".$string;
}
return $string.$number;
}


mfg
leifg

Komet
10.03.03, 14:25
Hi
Als erstes muss ich sagen, die Skripte funktionieren und... keine schlechte Idee.
Vielleicht kannst du dazu ja auch noch ne php Seite basteln, die mir die Bilder dann anzeigt, nach Jahr/Monat/Tag sortiert?!?

Was man allerdings bedenken muss:
Seiten wie jerkcity.com und userfriendly.org finanzieren sich (ausschließlich?) durch Werbeeinnahmen. Wenn jetzt ein Haufen Leute kommen und sich die Comics mit nem Skript runterziehen, fehlen den Betreibern erstens die Werbeeinnahmen und zweitens verursacht man auch noch Traffic.
Sollte man vielleicht mal drüber nachdenken.