0.2.15 • Public • Published

    MetaInfo (v0.2.15)

    This project was renamed from "VidInfo".

    Install: npm install metainfo

    This project is Unlicensed. In other words, I don't care what you do with it. However, if you make something interesting, I would like to check it out.

    Build Status Bitdeli Badge

    Video APIs: (6) (1) (6) (6) (1,3) (1) (1,2) (2,3) (2) (6) (5) (6) (6) (6) (6) (1) (6) (1) (1,2,3) (2) (2) (6) (1) (4) (6)

    1) API key required. See "bambuser" example at the bottom.
    2) This method is BETA.
    3) More information available. See "More Information" below.
    4) Requires basic auth (username:password). See "wista" example at the bottom.
    5) Located in "./apis/obsolete/" due to API changes, removals, or extended down time.
       Just because it's located in obsolete does not mean a replacement hasn't been created.
    6) Requires an API key.

    Audio APis:

    Image APIs:

    Misc APIs: (1) (1) (2)

    1) Need to add API key support.
    2) More information available. See "More Information" below.

    WARNING: Do NOT enable embedly (./apis/embedly.js) with any other APIs!
    Embedly is a HUGE oEmbed provider and as such supports some of the APIs already in use.
    Because of this there are conflicts. To generate the embedly.js file, see functions below.
    After you run the embedly generator, a new file will be created at: ./apis/embedly.js
    Embedly is too massive to display what websites it supports, so you'll have to read embedly.js yourself
    or check the providers list here:
    Services URL:
    API key required, signup here:

    Experimental APIs: (1)

    1) API key required. See "bambuser" example at the bottom.

    NOTE: These now require xml2json. (

    More Information:

        IMDB does not have an API so use of a 3rd party API is required.
        Please see for more information.
        Facebook requires an access token to be generated. The generator makes an access token
        that lasts for 60 days. You can revisit the generator to find out when your token will expire.
        I will look for a better method later on, but for now this is how it has to be.
        This API is massive and can return a lot of information. I need to rewrite parts of MetaInfo to support this.
        For now, extended summary for Movies and TV shows are supported.
        There are many metadata methods this API supports, right now I've only done builds and jobs. I'm not at all sure
        when or if I'll ever add support for any of the other methods.
        When using a shortcut, the ID must be passed as "builds/<number>" or "jobs/<number>". (Examples: builds/18234463, jobs/18234467)


    • Find more API's to use. -- Please suggest some. (This should never be finished!)
    • Create tests. (Started, need to figure out async with assert. "npm test")
    • Improve basic auth and API key support.
    • Make a better facebook access token generator. (
    • Add support for more API features besides summaries. NOTE: I might just make multiple API files because this could be complicated... -- I've done this already for places like and and -- We'll see what happens!
    • Document things better... This README is a mess! (Did I do this?)


    apikey - The API key, when needed.
    basicauth - Your basic auth `username:password`, when needed.
    formatter - The formatter to use on your JSON data. See ./examples/youtubecom.js
    (detectAll options)
    nocheck - Return information on a video more than once if found multiple times. See ./examples/detectAll.js
    keys -  An object with API keys.
    Example: {keys:{bambuser:'EXAMPLE-KEY',themoviedb:'ANOTHER-KEY'},nocheck:true}


    format - Use the formatter, true or false.
    enabled - Path to enabled API configs. -- Default: ./apis/enabled/
    disabled - Path to disabled API configs. -- Default: ./apis/disabled/

    Settings usage:

    var MetaInfo = require('metainfo')({format:true});

    Shortcuts:                   23hq, 23hqcom                arch, archive, archiveorg                ani, animoto, animotocom                aclip, anyclip, anyclipcom               bam, bambuser, bambusercom                    blip, bliptv*:          chumor, college, collegehumor, collegehumorcom          comcen, comedycentral, comedycentralcom                   coub, coubcom                crackle, cracklecom            dmo, dailymo, dailymotion, dailymotioncom             dart, deviant, deviantart, deviantartcom                 dotsub, dotsubcom               fbook, fbvideo, facebook, facebookcom                 flickr, flickrcom             ford, funnyor, funnyordie, funnyordiecom              gbomb, giantbomb, giantbombcom            gist, gistgithub, gistgithubcom                 git, github, githubcom                   hulu, hulucom                 ifixit, ifixitcom                   imdb, imdbcom                   jest, jestcom (stream):         jtvs, jstream, justintvstream (video clip):     jtvc, jclip, justintvclip               lleak, liveleak, liveleakcom                     mag, magma               mefee, mefeedia, mefeediacom*:              meta, mcafe, metacafe, metacafecom                 mix, mixbit, mixbitcom               mixc, mixcloud, mixcloudcom*:            mclips, movieclips, movieclipscom*:                   muzu, muzutv                     nfb, nfbca                  npm, npmjs, npmjsorg                ofm, official, officialfm                 onaol, onaolcom                    qik, qikcom              revis, revision3, revision3com                scrn, screenr, screenercom             sshare, slideshare, slidesharenet                  snotr, snotrcom              scam, socialcam, socialcamcom             sndcdn, soundcloud, soundcloudcom                spotify, spotifycom                    ted, tedcom             tdb, tmdb, themoviedborg               onion, theonion, theonioncom*:         tadd, taddict, traileraddict, traileraddictcom         tapple, trailersapple, trailersapplecom (show/movie):      trakt, trakttv              travis, travisci, travisciorg (stream):         ttvs, tstream, twitchtvstream (video clip):     ttvc, tclip, twitchtvclip (stream):        utvs, ustream, ustreamtvstream (video clip):    utvc, uclip, ustreamtvclip                vidd, viddler, viddlercom               vjug, videojug, videojugcom                vlog, videolog, videologtv                  vimeo, vimeocom                    vine, vineco                  vzaar, vzaarcom             wct, webtra, wtravel, webcamstravel                 wistia, wistacom                  yahoo, yvideo, yahoocom                yt, youtube, youtubecom
    *  See "Experimental APIs" above.
    Examples:'ZRAr354usf8',console.log);'ZRAr354usf8',console.log); // YouTube
        MetaInfo.dmo('xycczk',console.log); // Dailymotion


    MetaInfo.detect(url[,callback[,options]]) - Parse a URL and create an object used for 'byURL'.
         See ./examples/detect.js
    MetaInfo.detectAll(string[,callback[,options]]) - Parse a string and return an object with all the IDs.
         Options: keys - The list of keys for APIs that might need them.
                  nocheck - Return information on a video more than once if found multiple times.
                  Example: {keys:{bambuser:'EXAMPLE-KEY',themoviedb:'ANOTHER-KEY'},nocheck:true}
         See ./examples/detectAll.js
    MetaInfo.byID(id,api,callback[,options]) - Connects to the (should be) correct API for video information.
         See ./examples/byid.js - Changed from "byid" for standardization.
    MetaInfo.byURL(url,callback[,options]) - Connects to the (should be) correct API for video information.
         See ./examples/byurl.js - Changed from "byurl" for standardization.
    MetaInfo.<apiname>(id,callback[,options]) -- Shortcut for 'byID'.
         See ./examples/byapi.js
    MetaInfo.getAPILocation(apiname) - Get the location of an API config file. The "apiname" is the full name, such as "youtubecom."
         Returns: {is:<true/false>,path:<location>,file:<filename>} -- "is" is in enabled (true) or disabled (false) folder.
    MetaInfo.enable(apiname[,nomove]) - Enable an API. The "apiname" is the full name, such as "youtubecom."
         NOTE: Moves <apiname> from ./apis/disabled/ to ./apis/enabled/ unless "nomove" is true.
    MetaInfo.disable(apiname[,nomove]) - Disable an API. The "apiname" is the full name, such as "youtubecom."
         NOTE: Moves <apiname> from ./apis/enabled/ to ./apis/disabled/ unless "nomove" is true.   
    MetaInfo.genEmbedly([callback[,services url]]) - Generate/update the embedly.js config from the services url.
          Services url:
          Callback arguments: {message:<string>,location:<string>,success:<boolean>}

    Example Usage - Look in "examples" folder for more examples.

    var MetaInfo = require('MetaInfo')({format:true});
    // YouTube -- Only return the title and published date, using 'formatter'.
    MetaInfo.byURL('',console.log,{formatter: function (data,cb) {
           var ret = {};
           if ('$t' in data.entry.title) {
              ret.title = data.entry.title.$t;
              if ('$t' in data.entry.published) {
                 ret.published = new Date(Date.parse(data.entry.published.$t));
    // YouTube by video ID.
    MetaInfo.byID('ZRAr354usf8','youtube',console.log,{formatter: function (data,cb) {
           var ret = {};
           if ('$t' in data.entry.title) {
              ret.title = data.entry.title.$t;
              if ('$t' in data.entry.published) {
                 ret.published = new Date(Date.parse(data.entry.published.$t));
    // 'byID' shortcut.
    MetaInfo.vimeo('61969130',console.log);'ZRAr354usf8',console.log);'ZRAr354usf8',console.log); // YouTube
    MetaInfo.trakt(["show","under-the-dome"],console.log); //
    // Bambuser (API Key required)
    MetaInfo.byURL('',function (obj) {
    // Wista (Basic auth required)
    MetaInfo.byURL('',function (obj,e) {
       if (!e) {
          console.log('(byapi) wista: '+JSON.stringify(obj)+'\n\n');
        } else {
          console.log('(byapi - ERROR) wista: '+JSON.stringify({error:true,message:obj})+'\n\n');
    // Facebook (requires access token -
    MetaInfo.byURL('',function (obj) {
    },{apikey:'ACCESS TOKEN'});
    // Trakt "byID", must pass an array. ["{:method}","{:id}"] -- Method is show or movie.
    // See for more information.
    MetaInfo.byID(["movie","after-earth-2013"],"trakt",function (obj) {
    MetaInfo.byID(["show","under-the-dome"],"trakt",function (obj) { 
    // 'detect' example. -- Prints video ID and API link in an object.
    // 'detectAll' example. Prints an object with multiple 'detect' objects.




    npm i metainfo

    DownloadsWeekly Downloads






    Last publish


    • louist