Рубрики
Без рубрики

Как получить официальный фильм Плакат с перестановкой открытого источника

Вы знаете имя вашего любимого фильма, так как можно было бы получить любые официальные … Теги с JavaScript, Opensource, учебником.

Вы знаете название вашего любимого фильма, так как можно было бы в состоянии получить любой официальный плакат фильма, только основанный на названии фильма? Хотя это может быть личный забавный проект для вас и ваших друзей, вы также можете быть в бизнесе, где можно получить изображение на основе связанного имени, может быть полезным – скажем, в маркетинге вы хотите вызвать изображение продукта, просто используя название продукта. С Перестановка Рамки интеграции с открытым исходным кодом , вы можете легко сделать это, настроив конечную точку API, чтобы получить изображение, или, как в нашем примере ниже, плакат фильма.

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

Давайте построим это

Это двухступенчатый процесс. Код сначала использует разъем реестра развлекательного идентификатора Resherffleffleffleffuls (EIDR) для разрешения имени фильма в стандартизированный идентификатор фильма. Затем он использует фильмы В любом месте API, чтобы посмотреть на официальное изображение плаката фильма с данным ID.

См. Ссылки для полной документации:

Давайте начнем при создании приложения перестановка и Три разъема, перечисленные выше.

// Initialize the Reshuffle application and connectors
const app = new Reshuffle();
const eidr = new EIDRConnector(app);
const http = new HttpConnector(app);
const ma = new MoviesAnywhereConnector(app);

Используя метод ON () разъема HTTP, мы будем слушать запрос GET HTTP на пути «/». Внутри перестройки запрос преобразуется в событие.

http.on({ method: "GET", path: "/" }, async ({ req, res }) => {
  // Get the movie name from the query string
  const name = req.query.name;
  if (typeof name !== "string" || name.trim().length === 0) {
    return res.status(400).send(`Invalid movie name: ${name}`);
  }
  const nm = name.trim();

  // Get the image width from the query string, or default to 400
  const width = req.query.width || 400;
  const wd = typeof width === "string" ? parseInt(width, 10) : width;
  if (typeof wd !== "number" || isNaN(wd) || wd <= 1 || 8192 < wd) {
    return res.status(400).send(`Invalid width: ${wd}`);
  }

Движение вперед с действительным именем фильма, мы будем использовать разъем EIDR с его SmaseQuery Способ разрешить прилагаемое имя в ID EIDR.

  • Для получения дополнительной информации о объекте, переданном Производитель , пожалуйста, посмотрите на Прочти меня
  // The following blocks of code will follow directly after the previous, until it reaches the final `});`
  // Lookup the movie name in EIDR. If the movie is found, we get back a unique ID
  const movies = await eidr.simpleQuery({
    name: nm,
    movie: true,
    valid: true,
    StructuralType: "Performance",
  });
  if (movies.length < 1) {
    return res.status(404).send(`Movie not found: ${nm}`);
  }
  const id = movies[0].ID;
  // The movies array may contain multiple objects that reference the same movie, but with a different EIDR ID, we take [0] since they will all point to the same title. 

Если запрос не находит совпадение с указанным именем фильма, он будет разрешен в пустое массив, здесь есть условный блок, чтобы обрабатывать этот случай.

Когда запрос проходит проверку выше, мы переходим к тому, где мы будем использовать ID EIDR вместе с фильмами в любом месте разъема. Имейте в виду, не все фильмы являются частью фильмов в любом месте сервиса, поэтому некоторые могут быть разрешены в неопределенные.

  // Lookup the movie ID in Movies Anywhere. Movies Anywhere's title service
  // provides metadata for movies, including a URL for the poster image
  const title = await ma.getTitleByEIDR(id);
  if (!title) {
    return res.status(404).send(`Movie not found: ${nm}`);
  }

Теперь, когда мы нашли фильм с ID EIDR ID, мы создадим URL с помощью объекта, разрешенного и возвращаем изображение в ответ HTTP.

  // Fetch the image
  const url = `https:${title.boxart}.jpg?w=${Math.round(wd)}`;
  const rs = await fetch(url);
  if (rs.status !== 200) {
    return res.status(500).send(`Unable to load poster image: ${nm}`);
  }
  // Return the image in the HTTP response
  const blob = await rs.blob();
  return res
    .set({ "Content-Type": blob.type, "Content-Length": blob.size })
    .send(Buffer.from(await blob.arrayBuffer()));

//end
});

Наконец, нам нужно запустить приложение перестановки.

app.start(8000);

Попробуйте это

Если вы скопировали код из репо Установите пример и запустите сервер перестановки:

npm install reshuffle-movieposter-example
npm run start

Это начнет веб-сервер в локальном порте 8000. Затем укажите свой браузер к локальному URL ( http://localhost: 8000/? Name = superman ), чтобы увидеть рамку плаката.

Это должно выглядеть так:

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

Поделитесь с нами вашими мыслями

Перестановка постоянно слушает то, что нужно и желание наших разработчиков. Не видите разъем к сервису, который вы хотели бы интегрировать? Отправить Tweet на @Reshffhffffhffhffhffhfhq Чтобы сообщить нам, какой разъем вы хотели бы, чтобы мы разработали дальше.

Оригинал: “https://dev.to/alanblee/how-to-retrieve-a-movie-s-official-poster-with-reshuffle-open-source-2inf”