lacymorrow/movie-trailer

View on GitHub
README.md

Summary

Maintainability
Test Coverage
> [!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 [<img src="https://github.com/lacymorrow/crossover/raw/master/src/static/meta/patreon-button.webp" style="height:40px;" height="40" align="right" />](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
<!-- movieTrailer window global -->
<script type="text/javascript" src="https://unpkg.com/movie-trailer"></script>
```
(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)