Брёд

28.01.2010

Обработка Multi Scrape заспросов

Рубрика: Программирование — Метки: , , — admin @ 2:26 дп

На этот раз мне захотелось еще раз вые выпиндриться, и сделать в своем scrape поддержку Multi Scrape запросов.
Долгие пляски вокруг $_GET, фактически ничего не дали но зато дал плоды $_SERVER['QUERY_STRING'].
Зацепившись за него минут за 15 накатал простенькую функцию которая выдает массив хеш-сумм переданные в URI. В случае если хотя бы одна хеш-сумма не будет равна 20 символам то функция завершиться с ошибкой Invalid info_hash.

Сама функция:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
function scrape_parse_query()
{
    $info_hash = array();
    $query     = $_SERVER['QUERY_STRING'];
 
    $query = explode("&", $query);
 
    foreach($query as $k)
    {
        list($key, $value) = explode('=', $k);
        $key   = str_replace('?', '', $key);
	$value = urldecode($value);
 
        if($key == 'info_hash' && strlen($value) == 20)
        {
		$info_hash[] = bin2hex($value);
        }
        else
        {
            if(strlen($value) != 20 and $key == 'info_hash')
            {
		msg_die('Invalid info_hash');
            }
        }
    }
 
    return $info_hash;
}

На выходе у функции будет массив хеш-сумм (в BTIH).
Что с данными хеш суммами делать, решайте сами.
Кстати, чуть не забыл сказать, данная функция писалась под scrape на основе TorrentPier.

27.01.2010

Из compact в обычный вид

Рубрика: Программирование — Метки: , — admin @ 9:55 пп

Недавно понадобилось протестировать собственный же анонсер, по всем критериям и один из них нормальная работа в compact режиме (т.е. пиров нам анонсер отдает в закодированном виде, что уменьшает в свою очередь трафик между сервером и клиентами).

Для того чтобы прекратить из compact в обычный вид написал функцию, которая до ужаса банальна, но работает:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function peers_to_array($data)
{
	if (!is_array($data['peers']))
	{
		$new_peers = array();
 
		while (strlen($data['peers']) > 0)
		{
			list(, $ip)   = @unpack('N', substr($data['peers'], 0, 4));
			list(, $port) = @unpack('n', substr($data['peers'], 4, 6));
 
			$new_peers[] = array
			(
				'ip'   => long2ip($ip), 
				'port' => $port
			);
 
			$data['peers'] = substr($data['peers'], 6);
		}
 
		$data['peers'] = $new_peers;
		unset($new_peers);
	}
 
	return $data;
}

:) Как ее использовать я думаю объяснять не нужно.

19.01.2010

Привет, мир!

Рубрика: Без рубрики — admin @ 10:31 пп

Добро пожаловать в WordPress. Это ваша первая запись. Отредактируйте или удалите её, затем пишите!

Сайт работает на WordPress