Git Product home page Git Product logo

movie-trailer's Introduction

Important

This library is considered feature-complete and will only receive updates for bug fixes. You may still create an issue if you have a feature request.

movie-trailer

npm version Maintainability Try movie-trailer on RunKit

Fetch movie trailer url(s): "Oceans Eleven" โž” https://www.youtube.com/watch?v=...

movie-trailer

Features

  • Fetch Youtube trailers for any movie or TV show
  • Return one or many trailer URLs
  • Use anywhere, browser or Node - UMD (Browser Support)
  • Works in React + NextJS client/server (uses isomorphic-fetch)
  • Async/await, Promise and Callback APIs

Install

Using NPM:

npm install --save movie-trailer

In the browser:

<!-- movieTrailer window global -->
<script type="text/javascript" src="https://unpkg.com/movie-trailer"></script>

(via Unpkg, or via JSDelivr)

Usage

const movieTrailer = require( 'movie-trailer' ) // or import movieTrailer from 'movie-trailer'

await movieTrailer( 'Up' )
//=> https://www.youtube.com/watch?v=...
TV Shows
movieTrailer('Shameless', {videoType: 'tv'})
//=> https://www.youtube.com/watch?v=...
Return an array of video IDs
movieTrailer( 'Oceans Eleven', {id: true, multi: true} )
  .then( response => console.log( response ) )
  
//=> [ 'XXXXXXXXX', 'XXXXXXXXX', ... ]
Both
movieTrailer( 'Oceans Eleven', {year: '1960', multi: true} )
  .then( response => console.log( response ) )

//=> [ https://www.youtube.com/watch?v=XXXXXXXXX, ... ]
Legacy-style search using release date year
movieTrailer( 'Oceans Eleven', 1960 )
  .then( response => console.log( response ) )

//=> http://path/to/trailer

API

movieTrailer(movie [, options ] [, callback])

  • movie

    Required

    Type: string

    Movie to search for. If searching with a tmdbId, pass null.

  • options

    Type: object

    • apiKey

      Type: string

      (optional) Use your own TMDB api key. You can get a free key here: https://developers.themoviedb.org/ .

      Use -a or --api_key on the CLI

    • id (false)

      Type: boolean

      (optional) Return only Youtube video IDs.

      Use -i or --id on the CLI

    • language

      Type: string (language code)

      (optional) Movie release language.

      Use -l or --language on the CLI

    • multi (false)

      Type: boolean

      (optional) Return an array of urls vs a single url.

      Use -m or --multi on the CLI

       movieTrailer( 'Oceans Eleven', { multi: true } )
    • tmdbId

      Type: string || number

      (optional) Search using a TMDB content ID instead of a search term

      Use -t or --tmdb_id on the CLI

       movieTrailer( null, { tmdbId: 161 } )  // Content ID for "Ocean's Eleven"
    • year

      Type: string || number

      (optional) Movie release year.

      Use -y or --year on the CLI

  • callback(error, response)

    Callback function.

     movieTrailer( 'Oceans Eleven', ( error, response ) => {
         console.log( response ); 
         //=> http://path/to/trailer
     } )

From the command line

$ npx movie-trailer --help

Usage
	$ npx movie-trailer movie 	

Options
	--api_key   -k   (optional) Your own TMDB API key: http://developers.themoviedb.org
	--id        -i   Return just the Youtube video ID.
	--language, -l   Specify a language code (eg: 'de_DE').
	--multi,    -m   Returns an array of URLs instead of a single URL.
	--tmdb_id   -t   Specify an explicit TMDB ID.
	--year,     -y   Specify a release year to search.

Example
	$ npx movie-trailer 'Oceans Eleven' -y 1960 -m
	//=> http://path/to/trailer

Related

License

This package uses data from TMDB. You may consult TMDB terms of service for usage rights.

MIT ยฉ Lacy Morrow

movie-trailer's People

Contributors

amilajack avatar dependabot[bot] avatar ismailazdad avatar lacymorrow avatar sum1112 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

movie-trailer's Issues

Fetching trailer by ID

Is there any way to call the second API request directly to fetch the trailer with the TMDB movie id? Do you expect to provide support for this soon?

Could this issue I am facing be due to not understanding how movie-trailer works?

Hello lacymorrow, I am trying to build a netflix clone for my portfolio as I have been teaching myself programming, I am using TMDB to create well, what I think looks like a pretty good netflix clone, at least for myself, anyways... I have the movies pulled from the database and I have a function that when I click on a movie it will run movie-trailer on it with it's id, that's fine and it I have it showing up and gives me an trailer url for most of the videos, but when I try to only add videos into movies array with the video url it doesn't work or it bugs out and says .map is not a function. Here is my code:

import React, { useEffect, useRef, useState } from "react";
import "./Row.css";
import axios from "./axios";
import ArrowForwardIosIcon from "@material-    ui/icons/ArrowForwardIos";
import YouTube from "react-youtube";
import movieTrailer from "movie-trailer";
import { ContactlessOutlined, MovieSharp } from "@material-    ui/icons";
function Row({ title, fetchUrl, isLargeRow = false }) {
  const [movies, setMovies] = useState([]);
  const [trailerUrl, setTrailerUrl] = useState("");
  const [trailerList, setTrailerList] = useState("");

  const base_url = "https://image.tmdb.org/t/p/original/";

  const posterRowRef = useRef();


  const handleClick = (movie) => {
console.log(movie.videoUrl);

if (trailerUrl) {
  setTrailerUrl("");
} else {
  console.log(movie);
  movieTrailer(null, {
    tmdbId: movie.id,
    apiKey: "***************************",
  }).then((url) => {
    console.log("URL", url);
  });
}
  };


  useEffect(() => {
    async function fetchData() {
      let request = await axios.get(fetchUrl);

      request.data.results.forEach((movie, index) => {
        movieTrailer(null, {
          tmdbId: movie.id,
          apiKey: "***************************",
        }).then((response) => {
          if (response == null) {
            movie["videoUrl"] = null;
          } else {
            movie["videoUrl"] = response;
            setMovies([...movies, movie]);
          }
        });
      });
      // setMovies(request.data.results);

      return request;
    }
    fetchData();
  }, [trailerUrl]);

  return (
<div className="row">
  <h2>{title}</h2>{" "}
  <div ref={posterRowRef} className="row__posters">
    {movies.map((movie, index) => {
      // console.log(trailerList[index]?.videoUrl);
      return (
        <img
          key={movie.id}
          onClick={() => handleClick(movie)}
          className={`row__poster ${isLargeRow && "row__posterLarge"}`}
          src={`${base_url}${
            isLargeRow ? movie.poster_path : movie.backdrop_path
          }`}
          alt=""
        />
      );
    })}
  </div>
</div>
  );
}

export default Row;

Not sure if this is not the most appropriate place, but I just really need help I am not sure if this is because I don't understand how to add to an array in React, or maybe it something to do with movie-trailer needing to be async or something with a promise, idk I am just stuck and have been working for 2 days any help would be appreciated!

Other languages

Hi,
nice tool. I wonder if there is a way to get trailers only in a specific language, e.g. german.
Even for german movie titles i get trailers with english audio or english subtitles burned in.

Greetz
khannover

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.