Записи. myminicity 

15 лет назад

В сети есть сайт myminicity.com, где каждому желающему предлагают построиьт свой город. Суть заключается в том, чтобы заходить по ссылкам в город увеличивая соответсвующий параметр. Всё просто и лаконично, если не считать, что каждый город можно увеличить 1 раз в сутки с 1-го IP адреса.

Можно, конечно, постоянно отключать интернет и подключать его снова, но это время и силы.

Предлагаю вашему внимания функцию загрузки страницы города, определения следующего необходимого параметра и подготовке к следующему вызову.

function UpdateCity($city){ 
global $i,$log; echo '<pre>'; $log = fopen (dirname(__FILE__)."/".$city.".log.txt", 'a'); 
$html=new html();
$next=file_get_contents(dirname(__FILE__)."/".$city.".next.txt");
writelog($city."\t");
$get=http_req('http://'.$city.'.myminicity.com/'.$next,array('X-MV-Referer'=>'http%3A%2F%2F'.$city.'.myminicity.com%2F'.$next), '','http://'.$city.'.myminicity.com/','Lugavchik autoBots',true,'localhost:8000','0',true);
if (isset(
$get['location'])){ $get=http_req('http://'.$city.'.myminicity.com/',array('X-MV-Referer'=>'http%3A%2F%2F'.$city.'.myminicity.com%2F'),'','ht tp://'.$city.'.myminicity.com/','Lugavchik autoBots',true,'localhost:8000','0',true); }
$html->SetText($get['answer']); $html->TruncBegin('&ranking='); $ranks=explode('|',$html->Extract('&'));
$ranktable='<table border="0" style="position:absolute;right:0px;">'; foreach($ranks as $r){ list($pos,$name) = explode(',',$r); $ranktable.='<tr'.($name==$city?' style="font-weight:bolder;"':'').'><td>'.$pos.'</td><td><a href="http://'.$name.'.myminicity.com/">'.$name.'</a></td></tr>'; } $ranktable.='</table>';
$html->TruncBegin('id="swf_client"'); $html->TruncBegin('"FlashVars","'); $flash=$html->Extract('"'); $f=explode('&',$flash);
$flashpar=array(); foreach($f as $fp){ list($name,$val)=explode('=',$fp,2); $flashpar[$name]=$val; }
$html->TruncBegin('id="messages">'); $chat=$html->Extract('<a ');
$html->TruncBegin('<div class="stats">'); $html->TruncBegin('<dd>'); $Population=$html->Extract('</dd>');
$html->TruncBegin('<dd>'); $Cost=$html->Extract(' ');
$html->TruncBegin('Unemployment'); $html->TruncBegin('">'); $Unemployment=$html->Extract(' '); 
$html->TruncBegin('Transport'); $html->TruncBegin('">'); $Transport=$html->Extract(' ');
$html->TruncBegin('Crime rate'); $html->TruncBegin('">'); $Crime=$html->Extract(' ');
$html->TruncBegin('Pollution'); $html->TruncBegin('">'); $Pollution=$html->Extract(' ');
$next=''; if ($Unemployment!='0') $next='ind'; if ($Transport!='100') $next='tra'; if ($Crime!='0') $next='sec'; if ($Pollution!='0') $next='env';
writelog($Population."\t".$Cost."\t".$Unemployment."\t".$Transport."\t".$Crime."\t".$Pollution."\t".$next."\t".$flashpar['pop']."\t".$flashpar['ind']."\t".$flashpar['tra']."\t".$flashpar['sec']."\t".$flashpar['env']."\t".$flashpar['com']."\r\n");
$rnn = fopen (dirname(__FILE__)."/".$city.".next.txt", 'w'); fwrite($rnn, $next); fclose($rnn); fclose($log);
$i++; echo '</pre><div id="chat'.$i.'" style="height:100px; overflow:auto;margin-right:150px;">'.$chat.'</div><div style="float:left;" id="client"><a name="city'.$i.'"></a><embed type="application/x-shockwave-flash" src="http://data.myminicity.com/swf/client.swf?v=5" id="client" name="client" bgcolor="#deecfe" quality="high" menu="false" allowscriptaccess="always" flashvars="'.$flash.'" scale="noscale" height="80%" width="1000px"></div>'.$ranktable.' <script type="text/javascript">document.getElementById("chat'.$i.'").scrollTop=100000;</script> <br clear="both"/> '; }

В скрипте использовано:

  • Функция writelog($text); Записывающая в файл $log текст переданный в неё и выводящий его же в браузер. (Напишете сами?)
  • Класс html - предназначенны для отрезания от текста частей текста с заданного начала или извлечения до указанных символов. (При необходимости поделюсь.)
  • Функция http_req - Запрашивающая переданную ей страницу с приведёнными параметрами запроса. (При необходимости поделюсь.)

Вызов осуществляется с передачей имени города в качесте единственного аргумента: UpdateCity('megatron.ws');

В качестве домашнего задания написания функции переподключения интернета для смены IP адреса.


Авторизация



Поиск на сайте или перейди на страницу поиска