Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/lacymorrow/movie-trailer

📽 Fetch movie trailers: "Crash" ➔ http://path/to/trailer
https://github.com/lacymorrow/movie-trailer

api callback cli javascript lookup movie movie-trailer nextjs node npm react tmdb trailer

Last synced: 10 days ago
JSON representation

📽 Fetch movie trailers: "Crash" ➔ http://path/to/trailer

Awesome Lists containing this project

README

        

> [!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 [](https://www.patreon.com/bePatron?u=55065733)
[![npm version](https://badge.fury.io/js/movie-trailer.svg)](https://badge.fury.io/js/movie-trailer) [![Maintainability](https://api.codeclimate.com/v1/badges/8dce3031d73c7beb9c98/maintainability)](https://codeclimate.com/github/lacymorrow/movie-trailer/maintainability) [![Try movie-trailer on RunKit](https://badge.runkitcdn.com/movie-trailer.svg)](https://npm.runkit.com/movie-trailer)

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

[![movie-trailer](https://github.com/lacymorrow/movie-trailer/raw/master/demo.svg?sanitize=true)]()

#### [Try it on RunKit](https://runkit.com/lacymorrow/movie-trailer) _([Output](https://runkit.io/lacymorrow/movie-trailer/branches/master?search=Avatar))_

## Features
* Fetch Youtube trailers for any movie or TV show
* Return one or many trailer URLs
* Use anywhere, browser or Node - UMD _([Browser Support](https://caniuse.com/#feat=fetch))_
* Works in React + NextJS client/server (uses [isomorphic-fetch](https://www.npmjs.com/package/isomorphic-fetch))
* Async/await, Promise and Callback APIs

## Install

Using [NPM](https://npmjs.com):

```bash
npm install --save movie-trailer
```

In the browser:

```html

```
(via Unpkg, or via [JSDelivr](https://cdn.jsdelivr.net/npm/movie-trailer/index.min.js))

## Usage

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

await movieTrailer( 'Up' )
//=> https://www.youtube.com/watch?v=...
```

##### TV Shows
```js
movieTrailer('Shameless', {videoType: 'tv'})
//=> https://www.youtube.com/watch?v=...
```

##### Return an array of video IDs
```js
movieTrailer( 'Oceans Eleven', {id: true, multi: true} )
.then( response => console.log( response ) )

//=> [ 'XXXXXXXXX', 'XXXXXXXXX', ... ]
```

##### Both
```js
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
```js
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_

```js
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_

```js
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.

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

#### From the command line

```bash
$ 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

* [album-art](https://github.com/lacymorrow/album-art)
* [movie-art](https://github.com/lacymorrow/movie-art)
* [movie-info](https://github.com/lacymorrow/movie-info)

## License

This package uses data from TMDB. You may consult [TMDB terms of service](https://www.themoviedb.org/documentation/api/terms-of-use) for usage rights.

[MIT](http://opensource.org/licenses/MIT) © [Lacy Morrow](http://lacymorrow.com)