Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   [PHP] Class Vkontakte (https://forum.antichat.xyz/showthread.php?t=181007)

Deathdreams 22.02.2010 16:51

[PHP] Class Vkontakte
 
Решил запостить свой класс сюда, т.к. он будет постоянно обновляться. Выкладываю часть функций.

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

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

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

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

Сам класс:
dump.ru
slil.ru
ifolder.ru

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

Цитата:

Сообщение от zifanchuck
тут наверное нуджно написать зная заголовок заметки.

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

Нз :)

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 код:

<?php

function curl($url,$post)
{
$cfile 'cookies.txt';
$ch curl_init();
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_URL$url);
curl_setopt($chCURLOPT_HEADER0);
curl_setopt($chCURLOPT_POSTFIELDS$post);
curl_setopt($chCURLOPT_COOKIEJAR$cfile);
curl_setopt($chCURLOPT_COOKIEFILE$cfile);
curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue);
curl_setopt($chCURLOPT_POST1);
$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

Цитата:

Сообщение от Gifts
Что хотелось бы видеть:
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 . Но выдает сообщение: "Security Breach2". Подскажите, пожалуйста, в чем я ошибаюсь))
PHP код:

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($chCURLOPT_RETURNTRANSFERtrue);
    
curl_setopt($chCURLOPT_FAILONERRORtrue);
    
curl_setopt($chCURLOPT_HEADER$header);
    
curl_setopt($chCURLOPT_FOLLOWLOCATION$follow_location);
    if (
$cookie) {
        
curl_setopt ($chCURLOPT_COOKIE$cookie);
    }
    if (
$post) {
        
curl_setopt($chCURLOPT_POST1);
        
curl_setopt($chCURLOPT_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: класс не скачивал, так как пока ничего интересного не реализовано


Время: 19:39