Главная » Язык программирования C#

Парсер, который проверяет изъято ли видео Вконтакте

парсер наличия видео в вконтакте

Проверяем, изъято ли видео из Вконтакте с помощью парсера

Для начала думаю стоит немного уточнить смысл программы, код которой я приведу на данной странице. Перед владельцами онлайн-кинотеатров стоит резкий вопрос по поводу того, что делать с изъятыми видео. Хорошо, когда правообладатели обращаются к тебе напрямую с просьбой убрать материал, тогда ты точно знаешь, что на данной странице фильма нет и нужно что-то делать, чтобы хоть как-то удовлетворить желание пользователей. Хотя бы установить трейлер фильма.

А что делать, если видеозаписи располагаются на общедоступном видеохостинге, например, в видеозаписях в социальной сети Вконтакте. Тогда Вы не будете получать уведомлений об изъятых видео. Конечно, некоторые уведомления дойдут до Вас, но в основном это проходит без Вашего ведома, ведь Вконтакте сама проверяет видеофайлы по цифровому отпечатку, и в случае пиратского контента — удаляет без контрольного в голову. Таким образом очень скоро на многих страницах сайта Вы можете увидеть надпись «Это видео изъято из публичного доступа», которое никак не поднимает авторитет Вашего сайта. Скорее только понижает. Чтобы избежать этого Вы можете ежедневно просматривать каждую страницу своего сайта, либо доверить этот процесс довольно простой программе. Я не буду предлагать Вам программу на скачивание. Я предложу Вам только основные куски кода с объяснениями, которые помогут Вам создать такую программу самому. А не умеете программировать… печаль, тоска.

Смысл программы

Смысл программы довольно прост. Я не стал себя сильно утруждать в поиске способов как можно выяснить изъято ли видео или нет. Я спросил себя, как это узнает обычный пользователь. Очевидно, что по надписи «Это видео изъято из публичного доступа». Отлично, значит нам нужно только уточнить наличие такой надписи на испытуемой странице! Проблема в том, что компьютер не может увидеть это так, как видим мы. За то он может прочитать код данной страницы. А если он найдет в коде страницы искомую фразу, значит видео изъято! Но тут еще одна проблема. Видео из Вконтакте загружается в фрейме и в коде страницы мы увидим лишь ссылку на этот видеофайл. Ссылка на видео из Вконтакте выглядит приблизительно так:

http://vk.com/video_ext.php?oid=101301006&id=165100521&hash=d4ae18ebb0bb0d89&hd=1

А вот если мы перейдем по данной ссылке, то мы получим наш видеофайл на весь экран. Там мы можем увидеть искомую фразу, а компьютер может найти его в коде. Исходя из всего вышесказанного приведу план работы программы:

  1. Получаем код страницы сайта, в котором установлено видео из Вконтакте.
  2. В коде страницы находим и выцарапываем ссылку на видеоматериал.
  3. Получаем код страницы этого видеоматериала.
  4. В коде страницы ищем наличие слов «Это видео изъято из публичного доступа». Если находим — сообщаем об этом, не находим — переходим к следующей странице.

Надеюсь что Вы все вникли в смысл программы, поэтому начнем.

Код программы для проверки видео в Вконтакте на C#

Пишу программу я на C#. Кто использует другой язык, можете забрать отсюда только план программы и писать самому.

Ссылки на страницы сайта

Первое чем мы должны озаботиться, так это ссылками на страницы сайта. Хорошо, если у Вас на сайте не настроено ЧПУ и Ваши страницы отличаются только порядковым номером, например:

  • www.site.ru/123
  • www.site.ru/124
  • www.site.ru/125

В таком случае Вы можете поставить обычный счетчик и по очереди открывать каждую страницу. Например, если мы хотим проверить фильмы с 10 по 167, то используем код:

public string site="http://site.ru/";
for (int i=10; i<=167;i++)
{
string bufer=site+Convert.ToString(i);
// код получения кода страницы, ссылка на страницу храниться в
// переменной bufer
}

Как видите, всё очень и очень просто. Другое дело со страницами, где настроено ЧПУ. В таком случае Вам необходимо будет составить список всех страниц сайта. Программа, которая сделает это за Вас, будет представлена в следующей записи. Поэтому, допустим, что у Вас есть файл в формате .txt, который содержит в себе ссылки на все страницы сайта. Допустим, что файл носит имя url.txt и лежит в той же папке, что и сама программа. В таком случае:

using System.IO;
public StreamReader sr = new StreamReader("url.txt");
string bufer="";
if (!(sr.EndOfStream))
{
bufer=sr.ReadLine();
//получение кода страницы по ссылке
}

Как видите, мой код не совсем корректен. Я тут привожу только важные моменты, на которые нужно акцентировать внимание. Поэтому не обижайтесь что я после строки подключения директивы сразу описываю переменную и начинаю цикл.

На этом первый этап заканчивается. У нас уже есть цикл, который будет выдавать нам все ссылки на нужные нам страницы.

Получаем код страницы

Чтож, продолжим писать наш парсер видео Вконтакте. Будем считать, что в переменной bufer у нас уже хранится полный адрес проверяемой нами страницы. Тогда нам нужно получить код этой страницы и записать в какую-нибудь переменную:

string page=""; //будет хранить код страницы
WebClient client = new WebClient();
client.Encoding = System.Text.Encoding.Default;
client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
page = client.DownloadString(bufer); //получаем код страницы

Таким образом мы получаем и записываем в переменную page код страницы. Тут дополнительно рекомендую ввести некоторую проверку, например, оператор try, который будет проверять, получили ли мы код данной страницы или нет.

В коде страницы ищем ссылку на видеофайл

Поиск строки в тексте достаточно простое занятие, главное необходимо указать ориентир. Естественно, мы не можем указать точную ссылку, но мы можем искать общую для всех ссылок часть. В случае с видео из Вконтакте, общая часть может выглядеть так:

http://vk.com/video_ext

Тут я Вам посоветую еще раз пересмотреть код своей страницы. Убедитесь в том, что такой кусок кода на странице только один. Можете для этого воспользоваться сочетанием клавиш Ctrl+F(поиск). Убедившись в этом, либо подправив искомые слова, переходите к следующему коду:

string video="";
string vk = "http://vk.com/video";
b = page.IndexOf(vk); //получаем индекс начала ссылки
if (b != -1) //возможно что такой ссылки нет
{
for (int a = b; a < b + 101; a++) //в ссылке 101 символ, пересчитайте, не надейтесь на меня!
{
video = video + page[a]; //получаем ссылку
}
}

Вот таким образом мы получаем ссылку на видеофайл из Вконтакте. Данная ссылка будет хранится в переменной video.

Получаем код видеофайла из Вконтакте

Я уже научил Вас как можно получить код страницы и записать его в переменную. Воспользуйтесь этим примером чтобы получить код страницы с видеоматериалом.

Проверяем изъято ли видео

Мы на предыдущем шаге получили код страницы с видеофайлом. Допустим, что код данной страницы мы записали в переменную page1, тогда:

if (page1.Contains("Это видео изъято из публичного доступа"))
{
//делаем всё то, что заблагорассудится
}

Что имеем?

Перед Вами основа программы, с помощью которой Вы можете создать программу для поиска изъятых видео, назовем его парсер видео Вконтакте. Сейчас я попробую привести дополнительные моменты, на которых я не зацикливал своё внимание:

  • Нужно будет подключить все необходимые директивы, например, System. Net.
  • Программа без интерфейса смотрится убого, поэтому создайте хоть какой-нибудь дизайн программы.
  • Вам необходимо будет настроить выполнение команд на нажатие определенных кнопок.
  • Так же рекомендую добавить такое поле как richTextBox.
  • В richTextBox рекомендую выводить ссылку на страницу с изъятым фильмом и название материала.
  • В конце программы можно вывести содержимое richTextBox в текстовый файл.
  • Категорически рекомендую использовать таймер! Очень частые запросы на Ваш сайт могут показаться серверу DDoS-атакой, что приведет к бану по IP-адресу, а оно нам не нужно. На своем парсере видео я поставил таймер в 10 секунд, по истечению которого проверяется следующая страница.
  • Вспомню какой-либо момент, допишу.

Удачи Вам с продвижением Вашего киносайта и использование парсера видео Вконтакте. Если есть вопросы, задавайте!

Добавить комментарий

Ваш комментарий появится после модерации.