ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

[VKCS class] - работа с контентом ВКонтакте
  #1  
Старый 25.12.2009, 22:37
Аватар для m0Hze
m0Hze
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме:
6462214

Репутация: 3171


По умолчанию [VKCS class] - работа с контентом ВКонтакте

И так, решил я все же отдать вам на растерзание этот не домученный класс VKCS - Vkontakte Content Searcher.Я сам удивляюсь как он может работать,но все же это так.
Представляю вашему вниманию,класс для поиска музыки и видео по вконтакте.Это аналог Vpleer.ru, давно работал над этой идеей,и даже запускал свой проэкт,но нехватило сил его поддерживать.Так что ловите.
(Сразу предупрежу,когда я писал этот класс,мои познания в ООП были настолько скудны,что мне даже стыдно.Когда я его на харде открыл,переписал некоторые методы,для работы с актуальной авторизацией вк.Поэтому основная часть класса - это сплошь и рядом говнокод.)
Не большое описание,что умеет.

1) Работает как с базой MySQL так и с файлами.Все это указываеться при инициализации класса.
2) Можно искать как музыку,так и видео(функция не совсем доделана,ибо забросил).
3) Есть минималистичный дебаг,который тоже можно отключить.Также настраиваться вид вывода ошибок,цвет и размер шрифта.Но это я делал просто от нечего делать похоже
4) Фильтрация результатов.Актуально только для поиска музыки, и используеться фильтрация только по названию.Можно добавить и по времени,но как-то лень.

Базовая инициализация:
PHP код:
include ('./vkcs.class.php');
$vk = new VKCS('file','accounts.txt',false);
$vk->SetQueryPage('System of a Down');
$music $vk->GetMusic();
$video $vk->Getvideo();
print_r($music); 
Описание методов которые могу пригодиться:

VKCS($type, $nameb, $debug) - конструктор.принимает значения: Тип БД(file of sql),Имя базы\файла,дебаг - on\off.
setColorError($type, $color) - установка цвета ошибок.
setSizeError($type, $size) - установка размера ошибок.
SetQueryPage($query, $page = 1) - установка запроса, то что мы будем искать.Принимает значения: Название, Страница на которой искать.
GetError() - мини дебагер,отвечает за вывод ошибки на экран, если это было включено при инициализации конструктора.
GetMusic() - собственно,основной метод..Осуществляет поиск музыки и ее фильтрацию(если захотите,вынесите в отдельный метод).
GetVideo() - аналог пред идущего метода,только для видео и нет фильтрации.
GetCookie() - авторизация,получение куков и запись их в нужную переменную.
Класс можно взять здесь: Вот он
Тут:
PHP код:
<?php
/**
 * @author m0hze
 * @copyright 2009
 * @site http://m0hze.ru
 * @hello : https://forum.antichat.ru
 */
error_reporting(0);
class 
VKCS
{
    var 
$_COOKIE$_PASSWORD$_USER$_SEARCH$_TABLE$_FILE$_ERROR$_QUERY$_DEBUG,
        
$_TYPE$_NAMEB;
    var 
$color_head 'red'$color_text 'black'$size_head 3$size_text 3;
    public function 
VKCS($type$nameb$debug)
    {
        
$this->SelectBase($type,$nameb);
        
$this->setVar('_DEBUG',$debug);
    }
    public function 
setColorError($type$color)
    {
        if (
strtolower($type) == 'head') {
            
$this->color_head $color;
        } elseif (
strtolower($type) == 'text') {
            
$this->color_text $color;
        } else {
            
$this->setVar('_ERROR',
                
"Options not correctly in <i>method</i> <b>setColorError()</b>! Please, change options and restart programm!");
            return (
$this->GetError());
            break;
        }
    }
    public function 
setSizeError($type$size)
    {
        if (
strtolower($type) == 'head') {
            
$this->size_head $size;
            return (
true);
        } elseif (
strtolower($type) == 'text') {
            
$this->size_text $size;
            return (
true);
        }
        
$this->setVar('_ERROR',
            
"Options not correctly in <i>method</i> <b>setSizeError()</b> ! Please, change options and restart programm!");
        return (
$this->GetError());
    }


    private function 
setVar($var$set)
    {
        if (isset(
$var)) {
            
$this->$var .= $set;
        } else {
            
$this->$var $set;
        }

        return (
$this->$var == $set true false);
    }
    private function 
SelectBase($type$file 'accounts.txt')
    {
        
$this->setVar('_TYPE'$type);
        if (
strtolower($this->_TYPE) == 'file') {
            
$this->setVar('_FILE'$file);
        } elseif (
strtolower($this->_TYPE) == 'sql') {
            
$this->setVar('_TABLE'$file);
        }
    }
    public function 
SetQueryPage($query$page 1)
    {
        if (
strlen($query) < 4) {
            
$this->setVar('_ERROR',
                
"<b>QUERY</b> > <b>4</b> byte! Please, send me true <b>QUERY</b>\r\n");
            return (
$this->GetError());
            break;
        } elseif (
$page 0) {
            
$this->setVar('_ERROR',
                
"<b>PAGE</b> > <b>0</b> byte! Please, send me true <b>PAGE</b>\r\n");
            return (
$this->GetError());
            break;
        }
        
$this->setVar('_QUERY'urlencode(str_replace(' ''_'trim($query))));
        
$this->setVar('_PAGE'$page);
        return (
true);
    }
    private function 
GetError()
    {
        if (
$this->_DEBUG) {
            return (die(
'<b><font size="' $this->size_head '" color="' $this->
                
color_head '">ERROR!</b></font><br><font size="' $this->size_text .
                
'" color="' $this->color_text '">' nl2br($this->_ERROR) . '</font>'));
        } else {
            return;
        }


    }
    private function 
GetUser_Base()
    {
        
$query mysql_query("SELECT * FROM " $this->_TABLE .
            
" ORDER BY rand() LIMIT 1");
        if (!
$query) {
            
$this->setVar('_ERROR'mysql_error() . "\r\n");
            return (
$this->GetError());
            break;
        }
        
$array mysql_fetch_assoc($query);
        
$this->setVar('_USER'$array['user']);
        
$this->setVar('_PASSWORD'$array['password']);
        return (
true);
    }
    private function 
GetUser_File()
    {
        
$open file($this->_FILE);
        if (
$open) {
            
$count count($open);
            
$data explode(':'$open[rand(0$count 1)]);
            
$this->setVar('_USER'trim($data[0]));
            
$this->setVar('_PASSWORD'trim($data[1]));
            return (
true);
            break;
        } else {
            
$this->setVar('_ERROR'"Can'not open <b>'" $this->_FILE .
                
"'</b> base, or <b>FILE</b> size = <b>0</b> byte ! Please create <b>FILE</b> in directory!\r\n");
        }
        return (
$this->GetError());
        break;
    }
    public function 
GetMusic()
    {
        if (!isset(
$this->_QUERY)) {
            
$this->setVar('_ERROR',
                
"<b>QUERY</b> size = <b>0</b>, or > <b>3</b> byte! Please, send me true <b>QUERY</b>\r\n");
            return (
$this->GetError());
            break;
        }
        
$this->GetCookie();
        
$exec curl_init('http://vkontakte.ru/gsearch.php?section=audio&q=' $this->
            
_QUERY '&offset=' $this->_PAGE '00');
        if (!
$exec) {
            
$this->setVar('_ERROR'"Library <b>cURL</b> not work!\r\n Please, change options <b>ERROR</b> on you <b>php.ini</b>! \r\n");
            return (
$this->GetError());
            break;
        }
        
curl_setopt($execCURLOPT_RETURNTRANSFER1);
        
curl_setopt($execCURLOPT_REFERER'http://vkontakte.ru/index.php');
        
curl_setopt($execCURLOPT_HEADER1);
        
curl_setopt($execCURLOPT_COOKIE$this->_COOKIE);
        
$page curl_exec($exec);
        
preg_match('#Найдено (.*) аудиозап#isU'$page$coll_page);
        if (!
$coll_page) {
            
$this->setVar('_ERROR'"For you <b>QUERY</b> music not found!\r\n");
            return (
$this->GetError());
            break;
        }
        
$coll str_replace(' '''trim($coll_page[1]));
        
$total $coll 1;
        if (
$total 11) {
            
$total 11;
        } elseif (
$total 0) {
            
$total 1;
        }
        
preg_match_all('#<b id=\"performer.*\">(.*)<\/b> - <span id=\"title.*\">(.*)<\/span>#isU',
            
$page$name);
        
preg_match_all('#return operate(.*,(.*),(.*),\'(.*)\',.*)#isU'$page$url);
        
preg_match_all('#<div class=\"duration\">(.*)<\/div>#isU'$page$time);
        
$nouniqname array_map("strtolower"array_map("trim"$name[2]));
        
$uniquename array_unique($nouniqname);
        
$count count($url[2]);
        for (
$i 0$i count($url[2]); $i++) {
            if (
$uniquename[$i] == $nouniqname[$i] or $uniquetime[$i] == $nouniqtime[$i]) {
                
$data['group'][$i] = substr(strip_tags($name[1][$i]), 015);
                
$data['name'][$i] = substr(strip_tags($name[2][$i]), 025);
                
$data['server'][$i] = $url[2][$i];
                
$data['id'][$i] = $url[3][$i];
                
$data['hash'][$i] = $url[4][$i];
            }

        }
        
$data['page'] = $total;
        return (
$data);
    }
    public function 
GetVideo()
    {
        if (!isset(
$this->_QUERY)) {
            
$this->setVar('_ERROR',
                
"<b>QUERY</b> size = <b>0</b>, or > <b>3</b> byte! Please, send me true <b>QUERY</b>\r\n");
            return (
$this->GetError());
            break;
        }
        
$this->GetCookie();
        
$exec curl_init('http://vkontakte.ru/gsearch.php?section=video&q=' $this->
            
_QUERY '&offset=' $this->_PAGE '00');
        if (!
$exec) {
            
$this->setVar('_ERROR'"Library <b>cURL</b> not work!\r\n Please, change options <b>ERROR</b> on you <b>php.ini</b>! \r\n");
            return (
$this->GetError());
            break;
        }
        
curl_setopt($execCURLOPT_RETURNTRANSFER1);
        
curl_setopt($execCURLOPT_REFERER'http://vkontakte.ru/index.php');
        
curl_setopt($execCURLOPT_HEADER1);
        
curl_setopt($execCURLOPT_COOKIE$this->_COOKIE);
        
$page curl_exec($exec);
        
preg_match('#Найдено (.*) видео#isU'$page$coll_page);
        if (!
$coll_page) {
            
$this->setVar('_ERROR'"For you <b>QUERY : \"" $this->_QUERY "\"</b> video not found!\r\n");
            return (
$this->GetError());
            break;
        }
        
preg_match_all('#<img src=\'http://(.*).vk.jpg\'#isU'$page$image);
        
preg_match_all('#<a href=\"video.*\">(.*)</a>#isU'$page$name);
        
$image $image[1];
        
print_r($name);

    }
    private function 
GetCookie()
    {

        if (!isset(
$this->_TYPE)) {
            
$this->setVar('_ERROR',
                
"Base TYPE not selecte! Please select: <b>SQL</b> or <b>FILE</b>!\r\n Code include: \$this->setVar('_TYPE','SQL');\r\n");
            return (
$this->GetError());
            break;
        }
        if (
strtolower($this->_TYPE) == 'sql') {
            
$this->GetUser_Base();
        } elseif (
strtolower($this->_TYPE) == 'file') {
            
$this->GetUser_File($_FILE);
        } else {
            
$this->setVar('_ERROR',
                
"Don't know selected BASE! Please, change: <b>SQL</b> or <b>FILE</b>\r\n");
            return (
$this->GetError());
            break;
        }
        
$exec curl_init('http://vkontakte.ru/login.php');
        if (!
$exec) {
            
$this->setVar('_ERROR'" Library <b>cURL</b> not work!\r\n Please, change options <b>ERROR</b> on you <b>php.ini</b>! \r\n");
            return (
$this->GetError());
            break;
        }
        
$post 'email=' $this->_USER '&pass=' $this->_PASSWORD;
        
curl_setopt($execCURLOPT_RETURNTRANSFER1);
        
curl_setopt($execCURLOPT_POSTFIELDS$post);
        
curl_setopt($execCURLOPT_REFERER'http://vkontakte.ru/index.php');
        
curl_setopt($execCURLOPT_HEADER1);
        
curl_setopt($execCURLOPT_COOKIEJAR'cookie.txt');
        
curl_setopt($execCURLOPT_COOKIEFILE'cookie.txt');
        
$page curl_exec($exec);
        
preg_match('#remixsid=(.*)\;#isU'$page$match);
        if (
$match) {
            
$cookie 'remixsid=' $match[1];
            
$this->setVar('_COOKIE'$cookie);
            return (
true);
        } else {
            
$this->setVar('_ERROR'"<b>USER</b> or <b>PASSWORD</b> not true!\r\n Please, change this <b>ERROR</b> on you <b>BASE</b>! \r\n");
            return (
$this->GetError());
            break;
        }
    }

}
?>
Я не нуждаюсь в критике,ибо не думаю что когда нибудь возьмусь его доводить до ума.Выкладываю только по тому,что может кому-то пригодиться,и он решит составить конкуренцию vpleer.ru, у меня на это сил и денег не хватило.
Я вспомнил! Я на нем учился как раз основам ООП точно

Последний раз редактировалось m0Hze; 25.12.2009 в 22:49..
 
Ответить с цитированием

  #2  
Старый 25.12.2009, 22:46
Аватар для Deathdreams
Deathdreams
Постоянный
Регистрация: 08.11.2008
Сообщений: 498
Провел на форуме:
2603363

Репутация: 278
Отправить сообщение для Deathdreams с помощью ICQ
По умолчанию

Давно хотел написать класс, да всё руки не доходили.
Сейчас будем пробовать
Молодец

--------------------------------------
Функций маловато.
ИМХО душный класс.

Последний раз редактировалось Deathdreams; 25.12.2009 в 22:54..
 
Ответить с цитированием

  #3  
Старый 25.12.2009, 22:56
Аватар для m0Hze
m0Hze
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме:
6462214

Репутация: 3171


По умолчанию

Цитата:
Сообщение от Deathdreams  
Давно хотел написать класс, да всё руки не доходили.
Сейчас будем пробовать
Молодец

--------------------------------------
Функций маловато.
ИМХО душный класс.
Ну я в первом посте все сказал) это из ряда первого секса с ооп на пхп.Кому нужно перепишут\доделают.Мне он просто не нужен, ибо как я уже сказал нет ни времени ни денег.Все,ушел отсюда,я плоxо критику ереношу
 
Ответить с цитированием

  #4  
Старый 25.12.2009, 23:52
Аватар для b3
b3
Постоянный
Регистрация: 05.12.2004
Сообщений: 647
Провел на форуме:
1698585

Репутация: 818


Отправить сообщение для b3 с помощью ICQ
По умолчанию

Добавь сразу конструкт функцию для инициализации БД и Входа в ВК, и замени var на public и будет ОК.
 
Ответить с цитированием

  #5  
Старый 26.12.2009, 00:33
Аватар для m0Hze
m0Hze
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме:
6462214

Репутация: 3171


По умолчанию

Цитата:
Сообщение от b3  
Добавь сразу конструкт функцию для инициализации БД и Входа в ВК, и замени var на public и будет ОК.
Ну я же написал =), я не собираюсь его дописывать\исправлять.это - сырье,пускай тот кому нужно исправляет,готового в жизни ничего не бывает.Да и лень мне,пускай отдельным методом будет,расход памяти не сильно увеличиться,ведь метод используеть всего 1 раз,значит и копируеться в память всего 1 копия.Будет примерно тоже самое,если я вынесу все это в (add, ну да,он же еще инитиализируеться, + к памяти,но всеравно лень)конструктор.Ну и опять же - лень =)
изос - жди конкурентов
 
Ответить с цитированием

  #6  
Старый 26.12.2009, 14:34
Аватар для Gifts
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

m0Hze Если вы не собираетесь править/поддерживать код, то нахрена создавать отдельную тему, если есть топик для мелких скриптов. Захотелось дешевого пЕара, и чтобы вам сказали, какой вы молодец? Так вот - вы не молодец и даже не рядом, код - говно, его не дорабатывать надо, а удалять. Если, конечно, целью не было показать - как НЕ надо делать
__________________
Любая действущая программа устарела.
Создайте систему, которой сможет пользоваться даже дурак ,и только дурак захочет ею пользоваться.
Как правильно задавать вопросы: _http://www.yakimchuk.ru/questions.htm
 
Ответить с цитированием

  #7  
Старый 26.12.2009, 14:48
Аватар для m0Hze
m0Hze
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме:
6462214

Репутация: 3171


По умолчанию

Цитата:
Сообщение от Gifts  
m0Hze Если вы не собираетесь править/поддерживать код, то нахрена создавать отдельную тему, если есть топик для мелких скриптов. Захотелось дешевого пЕара, и чтобы вам сказали, какой вы молодец? Так вот - вы не молодец и даже не рядом, код - говно, его не дорабатывать надо, а удалять. Если, конечно, целью не было показать - как НЕ надо делать
Невнимательно читал,об этом тоже есть в первом посте.Пускай b3 перенесет, создал отдельный тред ибо много букв.
 
Ответить с цитированием

  #8  
Старый 26.12.2009, 15:45
Аватар для LStr1ke
LStr1ke
Постоянный
Регистрация: 29.07.2009
Сообщений: 400
Провел на форуме:
1455812

Репутация: 150
По умолчанию

Цитата:
error_reporting(0);
Всегда считал такое невежеством. (Извини)
Цитата:
я не собираюсь его дописывать\исправлять.это - сырье,пускай тот кому нужно исправляет
Мда. А это смахивает на быдланство. (опять извини) Мог бы соврать и сказать, что потом, как появится время - исправишь )
Хорошо, что хоть не в избранное запостил ). А так, некоторым будет полезна реализация, с точки зрения общего развития.

Последний раз редактировалось LStr1ke; 26.12.2009 в 15:50..
 
Ответить с цитированием

  #9  
Старый 26.12.2009, 20:58
Аватар для Isis
Isis
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме:
16641028

Репутация: 2371


По умолчанию

Реклама проплачена, не беспокойтесь
 
Ответить с цитированием

  #10  
Старый 16.01.2010, 10:43
Аватар для Winst0n
Winst0n
Участник форума
Регистрация: 19.08.2008
Сообщений: 104
Провел на форуме:
573945

Репутация: 13
По умолчанию

нужная штука, только что то не правильно он хеш показывает...
у тебя:
http://cs4429.vkontakte.ru/u2512752/audio/ea140768a06e.mp3
у http://www.puzzleclub.ru/files/vkontakte_ru_audio.js:
http://cs4429.vkontakte.ru/u2512752/audio/5aef650b1770.mp3
запрос "Simple Song (Original Mix)"

в чем может быть проблема ?
в классе посмотрел, вроде регулярка ок, откуда он такой хеш О_о

Последний раз редактировалось Winst0n; 16.01.2010 в 11:05..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Sell] Голоса вконтакте (VKontakte) (и рейтинг в контакте) по самым низким ценам! dinar_007 Покупка, продажа, услуги в Соц. Сетях 226 31.05.2010 13:18
Приложение Вконтакте. Смежная работа Regin Покупка, продажа, услуги в Соц. Сетях 0 19.12.2009 18:03



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ