metafilm
v0.0.13
Published
Getting metadata information about films and TV shows (title, actors, genres, etc.) from IMDb, TMDb, Kinopoisk, Douban
Downloads
20
Maintainers
Keywords
Readme
What is metafilm
?
Getting metadata information about films and TV shows (title, actors, genres, etc.) from IMDb, TMDb, Kinopoisk, Douban
Installation
npm i metafilm
Usage
Import the library in your code:
const metafilm = require('metafilm');
IMDb
- Movie from
imdb.com
metafilm.id({imdb_id: '6146586'}).then(movie => {
console.log(movie);
}).catch(console.error);
// alternative (use string ID '6146586' or 'tt6146586' or 'imdb6146586')
metafilm.id('6146586').then(movie => {
console.log(movie);
}).catch(console.error);
- Movie from
omdbapi.com
(get apikey)
metafilm.id({imdb_id: '5884052', imdb_key: 'apikey'}).then(movie => {
console.log(movie);
}).catch(console.error);
// alternative (use string ID '5884052' or 'tt5884052' or 'imdb5884052')
metafilm.id('tt5884052', null, 'apikey').then(movie => {
console.log(movie);
}).catch(console.error);
- TV Series from
imdb.com
metafilm.id({imdb_id: '9561862', season: 1}).then(tv => {
console.log(tv);
}).catch(console.error);
// alternative (use string ID '9561862' or 'tt9561862' or 'imdb9561862')
metafilm.id('imdb9561862', '1').then(tv => {
console.log(tv);
}).catch(console.error);
- TV Series from
omdbapi.com
(get apikey)
metafilm.id({imdb_id: '9253866', season: '1', imdb_key: 'apikey'}).then(tv => {
console.log(tv);
}).catch(console.error);
// alternative (use string ID '9253866' or 'tt9253866' or 'imdb9253866')
metafilm.id('9253866', [1], 'apikey').then(tv => {
console.log(tv);
}).catch(console.error);
TMDb
- Movie from
themoviedb.org
(get api_key)
metafilm.id({tmdb_id: '299534', tmdb_key: 'api_key'}).then(movie => {
console.log(movie);
}).catch(console.error);
// alternative (use integer ID 299534 or string ID 'tmdb299534')
metafilm.id(299534, null, 'api_key').then(movie => {
console.log(movie);
}).catch(console.error);
- TV Series from
themoviedb.org
(get api_key)
metafilm.id({tmdb_id: '82883', season: [1], tmdb_key: 'api_key'}).then(tv => {
console.log(tv);
}).catch(console.error);
// alternative (use integer ID 82883 or string ID 'tmdb82883')
metafilm.id('tmdb82883', 1, 'api_key').then(tv => {
console.log(tv);
}).catch(console.error);
Douban
- Movie/TV Series from
movie.douban.com
metafilm.id({douban_id: '26662282'}).then(movie => {
console.log(movie);
}).catch(console.error);
// alternative (use string ID 'douban26662282')
metafilm.id('douban26662282').then(movie => {
console.log(movie);
}).catch(console.error);
Kinopoisk
- Movie/TV Series from
kinopoisk.ru
It is recommended to use the
cookie
setting, otherwise your requests may be blocked.
metafilm.id({kp_id: '1047883'}).then(movie => {
console.log(movie);
}).catch(console.error);
// alternative (use string ID 'kp1047883')
metafilm.id('kp1047883').then(movie => {
console.log(movie);
}).catch(console.error);
From all sources
- Movie/TV Series from
imdb.com
,omdbapi.com
,themoviedb.org
,kinopoisk.ru
metafilm.id({
"imdb_id": "0944947",
"tmdb_id": 1399,
"douban_id": 26584183,
"kp_id": "464963",
"season": [7,8],
"tmdb_key": "e547e17d4e91c3e62a571656cd1ccaff",
"imdb_key": "966f4f4f"
}).then(tv => {
console.log(tv);
}).catch(console.error);
Output data
- shortened output (more actors, translations, episodes)
{
"imdb_id":"0944947",
"tmdb_id":"1399",
"douban_id":"3016187",
"kp_id":"464963",
"facebook_id":"GameOfThrones",
"instagram_id":"gameofthrones",
"twitter_id":"GameOfThrones",
"name":"Game of Thrones | Игра престолов | 冰與火之歌:權力遊戲",
"premiere":"2011-04-17",
"year":2011,
"genres":[
"14",
"1",
"12",
"26",
"3",
"27"
],
"countries":[
"US",
"GB"
],
"imdb_rating":95,
"imdb_vote":1443985,
"tmdb_rating":82,
"tmdb_vote":5599,
"douban_rating":94,
"douban_vote":231688,
"kp_rating":90,
"kp_vote":249095,
"rt_rating":0,
"metacritic_rating":0,
"image":{
"sm":"https://image.tmdb.org/t/p/w300/qsD5OHqW7DSnaQ2afwz8Ptht1Xb.jpg",
"md":"https://image.tmdb.org/t/p/w780/qsD5OHqW7DSnaQ2afwz8Ptht1Xb.jpg",
"lg":"https://image.tmdb.org/t/p/w1280/qsD5OHqW7DSnaQ2afwz8Ptht1Xb.jpg",
"og":"https://image.tmdb.org/t/p/original/qsD5OHqW7DSnaQ2afwz8Ptht1Xb.jpg"
},
"people":[
{
"department":"actors",
"job":"actor",
"name":"Emilia Clarke | 艾米莉亚·克拉克 | Эмилия Кларк",
"character":"Daenerys Targaryen",
"imdb_id":"3592338",
"tmdb_id":"1223786",
"douban_id":"1314668",
"kp_id":"1830611",
"gender":1,
"translations":[
{
"country":"US",
"language":"en",
"name":"Emilia Clarke"
},
{
"country":"CN",
"language":"zh",
"name":"艾米莉亚·克拉克"
},
{
"country":"RU",
"language":"ru",
"name":"Эмилия Кларк"
}
],
"image":{
"sm":"https://image.tmdb.org/t/p/w45/j7d083zIMhwnKro3tQqDz2Fq1UD.jpg",
"md":"https://image.tmdb.org/t/p/w185/j7d083zIMhwnKro3tQqDz2Fq1UD.jpg",
"lg":"https://image.tmdb.org/t/p/h632/j7d083zIMhwnKro3tQqDz2Fq1UD.jpg",
"og":"https://image.tmdb.org/t/p/original/j7d083zIMhwnKro3tQqDz2Fq1UD.jpg"
}
},
{
"department":"actors",
"job":"actor",
"name":"John Bradley | 约翰·C·布莱德利 | Джон Брэдли",
"character":"Samwell Tarly",
"imdb_id":"4263213",
"tmdb_id":"1010135",
"douban_id":"1314665",
"kp_id":"2353578",
"gender":2,
"translations":[
{
"country":"US",
"language":"en",
"name":"John Bradley"
},
{
"country":"CN",
"language":"zh",
"name":"约翰·C·布莱德利"
},
{
"country":"RU",
"language":"ru",
"name":"Джон Брэдли"
}
],
"image":{
"sm":"https://image.tmdb.org/t/p/w45/yrRfy2LUab8i6bjEb0LFEe0wDK2.jpg",
"md":"https://image.tmdb.org/t/p/w185/yrRfy2LUab8i6bjEb0LFEe0wDK2.jpg",
"lg":"https://image.tmdb.org/t/p/h632/yrRfy2LUab8i6bjEb0LFEe0wDK2.jpg",
"og":"https://image.tmdb.org/t/p/original/yrRfy2LUab8i6bjEb0LFEe0wDK2.jpg"
}
}
],
"translations":[
{
"country":"US",
"language":"en",
"name":"Game of Thrones",
"overview":"Seven noble families fight...",
"poster":{
"sm":"https://m.media-amazon.com/images/M/MV5BMjA5NzA5NjMwNl5BMl5BanBnXkFtZTgwNjg2OTk2NzM@._V1_UX100_.jpg",
"md":"https://m.media-amazon.com/images/M/MV5BMjA5NzA5NjMwNl5BMl5BanBnXkFtZTgwNjg2OTk2NzM@._V1_UX200_.jpg",
"lg":"https://m.media-amazon.com/images/M/MV5BMjA5NzA5NjMwNl5BMl5BanBnXkFtZTgwNjg2OTk2NzM@._V1_UX400_.jpg",
"og":"https://m.media-amazon.com/images/M/[email protected]"
}
},
{
"country":"RU",
"language":"ru",
"name":"Игра престолов",
"overview":"К концу подходит время благоденствия...",
"poster":{
"sm":"https://st.kp.yandex.net/images/film_iphone/iphone90_464963.jpg",
"md":"https://st.kp.yandex.net/images/film_iphone/iphone180_464963.jpg",
"lg":"https://st.kp.yandex.net/images/film_iphone/iphone360_464963.jpg",
"og":"https://st.kp.yandex.net/images/film_big/464963.jpg"
}
},
{
"country":"CN",
"language":"zh",
"name":"权力的游戏",
"overview":"故事背景是一个虚构的世界...",
"poster":{
"sm":"https://img1.doubanio.com/view/photo/s_ratio_poster/public/p896064368.jpg",
"md":"https://img1.doubanio.com/view/photo/s_ratio_poster/public/p896064368.jpg",
"lg":"https://img1.doubanio.com/view/photo/m_ratio_poster/public/p896064368.jpg",
"og":"https://img1.doubanio.com/view/photo/l_ratio_poster/public/p896064368.jpg"
}
}
],
"episodes":[
{
"imdb_id":"5654088",
"name":"Dragonstone",
"premiere":"2017-07-16",
"season":7,
"episode":1,
"imdb_rating":87,
"imdb_vote":37904,
"tmdb_rating":83,
"tmdb_vote":66,
"overview":"Jon organizes the defense of the North...",
"image":{
"sm":"https://image.tmdb.org/t/p/w92/3SB4PUzZAnY6HnZbVbktIZoopGs.jpg",
"md":"https://image.tmdb.org/t/p/w185/3SB4PUzZAnY6HnZbVbktIZoopGs.jpg",
"lg":"https://image.tmdb.org/t/p/w300/3SB4PUzZAnY6HnZbVbktIZoopGs.jpg",
"og":"https://image.tmdb.org/t/p/original/3SB4PUzZAnY6HnZbVbktIZoopGs.jpg"
}
},
{
"imdb_id":"5655178",
"name":"Stormborn",
"premiere":"2017-07-23",
"season":7,
"episode":2,
"imdb_rating":90,
"imdb_vote":31803,
"tmdb_rating":82,
"tmdb_vote":46,
"overview":"Daenerys receives an unexpected visitor...",
"image":{
"sm":"https://image.tmdb.org/t/p/w92/dVf1gfi80js9qyxm78479o4RNUr.jpg",
"md":"https://image.tmdb.org/t/p/w185/dVf1gfi80js9qyxm78479o4RNUr.jpg",
"lg":"https://image.tmdb.org/t/p/w300/dVf1gfi80js9qyxm78479o4RNUr.jpg",
"og":"https://image.tmdb.org/t/p/original/dVf1gfi80js9qyxm78479o4RNUr.jpg"
}
}
]
}
How to get genres and countries?
npm i colage
const colage = require('colage');
let en_countries = colage.co([ 'RU', 'DE', 'CN' ], 'en');
console.log(en_countries); //=> [ 'Russia', 'Germany', 'China' ]
let en_languages = colage.la([ 'ru', 'de', 'zh' ], 'en');
console.log(en_languages); //=> [ 'Russian', 'German', 'Chinese' ]
let en_genres = colage.ge([ '8', '21', '1' ], 'en');
console.log(en_genres); //=> [ 'comedy', 'musical', 'action' ]
API
metafilm.id(id, [season], [key])
id
Type: Object|String|Number
{
"imdb_id": "String|Number",
"tmdb_id": "String|Number",
"douban_id": "String|Number",
"kp_id": "String|Number",
"season": "String|Number|Array",
"cookie": {
"imdb": "Array|String",
"douban": "Array|String",
"kp": "Array|String"
},
"proxy": {
"host": "String",
"port": "Number",
"auth": {
"username": "String",
"password": "String"
}
}
}
Example:
{
"imdb_id": "0944947",
"tmdb_id": 1399,
"douban_id": 26584183,
"kp_id": "464963",
"season": [1,2,3,4,5,6,7,8],
"tmdb_key": "e547e17d4e91c3e62a571656cd1ccaff",
"imdb_key": "966f4f4f",
"cookie": {
"imdb": [
{
"name": "hello",
"value": "world"
}
],
"douban": "hello=world;hi=baby",
"kp": [
{
"name": "hello",
"value": "world"
},
{
"name": "hi",
"value": "baby"
}
]
},
"proxy": {
"host": "192.168.0.1",
"port": 80,
"auth": {
"username": "login",
"password": "pass"
}
}
}
How to use cookie?
- Install Chrome extensions EditThisCookie
- Log in with your username on the website (
imdb
,douban
,kp
) - Click on the cookie icon, then
Export
- Insert an array of data in the field
{cookie:{website:[cookie]}}
season
Type: String|Number|Array
Required to determine the series (season specified) or movie (season not specified).
Example: '3'
,'3,4,5'
,6
,[7]
,[8,9]
key
Type: String
Required to receive data from TMDb and OMDb.
Example: 'e547e17d4e91c3e62a571656cd1ccaff'
,'966f4f4f'
Running tests
npm test