Тема: kodik
Всем привет!
Ребята можно как-то при помощи php выдернуть прямую ссылу со страниц кодика?
Пример страницы: http://kodik.online/movie/33412/Xabjka3e95a7ec
Спасибо.
Вы тут как гость.
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Всем привет!
Ребята можно как-то при помощи php выдернуть прямую ссылу со страниц кодика?
Пример страницы: http://kodik.online/movie/33412/Xabjka3e95a7ec
Спасибо.
Если я не ошибаюсь, то в прямой ссылке закодирован ip адрес запроса, получив на сервере(php) ссылку вида
http://streamblast.cc/manifest/index.m3u8?tok=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzb3VyY2UiOiJzdHJlYW1pbmciLCJleHAiOjE1NTYwODIyMjYsInYiOiIzNzgzNGNhODRiODk0ODYyIiwicCI6NDc4N30.Z6Jja7rE9PVwq8hFnodKym6PPbz50uJx6nPc2NL_xtg
вероятно не сможем проиграть на конечном устройстве, так как у него и у сервера разные ip,
Хотя могу и ошибаться.
Проверил, вроде к IP не привязано. Скрипт на PHP не писал.
Проверил, вроде к IP не привязано. Скрипт на PHP не писал.
Там все проигрывается,привязки по ip нет.
Пример страницы: http://kodik.online/movie/33412/Xabjka3e95a7ec
Спасибо.
Кстати там вероятно api какое-то есть, откуда такие ссылки можно получить? Если делать получение прямых ссылок, то лучше наверное сразу к этому api привязаться, по коду кинопоиска например (так как по названию возможны разночтения)
Кстати там вероятно api какое-то есть, откуда такие ссылки можно получить? Если делать получение прямых ссылок, то лучше наверное сразу к этому api привязаться, по коду кинопоиска например (так как по названию возможны разночтения)
Spell,уже помог всё работает.
На странице в фрейме и в апи ссылки такого вида http://kodik.cc/serial/4309/bc6def495a3 … d22a8/720p
от туда и берутся ссылки.
https://kodikapi.com/list?token=b7cc429 … 9d114f4435
https://kodikapi.com/search?token=b7cc4 … 0%B0%D1%80
https://kodikapi.com/translations?token … 9d114f4435
Spell,уже помог всё работает.
+ открыть спойлерНа странице в фрейме и в апи ссылки такого вида http://kodik.cc/serial/4309/bc6def495a3 … d22a8/720p
от туда и берутся ссылки.
https://kodikapi.com/list?token=b7cc429 … 9d114f4435
https://kodikapi.com/search?token=b7cc4 … 0%B0%D1%80
https://kodikapi.com/translations?token … 9d114f4435
А подкаст готовый можете написать?
А подкаст готовый можете написать?
Пока думаю как!
Спасибо человеку который помог с базой.
с поиском по имени понятно
https://kodikapi.com/search?token=b7cc4293ed475c4ad1fd599d114f4435&title=%D0%94%D0%BE%D0%BA%D1%82%D0%BE%D1%80%20%D0%BA%D1%82%D0%BE
А две другие ссылки api, что дают? Можно разжевать? И что поиска по кинопоиску на кодике нет?
https://kodikapi.com/translations?token=b7cc4293ed475c4ad1fd599d114f4435
так это похоже перечень студий озвучивания, но как из них выбирать для конкретного видео студию?
с поиском по имени понятно
https://kodikapi.com/search?token=b7cc4293ed475c4ad1fd599d114f4435&title=%D0%94%D0%BE%D0%BA%D1%82%D0%BE%D1%80%20%D0%BA%D1%82%D0%BE
А две другие ссылки api, что дают? Можно разжевать? И что поиска по кинопоиску на кодике нет?
https://kodikapi.com/translations?token=b7cc4293ed475c4ad1fd599d114f4435
так это похоже перечень студий озвучивания, но как из них выбирать для конкретного видео студию?
https://kodikapi.com/search?token=b7cc4 … ion_id=794
Документация по API
Описание
Все запросы должны направляться к домену kodikapi.com
Все данные возвращаются в формате json.
API поддерживает запросы как по http, так и по https протоколу.
Параметры можно передавать как через GET, так и через POST.
На данный момент доступно три типа ресурсов:
1. /translations - предназначен для получения всех возможных озвучек и их ID.
2. /list - предназначен для парсинга большого количество материалов (или всех материалов сразу). Можно фильтровать материалы по практически любому параметру.
3. /search - предназначен для поиска какого-либо фильма в базе. Поиск может быть как по точным параметрам фильма, так и по нечеткому названию.
/search и /list имеют огромное количество доступных для изменения параметров, так что вы точно сможете подобрать необходимый вам функционал.
Документация по API: /translations
Самый простой ресурс. Возвращает список доступных озвучек.
Стуктура ответа:
id Идентификатор озвучки в базе. В отличии от названия является неизменным.
title Название озвучки.
Документация по API: /list
Возвращает список всех материалов, подходящих под критерии запроса, либо вообще всех, если критерии не указаны.
Для того, чтобы вам было удобнее парсить ответ API, материалы возвращаются страницами. Каждая страница содержит ограниченное количество материалов, указанное в параметре limit. После парсинга первой страницы ваш скрипт должен переходить на следующую страницу, указанную в параметре next и так далее.
Стуктура ответа:
id Уникальный ID материала
title Название
title_orig Оригинальное название
other_title Другое название (часто встречается в аниме)
link Ссылка на плеер
year Год
kinopoisk_id ID кинопоиска
imdb_id ID IMDb
worldart_link Ссылка на материал на world art (Используется не ID, так как на world art есть разные разделы с независимыми ID)
type Тип материала
quality Качество видео
camrip Является ли материал камрипом
translation Объект содержащий id озвучки и title (название) озвучки
created_at Дата создания материала. Указывается в формате ISO 8601
updated_at Дата обновления материала. Указывается в формате ISO 8601
blocked_countries Массив, содержащий страны, в которых материал заблокирован. Либо пустой массив, если материал не заблокирован нигде.
seasons Объект с сезонами и с сериями в них. Поле присутствует только если в запросе были указаны параметры with_seasons или with_episodes
last_season Номер последнего сезона сериала. Поле присутствует только в материалах c типом сериала
last_episode Номер последнего эпизода сериала. Поле присутствует только в материалах c типом сериала
episodes_count Общее количество эпизодов в сериале. Поле присутствует только в материалах c типом сериала
blocked_seasons Если сериал заблокирован целиком, то поле содержит строку "all", если заблокированы отдельные сезоны, то поле явлется объектом и содержит номера сезонов и к каждом сезону: либо "all" (если заблокированы все эпизоды), либо массив из номеров серий ["1", "2", "3"] (если заблокированы отдельные серии). Если ничего не заблокировано, поле является пустым объектом. Поле присутствует только в материалах c типом сериала
pornolab_id ID Pornolab. Поле присутствует только в материалах типа adult
actors Список актеров. Поле присутствует только в материалах типа adult
release Дата релиза в формате YYYY-MM-DD либо в формате YYYY. Поле присутствует только в материалах типа adult
studio Название студии. Поле присутствует только в материалах типа adult
Документация по API: /search
Возвращает список наиболее подходящих вашему поисковому запросу материалов. Наиболее релевантные материалы будут идти первыми.
Результаты автоматически сортируются по последней серии и сезону. Таким образом изначально показывается озвучка с самой последней серией. Изменяя параметр приоритезации озвучек можно изменить эту логику. Также стоит учесть, что по умолчанию высокий приоритет имеют озвучки "Дублированный" и "Проф. Многоголосый" (это можно отключить настроив приоритет озвучек).
Стуктура ответа:
id Уникальный ID материала
title Название
title_orig Оригинальное название
other_title Другое название (часто встречается в аниме)
link Ссылка на плеер
year Год
kinopoisk_id ID кинопоиска
imdb_id ID IMDb
worldart_link Ссылка на материал на world art (Используется не ID, так как на world art есть разные разделы с независимыми ID)
type Тип материала
quality Качество видео
camrip Является ли материал камрипом
translation Объект содержащий id озвучки и title (название) озвучки
created_at Дата создания материала. Указывается в формате ISO 8601
updated_at Дата обновления материала. Указывается в формате ISO 8601
blocked_countries Массив, содержащий страны, в которых материал заблокирован. Либо пустой массив, если материал не заблокирован нигде.
seasons Объект с сезонами и с сериями в них. Поле присутствует только если в запросе были указаны параметры with_seasons или with_episodes
last_season Номер последнего сезона сериала. Поле присутствует только в материалах c типом сериала
last_episode Номер последнего эпизода сериала. Поле присутствует только в материалах c типом сериала
episodes_count Общее количество эпизодов в сериале. Поле присутствует только в материалах c типом сериала
blocked_seasons Если сериал заблокирован целиком, то поле содержит строку "all", если заблокированы отдельные сезоны, то поле явлется объектом и содержит номера сезонов и к каждом сезону: либо "all" (если заблокированы все эпизоды), либо массив из номеров серий ["1", "2", "3"] (если заблокированы отдельные серии). Если ничего не заблокировано, поле является пустым объектом. Поле присутствует только в материалах c типом сериала
pornolab_id ID Pornolab. Поле присутствует только в материалах типа adult
actors Список актеров. Поле присутствует только в материалах типа adult
release Дата релиза в формате YYYY-MM-DD либо в формате YYYY. Поле присутствует только в материалах типа adult
studio Название студии. Поле присутствует только в материалах типа adult
Что то я нифига не понял( Все ссылки выдают "извините данной страницы не существует" но если открыть исходный код то там ссылки но они не одна не идет( Что я не так делаю?
Что то я нифига не понял( Все ссылки выдают "извините данной страницы не существует" но если открыть исходный код то там ссылки но они не одна не идет( Что я не так делаю?
Ссылку нужно в фрейм добавить.
Пример
<iframe src="http://kodik.info/video/35634/fc521bf88f716fe082277dc9afcd73c1/720p" width="648" height="410" frameborder="0" allowfullscreen></iframe>
Ссылку нужно в фрейм добавить.
А прямую ссылку никак не вынуть? Дело в том что фрейм мне не подходит(
А прямую ссылку никак не вынуть? Дело в том что фрейм мне не подходит(
Можно. Только нужно не много над скриптом по-шаманить.
Остался один вопрос не понятен, а как серии распарсить?
Вот есть ссылка
http://kodik.cc/serial/4309/bc6def495a31545c7f648f7fb68d22a8/720p
Видим, что это не отдельный фильм, а сериал. Там 8 сезонов по 7 серий, но как получить ссылки на серии имея serialId =4309?
1 серия 8 сезона (правда в другом переводе) имеет вид
//kodik.cc/go/seria/119611/09249413a7eb3c03b15df57cd56a051b/720p?d=kodik.cc&d_sign=9945930febce35101e96ce0fe360f9729430271c19941e63c5208c2f342e10ed&pd=kodik.cc&pd_sign=9945930febce35101e96ce0fe360f9729430271c19941e63c5208c2f342e10ed&ref=&ref_sign=208d2a75f78d8afe7a1c73c2d97fd3ce07534666ab4405369f4f8705a9741144&sl=//kodik.cc/serial/4309/bc6def495a31545c7f648f7fb68d22a8/720p&sl_sign=637e37714e88f9739ad5527abeed59abfe3aa5bf4b52219f258e8053dcef43ec
Остался один вопрос не понятен, а как серии распарсить?
Все также как и на moonwalk, принцип тот же.
Можно. Только нужно не много над скриптом по-шаманить.
а поподробнее можно?
а поподробнее можно?
Можно! Написал в личку.
Ребят привет!
Помогите вывести json в php
Сам json
{
"time": "1ms",
"total": 2,
"results": [
{
"id": "movie-35696",
"type": "foreign-movie",
"link": "//kodik.info/video/35696/56d36a6f112341865f7c5baf85bf23e7/720p",
"title": "Мстители: Финал",
"title_orig": "Avengers: Endgame",
"translation": {
"id": 704,
"title": "Дублированный"
},
"year": 2019,
"kinopoisk_id": "843650",
"imdb_id": "tt4154796",
"quality": "WEB-DLRip 720p",
"camrip": false,
"blocked_countries": [],
"created_at": "2019-04-24T21:54:32Z",
"updated_at": "2019-07-28T07:02:14Z",
"material_data": {
"title": "Мстители: Финал",
"title_en": "Avengers: Endgame",
"year": 2019,
"tagline": "Avenge the fallen.",
"description": "Оставшиеся в живых члены команды Мстителей и их союзники должны разработать новый план, который поможет противостоять разрушительным действиям могущественного титана Таноса. После наиболее масштабной и трагической битвы в истории они не могут допустить ошибку.",
"poster_url": "https://st.kp.yandex.net/images/film_iphone/iphone360_843650.jpg",
"duration": 181,
"countries": [
"США"
],
"genres": [
"фантастика",
"боевик",
"приключения"
],
"kinopoisk_rating": 7.7,
"kinopoisk_votes": 117533,
"imdb_rating": 8.7,
"imdb_votes": 486411,
"premiere_ru": "2019-04-29",
"premiere_world": "2019-04-22",
"actors": [
"Роберт Дауни мл.",
"Крис Эванс",
"Марк Руффало",
"Крис Хемсворт",
"Скарлетт Йоханссон",
"Джереми Реннер",
"Дон Чидл",
"Пол Радд",
"Бри Ларсон",
"Карен Гиллан"
],
"directors": [
"Энтони Руссо",
"Джо Руссо"
],
"producers": [
"Кевин Файги",
"Виктория Алонсо",
"Митчелл Белл"
],
"writers": [
"Кристофер Маркус",
"Стивен МакФили",
"Стэн Ли"
],
"composers": [
"Алан Сильвестри"
],
"editors": [
"Джеффри Форд",
"Мэттью Шмидт"
],
"designers": [
"Чарльз Вуд",
"Джулиан Эшби",
"Джим Барр"
],
"operators": [
"Трент Опалок"
]
}
},
{
"id": "movie-40393",
"type": "foreign-movie",
"link": "//kodik.info/video/40393/dbf13d6a51f97bc69df5bd13894caf06/720p",
"title": "Мстители: Финал",
"title_orig": "Avengers: Endgame",
"translation": {
"id": 794,
"title": "HDrezka Studio"
},
"year": 2019,
"kinopoisk_id": "843650",
"imdb_id": "tt4154796",
"quality": "WEB-DLRip 1080p",
"camrip": false,
"blocked_countries": [],
"created_at": "2019-07-30T12:45:03Z",
"updated_at": "2019-07-30T12:45:03Z",
"material_data": {
"title": "Мстители: Финал",
"title_en": "Avengers: Endgame",
"year": 2019,
"tagline": "Avenge the fallen.",
"description": "Оставшиеся в живых члены команды Мстителей и их союзники должны разработать новый план, который поможет противостоять разрушительным действиям могущественного титана Таноса. После наиболее масштабной и трагической битвы в истории они не могут допустить ошибку.",
"poster_url": "https://st.kp.yandex.net/images/film_iphone/iphone360_843650.jpg",
"duration": 181,
"countries": [
"США"
],
"genres": [
"фантастика",
"боевик",
"приключения"
],
"kinopoisk_rating": 7.7,
"kinopoisk_votes": 117533,
"imdb_rating": 8.7,
"imdb_votes": 486411,
"premiere_ru": "2019-04-29",
"premiere_world": "2019-04-22",
"actors": [
"Роберт Дауни мл.",
"Крис Эванс",
"Марк Руффало",
"Крис Хемсворт",
"Скарлетт Йоханссон",
"Джереми Реннер",
"Дон Чидл",
"Пол Радд",
"Бри Ларсон",
"Карен Гиллан"
],
"directors": [
"Энтони Руссо",
"Джо Руссо"
],
"producers": [
"Кевин Файги",
"Виктория Алонсо",
"Митчелл Белл"
],
"writers": [
"Кристофер Маркус",
"Стивен МакФили",
"Стэн Ли"
],
"composers": [
"Алан Сильвестри"
],
"editors": [
"Джеффри Форд",
"Мэттью Шмидт"
],
"designers": [
"Чарльз Вуд",
"Джулиан Эшби",
"Джим Барр"
],
"operators": [
"Трент Опалок"
]
}
}
]
}
Нужно вывести всё так:
Мстители: Финал
Дублированный
2019
и так далее всё.
СПАСИБО
Ребят привет!
Помогите вывести json в phpНужно вывести всё так:
Мстители: Финал
Дублированный
2019и так далее всё.
СПАСИБО
<?php
header('Content-Type: text/html; charset=utf-8');
?>
<iframe id="playerkodik" frameborder="0" style="width: 800px;height: 600px; display:none;"></iframe>
<hr>
<?php
$ch = curl_init("https://kodikapi.com/search?token=b7cc4293ed475c4ad1fd599d114f4435&title=".urlencode($_GET['name']));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
$output = curl_exec($ch);
$jsonfilm = json_decode($output,true);
for ($i=0; $i < count($jsonfilm['results']); $i++) {
echo "Имя: " . $jsonfilm['results'][$i]['title'] . "<br>";
echo "Оригинальное имя: " . $jsonfilm['results'][$i]['title_orig'] . "<br>";
echo "Перевод: " . $jsonfilm['results'][$i]['translation']['title'] . "<br>";
echo "Год: " . $jsonfilm['results'][$i]['year'] . "<br>";
echo "<a id=\"link".$i."\" data-stream=\"".$jsonfilm['results'][$i]['link']."\" onclick=\"play(".$i.");\" style=\"text-decoration: underline; color: blue; cursor: pointer;\">Смотреть</a>";
echo "<hr>";
}
echo "<br>";
?>
<script>
function play(id){
document.getElementById("playerkodik").src = document.getElementById("link"+id).dataset.stream;
document.getElementById("playerkodik").style.display = "block";
}
</script>
+ открыть спойлер<?php header('Content-Type: text/html; charset=utf-8'); ?> <iframe id="playerkodik" frameborder="0" style="width: 800px;height: 600px; display:none;"></iframe> <hr> <?php
А можно по этой ссылке вывести всё? https://kodikapi.com/search?token=b7cc4 … _data=true
пример хороший спасибо. ещё охота понять как вытянуть актёров, страны, жанры, режисёра
И как оставить одну озвучку на странице?
пример хороший спасибо. ещё охота понять как вытянуть актёров, страны, жанры, режисёра
И как оставить одну озвучку на странице?
это всё извлекается тем же методом в зависимости от данных, всё что нужно уже имеет ссылку на данные, всё что есть имеется в переменной $jsonfilm это массив $jsonfilm['results'] это главная область данных о фильмах или сериалах а дальше идёт индекс фильма от 0 и дальше как я понимаю по ссылки что вы дали на нужны актёры, актёры находятся по адресу material_data, $jsonfilm['results'][$i]['material_data'] смотрим какие скобки имеются [] или {} если {} то просто идём по именам $jsonfilm['results'][$i]['material_data']['actors'] и тут мы встречаем скобки [] это значит что тут имеется массив с индексом, но нет имени после индекса, значить нам нужно указать только индекс и через цикл foreach пройтись и вывести список разделяя каждый вывод запятой ну а дальше делаем вывод через echo или другими методами вызывая php в том месте где требуется вывод данных. пример выглядит так:
foreach ($jsonfilm['results'][$i]['material_data']['actors'] as $key => $value) {
$actors .= $value.", ";
}
?>
<div class="actors">
<? echo $actors; ?>
</div>
<?php
остальное по анологии где нужно выводить данные и какие. На счёт только одной озвучки то нужно проверять данные что приходят и в зависимости от той озвучки что нужно выводить. Вот примерно как будет выглядить запрос от клиента к скрипту:
$jsonfilm = json_decode($output,true);
$translate = $_GET['trans'];
for ($i=0; $i < count($jsonfilm['results']); $i++) {
if ($jsonfilm['results'][$i]['translation']['title'] == $translate || $translate == ''){
echo "Имя: " . $jsonfilm['results'][$i]['title'] . "<br>";
echo "Оригинальное имя: " . $jsonfilm['results'][$i]['title_orig'] . "<br>";
echo "Перевод: " . $jsonfilm['results'][$i]['translation']['title'] . "<br>";
echo "Год: " . $jsonfilm['results'][$i]['year'] . "<br>";
echo "<a id=\"link".$i."\" data-stream=\"".$jsonfilm['results'][$i]['link']."\" onclick=\"play(".$i.");\" style=\"text-decoration: underline; color: blue; cursor: pointer;\">Смотреть</a>" . "<br>";
foreach ($jsonfilm['results'][$i]['material_data']['actors'] as $key => $value) {
$actors .= $value.", ";
}
?>
<div class="actors">
<? echo $actors; ?>
</div>
<?php
echo "<hr>";
}
}
?name=Avengers:%20Endgame&trans=Дублированный
Если параметр trans пустой то выводятся все переводы а если указываем перевод то выводятся только те результаты что имеют перевод.
Так же можно ограничеть вывод только конкретного фильма если введённое названия верное:
$jsonfilm = json_decode($output,true);
$translate = $_GET['trans'];
for ($i=0; $i < count($jsonfilm['results']); $i++) {
if ($jsonfilm['results'][$i]['title'] == $_GET['name'] || $jsonfilm['results'][$i]['title_orig'] == $_GET['name']){
if ($jsonfilm['results'][$i]['translation']['title'] == $translate || $translate == ''){
echo "Имя: " . $jsonfilm['results'][$i]['title'] . "<br>";
echo "Оригинальное имя: " . $jsonfilm['results'][$i]['title_orig'] . "<br>";
echo "Перевод: " . $jsonfilm['results'][$i]['translation']['title'] . "<br>";
echo "Год: " . $jsonfilm['results'][$i]['year'] . "<br>";
echo "<a id=\"link".$i."\" data-stream=\"".$jsonfilm['results'][$i]['link']."\" onclick=\"play(".$i.");\" style=\"text-decoration: underline; color: blue; cursor: pointer;\">Смотреть</a>" . "<br>";
foreach ($jsonfilm['results'][$i]['material_data']['actors'] as $key => $value) {
$actors .= $value.", ";
}
?>
<div class="actors">
<? echo $actors; ?>
</div>
<?php
echo "<hr>";
}
}
}
если напрягают запятые на последних результатах то ставим ограничения или делать работу с помощью функции:
function filter($data){
foreach ($data as $key => $value) {
if ((int)$key >= count($data)-1)
$result .= $value;
else
$result .= $value.", ";
}
return $result;
}
выводить можно так
<? echo "Актёры: " . filter($jsonfilm['results'][$i]['material_data']['actors']); ?>
меняем имя actors на тот список что требуется вывести.
Получилось так: https://davidbot.000webhostapp.com/jeso … no=1063128
А если к примеру отсутствует постер,можно вывести сообщение о его отсутствии?
Или заменить на свою ссылку с картинкой.
Чтобы отправить ответ, вы должны войти или зарегистрироваться