aktuba

Рейтинг
68
Регистрация
29.12.2007
foxi:
каких тегов? Весь контент страниц (без html кода) загнать, размер получится совсем не большой. Поиск и прочее чтение работает быстро вроде.

P.S. уже тратий раз посмотрел видео, меня аж штырит от него :D особо вставляет авилум мечущийся по нему ...

Ну это смотря сколько контента... У меня в управлении пару сайтов, где более 2млн. записей, базы по 40гб ;)

aktuba добавил 15.07.2011 в 03:17

TiA:
Мораль: лучше уж используйте DLE чем это поделие.

DLE тоже не надо. Показать огроооооооооооооооооооооооомные минусы dle? =)

foxi:
Перетрахнуть пару тысяч файлов - пару сек, и загнать все в базу sqlite, и поиск будет быстрым и качественным :)

sqlite не лучший выбор. Когда тегов будет пара млн. - начнет очееееееееень сильно задумываться, проверено ;).

awilum:
SMF - один из лучших и популярных форумных движком а то и самый лучший!

SMF лучший? o_O Это шутка или Вы серьезно так считаете? Ок... Может тогда подскажите, как быстро избавиться от сессий в этом движке? Реально...

Или может подскажете, как сделать нормальный автолоадер, чтобы не пришлось по коду скакать и искать, где блин подключается определенный файл?

$_REQUEST - это вообще шик. Покажите реальный пример, когда НЕОБХОДИМО использовать $_REQUEST! За все время, что я программирую (а это довольно долго) - ни разу не видел в этом необходимость... Там еще кучу интересного можно вспомнить, ну да ладно...

Теперь вопрос по вашему двигу: правда, что в вашем двиге используются функции в конфигах? И вы реально не понимаете, почему вас из-за этого считают глупым? =)))

Ну а выбор XML спорный... Как будете делать, например, реалтайм поиск? Автоподстановку тегов? И т.д.

autocalc:
Пошел по русски:
Идет проверка:
$query = "SELECT bla FROM users WHERE bla='".$bla."'";
$res = mysql_query( $query );
if ( mysql_num_rows( $res ) > 0 ) {
$exp = mysql_result( $res, 0, 0 );
}
И если совпадений нет:
if($exp!=$bla) {
...

Эмм... А может не надо так? =)

А зачем replace-то? update наверное, нет?

INSERT INTO table SET field="value" ON DUPLICATE KEY UPDATE field=VALUES(field)

примерно так.

Diplodok:
wordstat яндекса не парсит ((

И не должен - там нет контента, одни ссылки

aktuba добавил 07.07.2011 в 17:50

Дикий пионер:
Расковыряйте Яндекс.бар - там есть функция видирания текст из страницы с единичной новостью. Включается по нажатию на амперсенд в адресной строке.
Есть еще алгоритм для таких вещей, правда вот название забыл :(

Скорее всего у ТС что-то более продвинутое, но общие приницы наверно и в я.баре посмотреть можно.

Так и есть. Начали с других алгоритмов, но функцию яндекса тоже изучали. Жаль, полноценно ее использовать в php не получилось - пришлось дописывать и переписывать.

aktuba добавил 08.07.2011 в 01:58

И это все мнения? Жаль... Думал, Вас заинтересует, как можно подобный парсер использовать =(

aktuba добавил 08.07.2011 в 14:40

Т.е., ни у кого, никаких предложений/вопросов нет? Не нужен никому подобный сервис?

digwnews:
Интересный сервис.
А каким принципом идёт отделение контента от мусора?

Коротко это не описать... Достаточно много параметров и факторов учитывается для выделения контента из страницы. Да и не очень пока хочется рассказывать детали, если честно ;)

http://api.mail.ru/docs/guides/oauth/sites/ - вот это изучите, станет понятнее думаю;)

otan:
Работает, aktuba.
Можеш скрипт скинуть! Если все улажу - буду тебе премного благодарен.

<?php

class LoginID_Provider_Mailru extends LoginID_Provider {

const AUTHORIZE_URL = 'https://connect.mail.ru/oauth/authorize';
const TOKEN_URL = 'https://connect.mail.ru/oauth/token';

const SALT = 'salt';

protected $_config = NULL;

protected function execute_method($params) {
if (!$params)
$params = array();
$params['app_id'] = $this -> _config['app_id'];
$params['secure'] = 1;

$sig = '';
$url = '';
$i = 0;
ksort($params);

foreach($params as $key => $var) {
$i++;
$sig .= $key . '=' . $var;
$url .= $key . '=' . $var;
if ($i != count($params))
$url .= '&';
}

$sig = md5($sig . $this -> _config['secret_key']);
$url .= '&sig=' . $sig;
$url = 'http://www.appsmail.ru/platform/api?' . $url;

$data = NULL;
$ch = curl_init();
try {
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$data = curl_exec($ch);
curl_close($ch);
} catch (Exception $e) {
curl_close($ch);
throw new LoginID_Exception($e -> getMessage(), NULL, 403);
}
return $data;
}

protected function get_user_info($uid = NULL, $token) {
$params = array(
'method' => 'users.getInfo',
'session_key' => $token
);

if (NULL !== $uid)
$params['uid'] = $uid;

$result = json_decode($this -> execute_method($params));
return $result[0];
}

public function __construct($provider_name) {
parent::__construct($provider_name);
$this -> _config = Kohana::config('loginid/providers/mailru');
}

public function login() {
$mailru_key = md5(mt_rand(1, 1000) . $_SERVER['REMOTE_ADDR'] . mt_rand(1, 1000));
Session::instance() -> set('mailru_key', md5($mailru_key . self::SALT));

$data = array(
'client_id' => $this -> _config['app_id'],
'response_type' => 'code',
'redirect_uri' => $this -> return_url . '?key=' . $mailru_key,
);

header('Location: ' . self::AUTHORIZE_URL . '?' . http_build_query($data, NULL, '&'));
die();
}

public function complete() {
$key = Session::instance() -> get_once('mailru_key', NULL);
if (empty($key))
throw new LoginID_Exception('Not found provider key', NULL, 403);

$rkey = !empty($_GET['key']) ? $_GET['key'] : NULL;
if (empty($rkey))
throw new LoginID_Exception('Not found get key', NULL, 403);

$mailru_key = md5($rkey . self::SALT);
$mailru_code = !empty($_GET['code']) ? $_GET['code'] : NULL;
if (empty($mailru_code) || $mailru_key != $key)
throw new LoginID_Exception('Login filed!', NULL, 403);

$request = array(
'client_id' => $this -> _config['app_id'],
'client_secret' => $this -> _config['secret_key'],
'grant_type' => 'authorization_code',
'code' => $mailru_code,
'redirect_uri' => $this -> return_url . '?key=' . $rkey,
);

$ch = curl_init();
try {
curl_setopt($ch, CURLOPT_URL, self::TOKEN_URL);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
$data = curl_exec($ch);
curl_close($ch);
} catch (Exception $e) {
curl_close($ch);
throw new LoginID_Exception($e -> getMessage(), NULL, 403);
}

$data = json_decode($data);
if (empty($data -> access_token))
throw new LoginID_Exception('Error Mail.ru responce!', NULL, 403);

$user = $this -> get_user_info(NULL, $data -> access_token);
if (empty($user -> uid))
throw new LoginID_Exception('Invalid user data returned from Mail.ru', NULL, 403);

return array(
'identity' => !empty($user -> link) ? $user -> link : NULL,
'email' => !empty($user -> email) ? $user -> email : NULL,
'name' => !empty($user -> nick) ? $user -> nick : NULL,
'display_name' => !empty($user -> nick) ? $user -> nick : NULL,
);
}

}

Вот часть кода для mail.ru. Остальное - обычная работа с oauth. Будут вопросы - задавай.

P.S.: жестокий тут парсер =) ***91; - открывающая квадратная скобка, ***93; - закрывающая.

Всего: 956