<?
/**
Genereller Ablauf:
1.) Normale Downloadseite öffnen
2.) Link zur Countdownseite aus Quelltext holen
3.) Countdown von 60 Sekunde verstreichen lassen
4.) Aus Countdownseite während Countdown läuft definitiven Downoadlink holen
5.) Nach Countdownablauf cURL auf definitiven Downloadlink ausführen
**/
// Link zur Countdownseite
function dl_link_1($quelltext){
$dl_link = substr($quelltext, strpos($quelltext, 'id="ff" action="')+16, (strpos($quelltext, '" method="post') - strpos($quelltext, 'id="ff" action="')-16));
return $dl_link;
}
// Downloadlink für Datei holen
function dl_link_2($quelltext){
$dl_link = substr($quelltext, strpos($quelltext, 'name="dlf" action="')+19, (strpos($quelltext, '" method="post') - strpos($quelltext, 'name="dlf" action="')-19));
return $dl_link;
}
function dl_file($quelltext){
$dl_link = substr($quelltext, strpos($quelltext, 'id="ff" action="')+16, (strpos($quelltext, '" method="post') - strpos($quelltext, 'id="ff" action="')-16));
$file_arr = explode('/', $dl_link);
$file = array_pop($file_arr);
return $file;
}
function dl_verification($quelltext){
// DL-Limit erreicht. Wielange zu warten?
if(eregi('download limit',$quelltext)){
$dl_wait_time = substr($quelltext, strpos($quelltext, 'about ')+6, (strpos($quelltext, 'minutes') - strpos($quelltext, 'about ')-7));
echo 'Standby...<br>'.$dl_wait_time.' min. to wait!';
return false;
// Bereits ein DL am laufen.
}elseif(eregi('IP address',$quelltext)){
echo 'No parallel DLs';
return false;
// Datei nicht vorhanden
}elseif(eregi('check the download link',$quelltext)){
echo 'Link corrupt';
return false;
// Dl möglich.
}else{
return true;
}
}
// Link in jeweiliger Datei speichern : ready.txt oder error.txt
function save_link($txt_file, $txt_link){
$handle = fopen($txt_file, 'a');
$txt_link .= chr(9);
$txt_link .= date(' - d.m.Y H:i:s');
fwrite($handle, $txt_link);
fwrite($handle, "\r\n");
fclose($handle);
}
// Obersten Eintrag aus der todo Datei einlsesen
function get_link(){
$handle = fopen('todo.txt', 'r');
$temp_link = fgets($handle, 1024);
fclose($handle);
return $temp_link;
}
// Nach erfolgreichem Download ersten Eintrag löschen
function delet_first_entry(){
$array = file('todo.txt');
array_shift($array);
$fp = fopen('todo.txt',"w");
for ($i = 0; $i<count($array); $i++){
fputs($fp, $array[$i]);
}
fclose($fp);
}
// Aktuellen Link einlesen - DL Link nur löschen, wenn DL möglich.
$rs_adresse = trim(get_link());
echo 'Rapidshare-URL : <a href="'.$rs_adresse.'">'.$rs_adresse.'</a><br>';
// Link zur Countdownseite und Dateinamen holen
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $rs_adresse);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.7) Gecko/2009011913 Firefox/3.0.6');
$page_link = curl_exec($ch);
curl_close($ch);
$link_countdown = dl_link_1($page_link);
$file = dl_file($page_link);
echo 'Countdown-URL : '.$link_countdown.'<br>';
echo 'Filename : '.$file.'<br>';
// Wenn RS-Link ok ist:
if((dl_verification($page_link)) == true){
// Countdownseite öffnen und Dateilink holen
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $link_countdown);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'dl.start=Free');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6');
$page_countdown = curl_exec($ch);
curl_close($ch);
// Abfragen ob Download möglich ist
if(dl_verification($page_countdown) == true){
$def_dl_link = dl_link_2($page_countdown);
echo 'Download-URL : '.$def_dl_link.'<br>';
echo 'DL possible<br>';
echo 'Waiting for 60 seconds!<br>';
// Zwangspause
$i = 1;
echo $page;
while($i <= 60){
echo $i.'-';
flush();
sleep(1);
$i++;
}
echo '<br>Def. DL-Link : '.$def_dl_link;
echo '<br>DL started.';
flush();
// nach Countdownablauf Dateidownload starten
$handle = fopen($file,'w');
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, $def_dl_link);
curl_setopt($ch2, CURLOPT_TIMEOUT, 900);
curl_setopt($ch2, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6');
curl_setopt($ch2, CURLOPT_FILE, $handle);
curl_setopt($ch2, CURLOPT_FOLLOWLOCATION, true);
curl_exec($ch2);
fclose($handle);
curl_close($ch2);
echo '<br>DL finished.';
// erfolgreichen Downloadlink in ready.txt speichern
save_link('ready.txt', $rs_adresse);
delet_first_entry();
}
}else{
// Aktuellen Link in error.txt speichern
save_link('error.txt', $rs_adresse);
delet_first_entry();
}
?>