読者です 読者をやめる 読者になる 読者になる

atelier:mitsuba

i love UI/UX, Blend, XAML, Behavior, P5, oF, Web, Tangible Bits and Physical computing. なにかあればお気軽にご連絡ください。atelier@c-mitsuba.com

htmlSQLを使ってmixiボイスを引っこ抜く

htmlSQLっていう便利なものをこの前見つけました。

なので以前のボイスのソース引っこ抜いたを使って
http://d.hatena.ne.jp/c-mitsuba/20090930#1254237048
TLを引っこ抜いてみました。

<?php

	function MixiLogin($data)
	{
		$data = http_build_query($data + array('next_url' => 'home.pl'), '', '&');
		$context = stream_context_create(array(
			'http' => array(
          'method'  => 'POST',
            'header'  => implode("\r\n", array(
                'Content-Type: application/x-www-form-urlencoded',
                'Content-Length: ' . strlen($data)
            )),
            'content' => $data
        )
    ));
    file_get_contents('http://mixi.jp/login.pl', false, $context);
    $cookies = array();
    foreach ($http_response_header as $r) {
        if (strpos($r, 'Set-Cookie') === false) {
            continue;
        }
        $c = explode(' ', $r);
        $c = str_replace(';', '', $c[1]);
        $cookies[] = $c;
    }
    return $cookies;
}


function MixiGetPage($url, $cookies)
{
    $context = stream_context_create(array(
        'http' => array(
            'method'  => 'GET',
            'header'  => implode("\r\n", array(
                'Cookie: ' . implode('; ', $cookies)
            ))
        )
    ));
    return file_get_contents($url, false, $context);
}


$data = array(
    'email'    => 'hoge@fuga',
    'password' => 'piyo'
);

$cookies = MixiLogin($data);

$page1 = MixiGetPage('http://mixi.jp/home.pl', $cookies);

$page2 = MixiGetPage('http://mixi.jp/recent_echo.pl', $cookies);

//print(htmlspecialchars($page2,ENT_NOQUOTES,"euc-jp"));

//print($page2);


    include_once("../snoopy.class.php");
    include_once("../htmlsql.class.php");
    
    $wsql = new htmlsql();
    
    // connect to a URL
    if (!$wsql->connect('string', $page2)){
        print 'Error while connecting: ' . $wsql->error;
        exit;
    }
    
    /* execute a query:
        
       This query extracts all links with the classname = nav_item   
    */
    if (!$wsql->query('SELECT text FROM div WHERE $class == "echo_body"')){
        print "Query error: " . $wsql->error; 
        exit;
    }
    
    foreach($wsql->fetch_array() as $echo_body){
        $echo_body_array[] = $echo_body;     
    }  

	if (!$wsql->query('SELECT text FROM div WHERE $class == "echo_nickname"'))	{
        print "Query error: " . $wsql->error; 
        exit;
    }

    foreach($wsql->fetch_array() as $echo_nickname){
    	$echo_nickname_array[] = $echo_nickname; 
    }
    
    for($i=0;$i<count($echo_nickname_array);$i++){    
    	print($echo_nickname_array[$i]['text']);
    	print(":");
    	print($echo_body_array[$i]['text']);
    	print("<br>");
    }
	
?>

実行結果はこうなります。

蜜葉のポスト以外はぼかしてるんだけど、
ついったと動機してるせいで蜜葉ばっかですねw

それにしても、やっつけコードはやっぱりきたないなぁwww