All pastes #265121 Raw Edit

Stuff

public php v1 · immutable
·published 2006-12-03 00:54 UTC
rendered paste body
for ( $feed = 0; $feed < count($feeds); $feed++ ){    $feed_host = parse_url($feeds[$feed][1], PHP_URL_HOST);    $feed_path = parse_url($feeds[$feed][1], PHP_URL_PATH) . "?" . parse_url($feeds[$feed][1], PHP_URL_QUERY);    if ( ($s = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false  )    {        debug_log("[fatal] feed[{$feed}].socket_create(): %s", socket_strerror(socket_last_error()));        continue;    }    if ( !@socket_bind($s, $bind_address) )    {        debug_log("[fatal] feed[{$feed}].socket_bind({$bind_address}): %s", socket_strerror(socket_last_error()));        continue;    }    if ( !@socket_connect($s, $feed_host, 80) )    {        debug_log("[fatal] feed[{$feed}].socket_connect({$feed_host}, 80): %s", socket_strerror(socket_last_error()));        continue;    }    $cookies = count($feeds[$feed][2]) - 1;    $feed_cookies = "";    for ( $cookie = 0; $cookie <= $cookies; $cookie++ )    {        $feed_cookies .= "{$feeds[$feed][2][$cookie][0]}={$feeds[$feed][2][$cookie][1]}" . ( $cookie == $cookies ? "" : ";" );    }    debug_log("[debug] feed[{$feed}].feed_cookies = {$feed_cookies};");    socket_write($s, "GET {$feed_path} HTTP/1.0\r\n");    socket_write($s, "Host: {$feed_host}\r\n");    socket_write($s, "Connection: Close\r\n");    socket_write($s, "Cookie: {$feed_cookies}\r\n\r\n");    $rss = "";    while ( ($read = socket_read($s, 0xffff)) ) { $rss .= $read; }    $rss = substr($rss, strpos($rss, "\r\n\r\n") + 4);    file_put_contents("./feed[{$feed}].xml", $rss);    $rss = file_get_contents("./feed[{$feed}].xml");    $rssa = xml2array($rss);    $items = $rssa["rss"][0]["channel"][0]["item"];    for ( $item = 0; $item < count($items); $item++ )    {        $link = html_entity_decode($items[$item]["link"]);        debug_log("[debug] feed[{$feed}].item[{$item}].link = {$link};");        if ( !preg_match($feeds[$feed][5], $link, $m) )        {            debug_log("[fatal] feed[{$feed}].item[{$item}].preg_match({$feeds[$feed][5]}, {$link}): failed!");            continue;        }        $save_as = "watch/{$m[1]}.torrent";        if ( file_exists($save_as) )        {            continue;        }        $download = FALSE;        $filters = count($feeds[$feed][3]);        for ( $filter = 0; $filter < $filters; $filter++ )        {            //debug_log("[debug] feed[{$feed}].item[{$item}].filter[{$filter}].match = {$match};");            if ( ($p = strpos($feeds[$feed][3][$filter], "!")) )            {                $_match = explode(" ", substr($feeds[$feed][3][$filter], 0, $p));                $_except = explode(" ", substr($feeds[$feed][3][$filter], $p + 1));            }            else            {                $_match = explode(" ", $feeds[$feed][3][$filter]);                $_except = NULL;            }            $matches = count($_match);            for ( $match = 0; $match < $matches; $match++ )            {                if ( strpos($items[$item]["title"], $_match[$match]) === false )                {                    continue 2;                }            }            if ( $_except != NULL )            {                $excepts = count($_except);                for ( $except = 0; $except < $excepts; $except++ )                {                    if ( strpos($items[$item]["title"], $_except[$except]) !== false )                    {                        continue 2;                    }                }            }            $download = TRUE;            break;        }        if ( $download == FALSE )        {            continue;        }        $torrent_host = parse_url($link, PHP_URL_HOST);        $torrent_path = parse_url($link, PHP_URL_PATH);        if ( ($s = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false  )        {            debug_log("[fatal] feed[{$feed}].item[{$item}].socket_create(): %s", socket_strerror(socket_last_error()));            continue;        }        if ( !@socket_bind($s, $bind_address) )        {            debug_log("[fatal] feed[{$feed}].item[{$item}].socket_bind({$bind_address}): %s", socket_strerror(socket_last_error()));            continue;        }        if ( !@socket_connect($s, $torrent_host, 80) )        {            debug_log("[fatal] feed[{$feed}].item[{$item}].socket_connect({$torrent_host}, 80): %s", socket_strerror(socket_last_error()));            continue;        }        socket_write($s, "GET {$torrent_path} HTTP/1.0\r\n");        socket_write($s, "Host: {$torrent_host}\r\n");        socket_write($s, "Connection: Close\r\n");        socket_write($s, "Cookie: {$feed[1]}\r\n\r\n");        $torrent = "";        while ( ($read = socket_read($s, 0xffff)) ) { $torrent .= $read; }        $torrent = substr($torrent, strpos($torrent, "\r\n\r\n") + 4);        file_put_contents($save_as, $torrent);        debug_log("Downloaded '%s' to '%s'.", $items[$item]["title"], $save_as);        call_user_func_array($feeds[$feed][0], array($save_as));    }}