@Shura0102

Как брать инфу по id с кинопоиска?

Здравствуйте! Беру инфу о фильме с кинопоиска по такому запросу

function get_kinopoisk_data() {
let kinopoisk_id = document.getElementById("glink").value;
let xhr = new XMLHttpRequest();
xhr.open('GET', `https://kinopoiskapiunofficial.tech/api/v2.1/films...`, false);
xhr.setRequestHeader('X-API-KEY', '05e15730-5d36-4a7b-9cb8-1a9034ed276c');
xhr.send();
fill_other_fields(JSON.parse(xhr.responseText));
}

function fill_other_fields(response) {
console.log(response);
document.getElementById("sfF1 title").value = response.data.nameRu ?? "";
document.getElementById("brief").value = response.data.description ?? "";
document.getElementById("sfF6").value = response.data.ratingAgeLimits ?? "";
document.getElementById("slogan").value = response.data.slogan ?? "";
document.getElementById("sfF13").value = response.data.filmLength ?? "";
document.getElementById("sfF150").value = response.data.nameEn ?? "";
document.getElementById("sfF14").value = response.data.actors ?? "";
document.getElementById("sfF15").value = response.data.budget ?? "";
document.getElementById("sfF8").value = response.data.seasons.length ?? "";
document.getElementById("message").value = response.data.facts ?? "";
document.getElementById("sfF7").value = response.data.premiereRu ?? "";
document.getElementById("distributors").value = response.data.distributors ?? "";
document.getElementById("input_extrafl10").value = response.data.premiereWorld ?? "";
document.getElementById("input_extrafl8").value = response.data.posterUrl ?? "";
document.getElementById("input_extrafl9").value = response.data.posterUrlPreview ?? "";
document.getElementsByClassName("manFlFlt1").value = response.data.country;
let year_options = Array.from(document.querySelectorAll('.manFlFlt1 option'));
year_options.find(c => c.text == response.data.year).selected = true;


,но не получается получить список актёров,режиссёра и кол-во серий. Подскажите, что я делаю не так?
  • Вопрос задан
  • 129 просмотров
Пригласить эксперта
Ответы на вопрос 1
xotkot
@xotkot
хорошо есть и хорошо весьма
но не получается получить список актёров,режиссёра и кол-во серий. Подскажите, что я делаю не так?
во первых укажите используемый язык в тегах к вопросу, во вторых дублирование своего вопроса(уже третий) плохой тон и обычно карается модераторами, в третьих всю необходимую информацию можно посмотреть в документации

ради интереса сделал себе скрипт для вывода информации на консоль
может кому еще сгодится
#!/usr/bin/env bash
set -o errexit

BASE_URL="https://kinopoiskapiunofficial.tech/api"
API_KEY="05e15730-5d36-4a7b-9cb8-1a9034ed276c"
KEYWORD=$(echo "$@" | jq -Rr '@uri')

# получаем список фильмов по ключевому слову
get_keyword=$(curl -s -X GET "$BASE_URL/v2.1/films/search-by-keyword?keyword=$KEYWORD&page=1" -H "accept: application/json" -H "X-API-KEY: $API_KEY")

# запоминаем id выбранного фильма
FilmID=$(echo "$get_keyword" | jq -r '.films[] | "\(.filmId);\(.year);\(.nameRu);\(.nameEn)"' | column -t -s';' | sk | awk '{print $1}')
[[ "$FilmID" == "" ]] && exit


# получаем данные о фильме по его id
get_film_data=$(curl -s	-X GET "$BASE_URL/v2.1/films/$FilmID" -H "accept: application/json" -H "X-API-KEY: $API_KEY")

echo
echo "$get_film_data" | jq -r '.data | "\t*** \(.nameRu) (\(.year)) ***"'
echo "$get_film_data" | jq -r '.data | "\t    [ \(.nameEn) ]"'
echo
echo
echo "             О фильме"
echo =====================================================
x="Год производства;"$(echo "$get_film_data" | jq -r '.data.year')
x=$x"\nСтрана;"$(      echo "$get_film_data" | jq -r '.data.countries[].country' | sed -z 's/\n/, /g' | sed 's/..$//')
x=$x"\nЖанр;"$(        echo "$get_film_data" | jq -r '.data.genres[].genre' | sed -z 's/\n/, /g' | sed 's/..$//')
x=$x"\nВремя;"$(       echo "$get_film_data" | jq -r '.data.filmLength' | awk -F: '{print $1*60+$2" минут / "$0}')
echo -e "$x" | column -t -s';'
echo
echo
echo


echo "             Описание"
echo =====================================================
echo "$get_film_data" | jq -r '.data.description' | par -w 60d
echo
echo
echo


echo "             Эпизоды"
echo =====================================================
echo "$get_film_data" | jq -r '.data.seasons[].episodes[] | "\(.seasonNumber);\(.episodeNumber);\(.nameRu);\(.nameEn)"' | column -t -s';'
echo
echo
echo


# получаем информацию о людях работавших над фильмом
get_staff=$(curl -s	-X GET "$BASE_URL/v1/staff?filmId=$FilmID" -H "accept: application/json" -H "X-API-KEY: $API_KEY")


echo "             Над фильмом работали"
echo =====================================================
echo "$get_staff" | jq -r '.[] | "\(.professionText);\(.nameRu);\(.nameEn)"' | column -t -s';'
echo
echo
echo

exit

для запуска нужно передать в скрипт ключевое слово(фразу) по которой с сервера будет запрошена информация по совпадающим фильмам, после чего выдаст список в котором клавишами(верх, низ) выбираем нужный фильм.
При выборе фильма с сервера автоматом запросится его id и выдаст структурированную информацию по фильму, его описанию, эпизодах и актёрах
для работы помимо bash необходимы утилиты curl, skim, jq, par.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы