На чем написан кинопоиск
Перейти к содержимому

На чем написан кинопоиск

  • автор:

Golang, PHP, Кинопоиск и Telegraph — Что их объединяет?

Периодически, чтобы не покрыться пылью, я стараюсь создавать интересные штуки, которые смогли бы облегчить чью-то жизнь. Я стремлюсь к тому, чтобы они были, полезнее, чем социальная сеть для кошек. Один из недавних примеров — Телеграм-бот, который позволяет в указанных координатах найти известные Wi-Fi-точки и посмотреть пароли к ним.

Этот раз не стал исключением и я задумал создать бота, который позволял бы с наибольшим комфортом и минимумом усилий смотреть любимые фильмы и сериалы, да еще и предоставлял контент в нескольких вариантах озвучки. Сказано — сделано. И теперь, когда железный друг человека радостно раздает пользователям их любимые шоу, я бы хотел поговорить о том, что сопутствовало созданию бота, какие проблемы вставали на моем пути и как они были решены. В первой главе я расскажу о Go глазами PHP-разработчика, во второй главе о поиске дзена для парсинга Кинопоиска, а в третьей — о недокументированной фиче Telegraph.

image

1. $alexander->useLanguage(GOLANG);

Меня зовут Александр, мне 21 год. Я занимаюсь веб-разработкой и чаще всего пишу на PHP.

Хлоп-хлоп

image

Не могу сказать, что PHP — язык мечты. У него, как и у любого другого языка есть сильные и слабые стороны. Однако, я стал замечать, что устаю от PHP — постепенно надоедает разработка на этом языке, его детские болячки вроде похожих функций, которые принимают похожие аргументы, но в разном порядке, не всегда предсказуемого поведения и, конечно, слабой типизации. Таким образом, для очередного продукта я решил использовать Golang. На момент, когда я начинал, я знал о нем вот что:

  • Строгая типизация
  • Не очень много ключевых слов
  • Горутины — это удобная параллельность из коробки
  • Говорят, что язык прост и предсказуем

C организацией кода в Golang все просто: «Вот тебе директория, заодно это и неймспейс, кстати. Держи все здесь». И… Это работает. Это настолько просто в разработке и поддержке, что слезы счастья наворачиваются сами собой. Если честно, я не знаю, насколько большой проект можно создать с таким подходом. Я заглядывал в репозитории нескольких крупных библиотек — выглядит вменяемо, но про поддержку рассказать не могу. Субъективно, одинаковую по размеру кодовую базу на PHP поддерживать сложнее, чем на Go.

Справедливости ради, удобная и очевидная работа с массивами (слайсами) — это не про Go:

//. s.KeyBoard = [][]string<> s.KeyBoard = append(s.KeyBoard, []string<>) s.KeyBoard[0] = append(s.KeyBoard[0], s.text.GetAction(locale, "view-prev")) //. 

С точки зрения Golang все выглядит логично, но с человеческой точки зрения — слегка странно. Подробнее эта тема раскрыта здесь.

Так же, для параллельной работы в Golang используются горутины (потоки), в то время, как в PHP принято использовать форки (процессы). В моем проекте не так много мест, где я смог применить горутины. Однако, там, где они используются, это выглядит настолько логично и просто, что возвращаться к форкам совсем не хочется. Так как форки — это независимые друг от друга процессы, для их общения между собой обычно используют третью сторону: Redis или Memcache. Аналогичная проблема в Golang решается с помощью каналов — части языка, которая доступна из коробки. Только вдумайтесь! Параллельная работа из коробки, да еще и с поддержкой синхронизации. Раньше мне такое даже не снилось. Я не считаю, что требую от PHP слишком многого, ведь задачи параллельной работы в современной backend-разработке — обычное дело. Так же, я не хочу сказать, что Golang является панацеей от всех проблем человечества, но после опыта разработки на PHP, решение аналогичных задач на Go кроме результата доставляет еще и удовольствие.

2. Alexander.NeedInfo()

В какой-то момент, API, которым я пользовался для получения информации о фильмах с Кинопоиска закончился.

И, судя по всему, навсегда.

image

Было принято решение писать собственный парсер Кинопоиска (ребята из команды Кинопоиска, не кидайтесь тапками, лучше сделайте публичный API).

v1 — Одинокий герой

Первая реализация была простой и в лоб — в проекте поселился одинокий PHP-скрипт, который при обращении к нему доставал из очереди адрес случайного прокси-сервера и через него отправлялся за фильмом на Кинопоиск. Сам разбор страницы происходил тоже на PHP. Из-за того, что одинокий герой не использовали куки, Кинопоиск банил (начинал показывать капчу) каждый адрес после единственного запроса, а ведь еще не все прокси-сервера были быстрыми.

Казалось бы, реализовать поддержку куки, да и дело с концом. Однако, я заметил, что даже с поддержкой куки Кинопоиск показывает капчу моему парсеру чаще, чем мне в браузере. Я решил не исследовать защиту Кинопоиска от парсинга более детально, так как понимал, что это начинает пахнуть выполнением js-кода на клиенте.

v2 — Полноценный клиент

Следующая версия парсера представляла собой веб-сервер на Go, который по GET-запросу запускает PhantomJS с нужными параметрами и переданным ID фильма. Это работало. Мне больше не были нужны прокси-сервера, я ходил на Кинопоиск прямо со своего IP. У меня была поддержка сессий, полноценный браузер и, в целом, все было удобно. Но это было очень медленно. PhantomJS честно ждал, пока загрузится вся статика и выполнится весь необходимый JS-код. Кроме того, что это было медленно, это было очень дорого по ресурсам. На разбор одной страницы уходило 100-150mb RAM. Поводом для выстрела в голову этой версии послужила прожорливость PhantomJS и его нестабильная работа — например, его процессы не всегда завершались, оставаясь висеть в запущенных и не освобождая после себя память. Я пробовал разные версии PhantomJS, я пробовал завершать процессы за ним с помощью веб-сервера, который инициирует его запуск, но итог всегда был одним: Да, работает, но прожорливо и нестабильно, хотя, конечно, удобно.

v99

В процессе поиска Святого Грааля для парсинга Кинопоиска я сбился со счету, сколько версий разных парсеров и их модификаций я успел создать. В итоге, очередную версию я назвал девяносто девятой. Девяносто девятая версия была написана на PHP. Я использовал Guzzle (HTTP-клиент для PHP), поддерживал сессии и старался быть максимально похожим в своем поведении на браузер пользователя. От поддержки JS я отказался. Капчи, конечно, показываются, но намного реже, чем в первой версии парсера и, в принципе, этот вариант можно назвать комфортным. На этой версии я и остановился.

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

3. Video.Publish()

После войны с Кинопоиском я оказался в ситуации, когда я был готов отдать пользователю ссылку на видео, а воспроизвести его было негде: Telegram Bot API не предоставляет удобного функционала для показа видео по ссылке, а регистрировать домен, хостить что-то кроме бота с парсером и заниматься разработкой фронта я совершенно не хотел.

Что же делать?

Будем публиковать видео где-то. Немного подумав я решил, что Телеграф может вполне сойти за «где-то». Сайт, который де-факто используется для публикации статей из Телеграм? То, что надо! Одна беда — нельзя публиковать видео по ссылке (кроме YouTube или Vimeo).

А если поискать?

Глядя на то, как легко и динамично создаются блоки на странице, а по нажатию лишь одной кнопки публикуется статья, невольно задумываешься: А как это работает? Особенно, если ищешь место для публикации контента. Я решил это узнать.

И что же я увидел?

[< "tag": "p", "children": ["Story"] >, < "tag": "p", "children": [< "tag": "br" >] >, < "tag": "figure", "children": [< "tag": "div", "attrs": < "class": "figure_wrapper" >, "children": [ < "tag": "img", "attrs": < "src": "/file/a2e8087fbc53679c14fa1.jpg" >> ] >, < "tag": "figcaption", "children": ["Pff"] >] >, < "tag": "p", "children": [< "tag": "br" >] > ] 

POST-запрос на публикацию содержит JSON, который подозрительно похож на HTML-разметку. А давайте попробуем добавить тег video, согласно структуре, которую имеем? А давайте. Немного терпения и получаем такую…

Структуру

[< "tag": "p", "children": ["Story"] >, < "tag": "p", "children": [< "tag": "br" >] >, < "tag": "figure", "children": [< "tag": "div", "attrs": < "class": "figure_wrapper" >, "children": [ < "tag": "img", "attrs": < "src": "/file/a2e8087fbc53679c14fa1.jpg" >> ] >, < "tag": "figcaption", "children": ["Pff"] >] >, < "tag": "p", "children": [< "tag": "video", "attrs": < "src": "https://www.w3schools.com/html/mov_bbb.mp4" >> ] > ] 

Если выполнить POST-запрос на редактирование с приведенной выше структурой, то, в публикацию добавится произвольное видео по ссылке. То, что надо.

Не тут то было

Все работает и с этим проблем нет. Беда в том, что большинство атрибутов не поддерживаются, а это значит, что о субтитрах, или, например, постере для видео можно забыть. То есть, получилось решение из разряда «скажи спасибо, что вообще есть». Недолго думая, я решил использовать XSS для того, чтобы иметь возможность настраивать плеер. Наверное, где-то в этом месте нормальная разработка заканчивается, но отступать было некуда: нужно было организовать публикацию видео. Я пробовал разные варианты внедрения стороннего кода в страницу, даже через картинку, но все было тщетно и Телеграф героически выстоял. Впрочем, я и не эксперт в области ИБ. Возможно, если бы я потратил больше времени, то нашел рабочий вариант XSS для Телеграф, который я бы использовал исключительно для кастомизации плеера, однако, я оставил эту затею. Я пробовал еще несколько площадок для публикации своего контента, но везде чего-то не хватало или что-то не работало. Таким образом, я все-таки реализовывал плеер для видео на своей стороне…

Впрочем, это уже совсем другая история

image

P.S. Если эту статью читают разработчики Телеграф: Пожалуйста, добавьте публикацию видео по ссылке в интерфейс, раз такой функционал доступен.

Кинопоиск API

Вы получите доступ к большому данных о фильмах, сериалах, актерах режиссерах и множество других данных с помощью API kinopoisk.

Или запросите дамп базы в JSONB/CSV форматах.

Получить доступ Получить базу

Вся база Кинопоиска в одном API

1 056 262 фильмов и сериалов

5 824 502 актеров и режиссеров

550 440 рецензий

2 284 129 изображений

Ежедневные поставки контента

На кинопоиске и других сайтах каждый день добавляются данные о новинках кинематографа, актерах, режиссерах.

База в api обновляется на постоянной основе, и в течении дня вы получите актуальные данные.

Пример работы API

Слово пацана. Кровь на асфальте

Рейтинг КП: 8.305

Рейтинг IMDB: 7.6

  • Год производства: 2023
  • Страны: Россия
  • Жанры: драма, криминал
  • Актеры: Леон Кемстач, Рузиль Минекаев, Иван Янковский, Анастасия Красовская
  • Режиссер: Жора Крыжовников
  • Премьера: 09.11.2023
  • Возрастной рейтинг: 18+

Казань, начало 1989 года. Пока родители борются за выживание, подростки сбиваются в уличные банды и бьются за асфальт. Буквально, чтобы контролировать всё, что стоит на «их» земле или передвигается по ней. Среди всеобщей нищеты — чёткие правила жизни, поддержка и слово пацана, которое сильнее клятвы. 14-летний Андрей из интеллигентной семьи, он учится в музыкальной школе и живёт с мамой и маленькой сестрёнкой. Однажды парня назначают подтянуть по английскому сверстника Марата — гопника из местной группировки. Пообщавшись с нормальным пацаном и решив, что ему надоело быть чушпаном, Андрей вступает в банду.

Какие данные мы предоставляем?

API отдает результат по id Кинопоиска в формате JSON:

 
< "id": 5304403, "externalId": < "kpHD": null, "imdb": "tt28429213", "tmdb": 234763 >, "name": "Слово пацана. Кровь на асфальте", "alternativeName": null, "enName": "Boy's word. Blood on the asphalt", "names": [ < "name": "Слово пацана", "language": "RU", "type": "Russian title on kinopoisk" >, < "name": "Короли асфальта", "language": null, "type": null >, < "name": "Слово пацана. Кровь на асфальте", "language": null, "type": null >, < "name": "Дечачка реч. Крв на асфалту", "language": "RS", "type": null >, < "name": "Boy's word. Blood on the asphalt", "language": "US", "type": null >], "type": "tv-series", "typeNumber": 2, "year": 2023, "description": "Казань, начало 1989 года. Пока родители борются за выживание, подростки сбиваются в уличные банды и бьются за асфальт. Буквально, чтобы контролировать всё, что стоит на «их» земле или передвигается по ней. Среди всеобщей нищеты — чёткие правила жизни, поддержка и слово пацана, которое сильнее клятвы.\n14-летний Андрей из интеллигентной семьи, он учится в музыкальной школе и живёт с мамой и маленькой сестрёнкой. Однажды парня назначают подтянуть по английскому сверстника Марата — гопника из местной группировки. Пообщавшись с нормальным пацаном и решив, что ему надоело быть чушпаном, Андрей вступает в банду.", "shortDescription": null, "slogan": "Пацаны не извиняются", "status": "completed", "rating": < "kp": 8.305, "imdb": 7.6, "tmdb": null, "filmCritics": 0, "russianFilmCritics": 100, "await": null >, "votes": < "kp": 823882, "imdb": 4584, "tmdb": null, "filmCritics": 0, "russianFilmCritics": 11, "await": 10284 >, "movieLength": null, "ratingMpaa": null, "ageRating": 18, "logo": < "url": "https://imagetmdb.com/t/p/original/8ir7V7krUm3wDOAtoR2V3Yg9yCe.png" >, "poster": < "url": "https://image.openmoviedb.com/kinopoisk-images/10893610/58239d8d-44d3-475e-ab3f-878679c64290/orig", "previewUrl": "https://image.openmoviedb.com/kinopoisk-images/10893610/58239d8d-44d3-475e-ab3f-878679c64290/x1000" >, "backdrop": < "url": null, "previewUrl": null >, "videos": < "trailers": [ < "url": "https://www.youtube.com/embed/lEBAnyWQsOo", "name": "Слово пацана || Тизер", "site": "youtube", "type": "TRAILER", "size": null >, < "url": "https://www.youtube.com/embed/lEBAnyWQsOo", "name": "Слово пацана || Тизер", "site": "youtube", "type": "TRAILER", "size": null >], "teasers": null >, "genres": [ < "name": "драма" >, < "name": "криминал" >], "countries": [ < "name": "Россия" >], "persons": [ < "id": 6607111, "photo": "https://image.openmoviedb.com/kinopoisk-st-images//actor_iphone/iphone360_6607111.jpg", "name": "Леон Кемстач", "enName": null, "description": "Андрей Васильев / Пальто", "profession": "актеры", "enProfession": "actor" >, < "id": 6541702, "photo": "https://image.openmoviedb.com/kinopoisk-st-images//actor_iphone/iphone360_6541702.jpg", "name": "Рузиль Минекаев", "enName": null, "description": "Марат Суворов / Адидас-младший", "profession": "актеры", "enProfession": "actor" >, < "id": 238525, "photo": "https://image.openmoviedb.com/kinopoisk-st-images//actor_iphone/iphone360_238525.jpg", "name": "Иван Янковский", "enName": null, "description": "Вова Суворов / Адидас", "profession": "актеры", "enProfession": "actor" >, < "id": 5821258, "photo": "https://image.openmoviedb.com/kinopoisk-st-images//actor_iphone/iphone360_5821258.jpg", "name": "Анастасия Красовская", "enName": null, "description": "Ирина Сергеевна", "profession": "актеры", "enProfession": "actor" >, < "id": 1714177, "photo": "https://image.openmoviedb.com/kinopoisk-st-images//actor_iphone/iphone360_1714177.jpg", "name": "Юлия Александрова", "enName": null, "description": "Светлана Михайловна", "profession": "актеры", "enProfession": "actor" >, < "id": 7089008, "photo": "https://image.openmoviedb.com/kinopoisk-st-images//actor_iphone/iphone360_7089008.jpg", "name": "Слава Копейкин", "enName": null, "description": "Валера Туркин / Турбо", "profession": "актеры", "enProfession": "actor" >, < "id": 6828191, "photo": "https://image.openmoviedb.com/kinopoisk-st-images//actor_iphone/iphone360_6828191.jpg", "name": "Лев Зулькарнаев", "enName": null, "description": "Вахит Зималетдинов / Зима", "profession": "актеры", "enProfession": "actor" >, < "id": 4511829, "photo": "https://image.openmoviedb.com/kinopoisk-st-images//actor_iphone/iphone360_4511829.jpg", "name": "Никита Кологривый", "enName": null, "description": "Кащей", "profession": "актеры", "enProfession": "actor" >, < "id": 1193331, "photo": "https://image.openmoviedb.com/kinopoisk-st-images//actor_iphone/iphone360_1193331.jpg", "name": "Сергей Бурунов", "enName": null, "description": "Кирилл Суворов", "profession": "актеры", "enProfession": "actor" >, < "id": 1917134, "photo": "https://image.openmoviedb.com/kinopoisk-st-images//actor_iphone/iphone360_1917134.jpg", "name": "Антон Васильев", "enName": null, "description": "Ильдар Юнусович", "profession": "актеры", "enProfession": "actor" >, < "id": 2356169, "photo": "https://image.openmoviedb.com/kinopoisk-st-images//actor_iphone/iphone360_2356169.jpg", "name": "Денис Бауэр", "enName": null, "description": null, "profession": "художники", "enProfession": "designer" >, < "id": 2002965, "photo": "https://image.openmoviedb.com/kinopoisk-st-images//actor_iphone/iphone360_2002965.jpg", "name": "Григорий Пушкин", "enName": null, "description": null, "profession": "художники", "enProfession": "designer" >, < "id": 5844712, "photo": "https://image.openmoviedb.com/kinopoisk-st-images//actor_iphone/iphone360_5844712.jpg", "name": "Дарья Фомина", "enName": null, "description": null, "profession": "художники", "enProfession": "designer" >, < "id": 2391885, "photo": "https://image.openmoviedb.com/kinopoisk-st-images//actor_iphone/iphone360_2391885.jpg", "name": "Жора Крыжовников", "enName": null, "description": null, "profession": "режиссеры", "enProfession": "director" >, < "id": 5856590, "photo": "https://image.openmoviedb.com/kinopoisk-st-images//actor_iphone/iphone360_5856590.jpg", "name": "Егор Тарасенко", "enName": null, "description": null, "profession": "монтажеры", "enProfession": "editor" >, < "id": 2310836, "photo": "https://image.openmoviedb.com/kinopoisk-st-images//actor_iphone/iphone360_2310836.jpg", "name": "Александр Верхоляк", "enName": null, "description": null, "profession": "монтажеры", "enProfession": "editor" >, < "id": 2711501, "photo": "https://image.openmoviedb.com/kinopoisk-st-images//actor_iphone/iphone360_2711501.jpg", "name": "Александр Иванов", "enName": null, "description": null, "profession": "монтажеры", "enProfession": "editor" >, < "id": 2507110, "photo": "https://image.openmoviedb.com/kinopoisk-st-images//actor_iphone/iphone360_2507110.jpg", "name": "Юрий Коробейников", "enName": null, "description": null, "profession": "операторы", "enProfession": "operator" >, < "id": 231517, "photo": "https://image.openmoviedb.com/kinopoisk-st-images//actor_iphone/iphone360_231517.jpg", "name": "Фёдор Бондарчук", "enName": null, "description": null, "profession": "продюсеры", "enProfession": "producer" >, < "id": 1862119, "photo": "https://image.openmoviedb.com/kinopoisk-st-images//actor_iphone/iphone360_1862119.jpg", "name": "Дмитрий Табарчук", "enName": null, "description": null, "profession": "продюсеры", "enProfession": "producer" >, < "id": 3489754, "photo": "https://image.openmoviedb.com/kinopoisk-st-images//actor_iphone/iphone360_3489754.jpg", "name": "Максим Рыбаков", "enName": null, "description": null, "profession": "продюсеры", "enProfession": "producer" >, < "id": 6878880, "photo": "https://image.openmoviedb.com/kinopoisk-st-images//actor_iphone/iphone360_6878880.jpg", "name": "Александр Косарим", "enName": null, "description": null, "profession": "продюсеры", "enProfession": "producer" >, < "id": 2391885, "photo": "https://image.openmoviedb.com/kinopoisk-st-images//actor_iphone/iphone360_2391885.jpg", "name": "Жора Крыжовников", "enName": null, "description": null, "profession": "редакторы", "enProfession": "writer" >, < "id": 2229568, "photo": "https://image.openmoviedb.com/kinopoisk-st-images//actor_iphone/iphone360_2229568.jpg", "name": "Андрей Золотарев", "enName": null, "description": null, "profession": "редакторы", "enProfession": "writer" >, < "id": 7160095, "photo": "https://image.openmoviedb.com/kinopoisk-st-images//actor_iphone/iphone360_7160095.jpg", "name": "Роберт Гараев", "enName": null, "description": null, "profession": "редакторы", "enProfession": "writer" >], "reviewInfo": null, "seasonsInfo": [ < "number": 1, "episodesCount": 8 >], "budget": < "value": null, "currency": null >, "fees": < "world": < "value": null, "currency": null >, "russia": < "value": null, "currency": null >, "usa": < "value": null, "currency": null >>, "premiere": < "country": null, "world": "2023-11-09T00:00:00Z", "russia": null, "digital": "2023-11-09T00:00:00.000Z", "cinema": null, "bluray": null, "dvd": null >, "similarMovies": [], "sequelsAndPrequels": [], "watchability": < "items": [ < "name": "START", "logo": < "url": "https://avatars.mds.yandex.net/get-ott/239697/1a632675-0d99-4268-bd5e-d5f3dd800174/orig" >, "url": "https://start.ru/watch/slovo-pacana?utm_source=kinopoisk\u0026utm_medium=feed_watch\u0026utm_campaign=slovo-pacana" >, < "name": "Wink", "logo": < "url": "https://avatars.mds.yandex.net/get-ott/1672343/54096cbe-cc3b-41c9-8e44-990ebbca8d61/orig" >, "url": "https://wink.ru/media_items/149611047?utm_source=yandex\u0026utm_medium=koldunschick\u0026utm_content=name" > ] >, "releaseYears": [ < "start": 2023, "end": 2023 >], "top10": null, "top250": null, "ticketsOnSale": false, "totalSeriesLength": null, "seriesLength": 53, "isSeries": true, "audience": null, "lists": [ "popular-series" ], "networks": < "Items": [ < "name": "Wink", "logo": null >] >, "updatedAt": "2024-05-02T12:15:09.809Z", "createdAt": "2023-05-06T09:11:37.214Z", "facts": [ < "value": "Несмотря на схожесть названия, сериал не является экранизацией книги \u0026#171;Слово пацана. Криминальный Татарстан 1970\u0026#8211;2010-х\u0026#187;. Однако её автор Роберт Гараев принимал участие в проекте как консультант.", "type": "FACT", "spoiler": false >, < "value": "После выхода третьего эпизода режиссёр \u003ca href=\"/name/2391885/\" Крыжовников\u003c/a\u003e решил переснять некоторые сцены восьмого, чтобы слегка изменить финал.", "type": "FACT", "spoiler": false >], "imagesInfo": < "postersCount": null, "backdropsCount": null, "framesCount": null >>

Была проделаня тяжелая работа по автоматизации сбора данных из открытых источников. В результате появилась большая база с регулярными обновлениями. В базе есть информация о:

  • Кино и Сериалах
  • Наградах
  • Актерах и Съемочной группе
  • Изображениях
  • Студиях
  • Ключевых словах
  • Коллекциях
  • Рецензиях

Подключиться к API

Тарифы

Для Вас, мы подготовили несколько тарифов, demo тариф имеет довольно малые лимиты на количество обращений, но они обновляются каждый день. Чтобы стабильно получать большое количество данных — рекомендуем начать использовать тариф Developer или Unlimited
Если вам нужна готовая база данных, а не api свяжитесь по почте: support@kinopoisk.dev

Demo

Для тех, что хочет просто посмотреть.
Всегда бесплатно

  • 200 запросов в сутки
  • Доступ к общему чату
  • Поддержка в общем чате
  • Поддержка в личных сообщениях
  • Консультации с разработчиками API
  • Влияние на разработку API,
    функционал и данные

Student

Хватит для обучения
и выполнения учебных заданий

  • 2500 запросов в сутки
  • Доступ к общему чату
  • Поддержка в общем чате
  • Поддержка в личных сообщениях
  • Консультации с разработчиками API
  • Влияние на разработку API,
    функционал и данные

Developer

Подойдет, для старта проекта
или разработки mvp

  • 5000 запросов в сутки
  • Доступ к общему чату
  • Поддержка в общем чате
  • Поддержка в личных сообщениях
  • Консультации с разработчиками API
  • Влияние на разработку API,
    функционал и данные

Unlimited

Полный безлимит, для тех,
кому постоянно нужны обновления

  • ∞ запросов весь месяц
  • Доступ к общему чату
  • Поддержка в общем чате
  • Поддержка в личных сообщениях
  • Консультации с разработчиками API
  • Влияние на разработку API,
    функционал и данные

Поддержка

Мы не оставим Вас без поддержки, сотрудники kinopoisk.dev онлайн 24/7. Готовы решить практически любой ваш вопрос, а также — подсказать, помочь, обновить, загрузить, даже доработать код для корректной работы с API kinopoisk.dev.

Написать разработчику

© 2019-2024 kinopoisk.dev — Не имеет никакого отношения к сервису КиноПоиск. Все данные берутся из открытых источников и ни как не нарушают права авторов.

Существует ли API Кинопоиска?

Есть ли какое-нибудь более-менее полное API для Кинопоиска? Или предполагается парсинг страничек?

Интересует поиск фильма по названию, [году] -> получение id и по id -> получение картинки и основной инфы

  • Вопрос задан более трёх лет назад
  • 72121 просмотр

Комментировать
Решения вопроса 1
igorakintev @igorakintev

API есть, мы поговорили с ними и объяснили с какой целью нам необходимо, ребята дали доступ.
Сразу оговорюсь что есть лимит на количество запросов в сутки, и информация возвращаемая API не полная (но там есть все то что мы просили).

П.С. Денег не просили, мы в замен на страницах нашего сервиса опубликовали ссылки на КиноПоиск.

Как «Кинопоиск» стал главным киноресурсом Рунета

фото Артема Голощапова для Forbes

Ритмом жизни 33-летний основатель «Кинопоиска» Виталий Таций не слишком похож на владельца стремительно растущего бизнеса. В пятницу, накануне интервью Forbes, у него сломался мобильник, выходные Виталий провел на даче без связи, в понедельник наконец выбрался в Москву, но только к вечеру забрал телефон из ремонта. Таций как будто не торопится: он никогда не берет кредитов, всего раз в жизни давал платную рекламу. Тем не менее сайт о кино «Кинопоиск», появившись далеко не первым, за 10 лет стал самым популярным в своем жанре и одним из самых посещаемых ресурсов всего Рунета: 2 млн посетителей в день (его опережает менее десятка сайтов), несколько миллионов долларов годовой выручки. Как так получилось?

Череповец, родной город Тация, в начале 1990-х был неподходящим местом для синефила: немногочисленные видеосалоны, обычно в подвалах, крутили только американские боевики. Но для Виталия и его отца это была настоящая страсть: они смотрели все подряд. Отец, инженер-строитель, доверил Виталию вести дневник просмотров: название, режиссер, актеры и т. д. — вплоть до гримеров и осветителей. Эту тетрадку с аккуратными записями Виталий, поступив в Институт стали и сплавов (МИСиС), увез с собой в Москву.

МИСиС не Стэнфорд. На факультете информатики и экономики, рассказывает Виталий, учили устаревшие «бейсик» и «паскаль». Студенты учились программировать по книжкам. Вместе с однокурсником Дмитрием Сухановым Таций писал компьютерные игры — «так, для развлечения». Диплом Таций защитил с двухлетним опозданием и не забрал. «Как-то немножко лень было», — вспоминает он.

«Что-то придумать в интернете» предложил Суханов, а Таций, продолжавший прилежно пополнять свою базу, решил, что она и есть это «что-то». В начале 2003 года партнеры засели за создание сайта. Писали ночами — оба к тому времени уже работали программистами. Обязанности распределились от противного. «У Димы не очень хорошо с чувством прекрасного, а у меня не очень хорошо с программированием», — объясняет Таций, создавший дизайн «Кинопоиска», несильно изменившийся с тех пор.

В ноябре 2003-го Kinopoisk.ru открылся для пользователей. В первый месяц пришло 4700 человек, во второй — 24 000. Рыночный ландшафт не сулил успеха. У похожего сайта Kinomania.ru месячная посещаемость уже тогда достигала 160 000 пользователей. У Film.ru — превысила 100 000. Были и другие конкуренты — Filmz.ru, Kinokadr.ru, Kino-govno.ru, у всех были базы фильмов, новости, форумы о кино.

Прошло 10 лет: у «Киномании» и «Фильма» сейчас порядка 1,5 млн посетителей в месяц, а у «Кинопоиска» — 25 млн. В чем его преимущество?

Когда в начале 2003-го два недавних студента взялись за дело, в их базе было 4000 фильмов, а в момент открытия сайта — несколько десятков тысяч, рассказывает Таций, объясняя это работой основателей и добровольных помощников — фанатов кино. Суханов, не любящий перечислять свои достижения, поясняет только, что создал удобное средство для загрузки на сайт данных о фильмах и автоматического перевода имен и фамилий. Конкуренты видят ситуацию иначе.

«Кинопоиск» родился как копия базы кино IMDb», — уверен основатель Film.ru Сергей Аксенов. «Спарсили базу IMDb», — поддерживает коллегу главный редактор и сооснователь сайта Kino-govno.com Михаил Судаков. «Спарсить» значит разобрать html-страницу на «информационные кирпичики» и затем сложить из них другую страницу — уже на своем сайте. Делается это при участии специальной программы-робота. «Воспользовались, в общем, базой IMDb», — подводит итог Роман Корнеев, издатель Kinokadr.ru.

IMDb — крупнейшая в мире база с описаниями фильмов, режиссеров, актеров. Сейчас в ней 2,5 млн фильмов и 5 млн персоналий, большинство которых малоизвестны, но придают базе полноту. Основал ее 30 лет назад британский программист Кол Нидхэм, собрав воедино «микробазы» любителей всего мира. Базу пополняли все желающие, а Нидхэм на рекламные поступления нанял «дата-менеджеров» для проверки контента.

В 1998-м Нидхэм продал IMDb компании Amazon, которая превратила ее в площадку для торговли DVD. С тех пор база живет, не заботясь о доходах. IMDb заявляет, что ее информацию нельзя использовать для создания других баз кино, но за выполнением этого требования не следит. Единственный судебный процесс был затеян не ею: вьетнамская актриса Жюни Хоанг подала в суд, заявив, что IMDb обнародовала ее возраст (Хоанг родилась в 1971-м, ей сейчас 41) и тем нанесла материальный урон, лишив выгодных контрактов; процесс еще не закончился. Письма и звонки Forbes в пресс-службу IMDb, отделы копирайта и PR остались без ответа.

«IMDb сама нередко на нас ссылается. Как же понять, где первоисточник? — отвечает на обвинения Таций. — К нам и к ним информацию присылают пользователи, одна и та же ошибка может кочевать с сайта на сайт». Как вскрыть плагиат? «Это не переведенные на русский фамилии актеров, подробнейшие описания никому в России не известных фильмов, одинаковые ошибки на обоих сайтах», — говорит Сергей Аксенов. Но большая часть доказательств, если они и были, исчезла: «Кинопоиск» развивается, исправляет ошибки, дополняет информацию. «Когда в 1997 году мы искали киносайт для покупки, Kinopoisk.ru тоже смотрели. Однако для нас проблемой были авторские права на их информацию, — говорит Инесса Гаевская, издатель ИД «Топ-50» (бывший ИД «Собака»). — Но они реально молодцы, их база развивается, а страницы переработаны так, что давно стали собственным контентом». Говорят, одно время «Кинопоиск» даже начал приделывать к страницам фильмов плашку «Добавлено пользователем таким-то», чтобы избежать обвинений в плагиате.

Но откуда бы ни взялась база «Кинопоиска», ее размер был критически важен для старта. Киношный сайт может быть более или менее пристрастным, может тщательно или не очень отбирать рецензии, но пока о нем мало известно, база решает все — ведь основную часть трафика сайтам про кино приносят поисковики через запросы по фильмам и актерам. «У всех большие заходы с поисковиков, такова наша специфика», — говорит основатель и совладелец Kinomania.ru Владислав Момджян. — У нас это 80–90% трафика. У «Кинопоиска» — примерно 60%. А сайт Alexa.com, анализирующий посещаемость сайтов, показывает: главные слова, приводившие в последнее время людей на «Кинопоиск», — это название приключенческой драмы «Жизнь Пи» и фильм про зомби «Тепло наших тел».

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

Первые годы «Кинопоиск» жил на деньги своих создателей. Попытались было заработать на продаже дисков через сайт, но не справились с доставкой и стали «витриной» для «Озона», а комиссия для партнеров у этого магазина копеечная. С рекламой поначалу тоже не пошло — дизайн даже не предполагал места для нее, пришлось освобождать правую колонку. Но и после этого торговали по смешным ценам — $100 в неделю за баннер на всех страницах. Как-то Таций обнаружил на «Озоне» телефон агентства-партнера сайта и позвонил. Изучив достижения «Кинопоиска», рекламисты обещали ему $20 000 в месяц в ближайшее время. И сдержали обещание. Для новичка это серьезные деньги: основатели наконец смогли уйти с основной работы.

В 2007-м «Кинопоиск» был уже заметной фигурой Рунета с 1 млн посетителей в месяц. Тут-то и появился инвестор Юрий Мильнер (помимо него сайтом интересовались, говорит Таций, ИД «Собака», Gameland, «Афиша»). «Мильнер сказал: «Издательские дома — трупы, журналы — трупы». Мы поверили, тем более что это предложение было самое щедрое», — рассказывает Таций. За 40% DST Юрия Мильнера и Григория Фингера заплатил $1,2 млн, а в управление по своему обыкновению почти не лез: с Мильнером основатели сайта встречались всего пару раз, с Фингером — больше. На деньги инвестора арендовали офис, увеличили штат до 30 человек, в их числе пять программистов. Посещаемость начала расти быстрее, но сайт оставался убыточным, понемногу тратя мильнеровский миллион.

В 2009-м DST продал свою долю «Кинопоиска» французской AlloCine, которая владеет сайтами о кино во Франции, Китае и еще нескольких странах, а сама принадлежит фонду Tiger Global, который, кстати, примерно тогда же продал DST 15% Mail.ru. «Представители DST говорили, что сделка с нашими 40% была нерыночной, это был какой-то обмен акциями. Кажется, Мильнер еще при покупке нас знал, кому потом продаст», — вспоминает Таций. Ни он, ни участники сделки не стали комментировать ее финансовую сторону.

В начале 2010-го деньги Мильнера закончились. Французы помогли, но не деньгами, а технологиями. Именно они посоветовали «Кинопоиску» тогда еще только рождавшийся рекламный формат «брендирование» — на весь экран разворачивается картинка рекламодателя, а в ее середину встраивается сайт.

«Мы первые, кто стал продавать подложки в промышленных масштабах», — говорит Таций. «Брендирование» без скидок стоит у него 300 000 рублей в сутки, а со скидкой, утверждают коллеги Тация и опрошенные Forbes рекламные агентства, 150 000–200 000 рублей. Без «брендирования» «Кинопоиск», по словам Тация, проводит несколько дней в году. «У них на эту рекламу очередь стоит», — говорит Момджян из «Киномании». Собеседники Forbes в нескольких рекламных агентствах утверждают, впрочем, что «брендирование» на «Кинопоиске» используется примерно на 70%. Если брать минимальную оценку, этот формат приносит «Кинопоиску» примерно 38 млн рублей в год. Вдвое меньше доходов дает крупноформатный «супербаннер» в шапке сайта, за который платят посуточно, говорит Таций, в сумме на два «нестандарта» приходится половина доходов от всей статичной рекламы. А 25–30% всех рекламных доходов — видеореклама в трейлерах к фильмам. Всего получается примерно $5 млн. Таций отказался комментировать эту сумму, но его коллеги по рынку согласны с такой оценкой.

Расходы «Кинопоиска» в несколько раз ниже выручки. На зарплату не должно уходить больше $1 млн в год, подсчитывает Момджян из «Киномании», а расходы на «железо» он оценивает в $40 000 в год. Получается, что валовая рентабельность должна быть на уровне 75-80%.

Что дальше? Вырастут ли обороты «Кинопоиска» до десятков миллионов долларов, войдет ли он в составляемый Forbes ежегодно список крупнейших компаний Рунета? Сайты о кино, не показывающие кино, не сулят грандиозных оборотов. Выручка французского сайта группы AlloCine достигла в прошлом году €22 млн, рассказал Forbes Грегуар Лассаль, президент — генеральный директор AlloCine. А AlloCine во Франции первопроходец — они начали еще в 1993-м как служба бронирования билетов по телефону и уже в 1997-м запустили сайт о кино.

Сайты о кино устроены одинаково, на них можно почитать, но нельзя ничего посмотреть. Почему так? Грегуар Лассаль сказал Forbes, что ни в коем случае не будет связываться с показом фильмов онлайн: «Это другая, более масштабная сфера». Здесь посетители проводят не минуты, а часы, на рекламе можно зарабатывать сотни миллионов в год — например, выручка онлайн-кинотеатра Hulu в 2012 году достигла $700 млн. Но зато и необходимые инвестиции исчисляются десятками миллионов.

«Пока есть торренты, кинотеатры в интернете — это выброшенные миллионы долларов», — пожимает плечами Таций. У него другой план. Во-первых, больше рекламы в роликах («Людям не нравится, но они должны нас понять»), во-вторых, развивать мобильные версии сайта — именно их «Кинопоиск» рекламировал тот единственный раз, когда заплатил за это деньги («Почему-то «Афиша» согласилась поставить нашу, их конкурента, рекламу. Я бы не стал»).

Еще один план Тация: проникнуть на рынок кино онлайн исподволь, собрав на сайте в специальном разделе все онлайн-кинотеатры (Ivi, Tvigle, Tvzavr и пр.) и дав посетителям возможность поиска сразу всюду — за отчисления «Кинопоиску» от доходов этих порталов. Его медлительность тут на пользу: ни один российский онлайн-кинотеатр пока не стал прибыльным, в то время как «Кинопоиск» — небольшая, но успешная машина по зарабатыванию денег. «Мы были бы рады увеличить наш пакет в «Кинопоиске», но г-н Таций не выразил желания продавать нам дополнительные акции», — вздыхает Грегуар Лассаль из AlloCine.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *