PDA

Просмотр полной версии : [PHP] Class Vkontakte


Deathdreams
22.02.2010, 16:51
Решил запостить свой класс сюда, т.к. он будет постоянно обновляться. Выкладываю часть функций.

Что умеет:
- Работа через прокси
- Добавить друга ( или одобрить заявку на добавление ) (-)
- Удалить пользователя из друзей (-)
- Установить статус (-)
- Писать на стене (+)
- Проверять пользователя на онлайн (даже если страница закрыта) (-)
- Редактирование заметки по её ID (-)
- Редактирование заметки по её названию (-)
- Писать личные сообщения пользователям (-)
- Загрузка аватара (-)
- Смена NickName (-)
- Получение статуса пользователя (-)
- Получение списка ID, у которых ты в закладках (-)
(-) - Не выводит анкету в онлайн
(+) - Выводит в онлайн

Писал с нуля, все функции свои.

Функции возращают TRUE или FALSE или содержимое.

Использование: Примеры использования приведены в классе

Сам класс:
dump.ru (http://dump.ru/file/4353549)
slil.ru (http://slil.ru/28693025)
ifolder.ru (http://ifolder.ru/16544879)

Deathdreams
22.02.2010, 18:46
[22.02] - Добавил загрузку аватара и смену никнейма.

zifanchuck
22.02.2010, 20:38
*******/
/*
/* Функция note_edit_by_name - Редактирование заметок, зная ID заметки.
/*
/* $name - Заголовок заметки
/* $text - Текст заметки
/* $title_new - Новый заголовок заметки. Если оставить старый, оставить значение FALSE
/*
/*******/
тут наверное нуджно написать зная заголовок заметки.

п.с спасибо за класс=)

Deathdreams
22.02.2010, 22:20
тут наверное нуджно написать зная заголовок заметки.

п.с спасибо за класс=)
Нз :)

P.S. Ник так и не удалось сменить средствами PHP.

zifanchuck
22.02.2010, 22:26
P.S. Ник так и не удалось сменить средствами PHP.
а в чем трабла? я щас попробую набросать скрипт для смены. если получиться то тебе скину, а ты там попробуеш его интегрировать в класс

Deathdreams
22.02.2010, 22:28
Всё, получилось.
Сейчас добавлю в класс.

zifanchuck
22.02.2010, 22:36
<?php

function curl($url,$post)
{
$cfile = 'cookies.txt';
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cfile);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cfile);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_POST, 1);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}


$email = 'ssaf';
$pass = 'asddsa';
$nik = 'ziaga';


$result = curl("http://vkontakte.ru/login.php","email=$email&pass=$pass");
$result = curl('http://vkontakte.ru/settings.php','');
preg_match_all("#hash:'(.*)'#iU",$result,$regs);
$hash = $regs[1][0];

$result = curl('http://vkontakte.ru/settings.php','hash='.$hash.'&act=change_nickname&subm=1&nickname='.$nik);
echo $result;

?>



upd. неуспел=((

Deathdreams
23.02.2010, 14:31
[22.03] - Добавил:
- получение последнего статуса пользователя (не выводит в онлайн)
- получение списка пользователей, у которых ты в закладках ( пример возращаемого массива указан в классе )

Gifts
23.02.2010, 15:26
Deathdreams По большей части - обертка для юзер апи, но вы, видимо, собираетесь поддерживать этот клас, поэтому пусть живет.

Что хотелось бы видеть:
1) Приведите код к общечеловеческому стандарту для форматирования кода, отступы и дополнительные строки в самых неожиданных местах смотрятся "не тру"
2) Проверки возвращаемого кода делать в отдельном методе
3) Следует из 2 - сразу можем получить обработчик ошибок
4) Работа с анти каптчей
5) На кой черт - iconv("CP1251", "UTF-8", $text)? Тем более без проверок - у многих будет получаться двойное кодирование текста в УТФ. Пора уже сохранять файлы сразу в UTF
6) Выделите вычисления хеша для стены в отдельный метод - потом проще будет
7) Работу с проксями хотелось бы видеть
8) Работу не только с курлом но и с сокетами и выбор - работа с тем, что есть в наличии, или принудительный выбор пользователем
9) Ну и заливайте все таки класс на файлообменники, не все догадаются копировать код через цитирование, а форум свои пробелы в код вставляет

Deathdreams
23.02.2010, 15:46
Что хотелось бы видеть:
1) Приведите код к общечеловеческому стандарту для форматирования кода, отступы и дополнительные строки в самых неожиданных местах смотрятся "не тру"
2) Проверки возвращаемого кода делать в отдельном методе
3) Следует из 2 - сразу можем получить обработчик ошибок
4) Работа с анти каптчей
5) На кой черт - iconv("CP1251", "UTF-8", $text)? Тем более без проверок - у многих будет получаться двойное кодирование текста в УТФ. Пора уже сохранять файлы сразу в UTF
6) Выделите вычисления хеша для стены в отдельный метод - потом проще будет
7) Работу с проксями хотелось бы видеть
8) Работу не только с курлом но и с сокетами и выбор - работа с тем, что есть в наличии, или принудительный выбор пользователем
9) Ну и заливайте все таки класс на файлообменники, не все догадаются копировать код через цитирование, а форум свои пробелы в код вставляет
1) код расчитан на личное пользование, могу вообще убрать форматирование.
2) возращаемые ответы не всегда одинаковы (не все запросы идут через userapi)
3) мне кажется, true-false достаточно. или нужен дебаг ?
4) большая часть функций - юзерапи, где капча отсутствует.
или вы имеете ввиду антикапча при авторизации ?
5) я задумался над этим, решил не использовать mb_detect_encoding (нужна отдельная библиотека)
если дадите регулярку для определения UTF - буду благодарен.
6) сделаю
7) сделаю
8) не сделаю, т.к. много времени уйдёт , например, на аплоад аватары.
9) сделаю

Спасибо за замечания

Gifts
23.02.2010, 16:25
1) Если на личное пользование - то не кажется ли вам, что достаточно было оставить этот класс в прикрепленной теме и не пытаться потешить свое ЧСВ отдельным топиком? Да и все равно пригодится красиво писать код, и читаемо и удобно
2) Да, я имел ввиду юзерапи
3) Нужен, или вы всегда уверены по какой причине возвращается false?
4) Капча на юзерапи заявлена и возможна - http://userapi.com/?act=doc#captcha
5) Панацеи не будет, лучше добавьте поле is_utf внутри класса, и от него пляшите
8) Эээ, с чего бы?

vipfoto
15.05.2010, 14:51
Всем здрасти! Делаю загрузку видео на PHP. Взял за основу Умный аватар на PHP для ВКонтакте v1.1 (https://forum.antichat.ru/threadnav199966-1-10.html) . Но выдает сообщение: "Security Breach2". Подскажите, пожалуйста, в чем я ошибаюсь))

include 'config.php';

$email = iconv('utf-8','cp1251',$email);
$pass = iconv('utf-8','cp1251',$pass);
$sid = vk_auth($email, $pass);
$cookies = 'remixsid='.$sid;

$vk_video = vk_video($cookies,'path_to_file/1.flv');

function curl($url, $cookie = false, $post = false, $header = false, $follow_location = false) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_HEADER, $header);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, $follow_location);
if ($cookie) {
curl_setopt ($ch, CURLOPT_COOKIE, $cookie);
}
if ($post) {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
$response = curl_exec ($ch);
curl_close($ch);
return $response;
}

function vk_auth($email, $pass) {
$response = curl('http://vkontakte.ru/login.php',false,array('email'=>$email,'pass'=>$pass),true);
preg_match('|Set-Cookie: remixsid=(.*); exp|', $response, $cm);
return $cm[1];
}

function vk_video ($cookies, $filename) {
$upl_video = curl('http://vkontakte.ru/video.php?act=upload',$cookies);
$reg ="#http://cs[0-9]{1,6}\.vkontakte\.ru/upload_video\.php\?act=add_video#";
preg_match($reg, $upl_video,$matches);
$link = $matches[0];
if (strlen($link)>0) {
$output = curl($link,$cookies,array('video_file'=>'@'.$filename),true);
$reg = "#upload_video.*?callback#";
preg_match($reg, $output,$matches);
$output = curl('http://vkontakte.ru/'.$matches[0],$cookies);
} else {
echo "Error!\n";
}
}

phpdreamer
15.05.2010, 15:15
ТС, добавил тему в закладки в надежде на продолжение...
ставлю +
PS: класс не скачивал, так как пока ничего интересного не реализовано