Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
mayankchd committed Mar 19, 2016
1 parent e0ac938 commit 9306e0c
Show file tree
Hide file tree
Showing 3 changed files with 133 additions and 0 deletions.
11 changes: 11 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# editorconfig.org
root = true

[*]

charset = utf-8
end_of_line = lf
indent_size = 2
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
96 changes: 96 additions & 0 deletions cli.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
#!/usr/bin/env node
'use strict';

var program = require('commander');
var chalk = require('chalk');
var elegantSpinner = require('elegant-spinner');
var logUpdate = require('log-update');
var fetch = require('isomorphic-fetch');
var Promise = require('es6-promise').Promise;

var frame = elegantSpinner();

var propsToShow = [
'Title', 'Year', 'Released', 'Runtime',
'Genre', 'Director', 'Writer', 'Actors',
'Plot', 'Language', 'Country', 'Awards',
'Metascore', 'imdbRating', 'tomatoMeter',
'BoxOffice', 'Production'
];

var propsToCompare = [
'Title', 'Year', 'Released', 'Runtime',
'Genre', 'Metascore', 'imdbRating', 'tomatoMeter',
'BoxOffice', 'Production'
];

program
.description('Get information about a movie or tv series or compare two movies!')
.parse(process.argv);

if(program.args.length < 1) {
console.log(chalk.red('Please give a movie name!!'));
process.exit(1);
}

if(program.args.join().toUpperCase().indexOf('VS') !== -1) {
var interval1 = setInterval(function() {
logUpdate("Loading..." + chalk.cyan.bold.dim(frame()));
}, 50)
var movies = program.args.join(" ").toUpperCase().split("VS");
var urls = movies.map(function(mov) {
return 'http://www.omdbapi.com/?t='+ mov.trim().replace(/ /g,"+")+'&tomatoes=true'
});

Promise.all(urls.map(fetch)).
then(function(res) { return Promise.all(res.map(function(res) { return res.json()})) }).
then(function(movies) {
clearInterval(interval1);
logUpdate.clear();
compareInfo(movies)
});
}

else {
var interval = setInterval(function() {
logUpdate("Loading..." + chalk.cyan.bold.dim(frame()));
}, 50)
fetch('http://www.omdbapi.com/?t='+ program.args.join().trim().replace(/ /g,"+")+'&tomatoes=true')
.then(function(res) { return res.json()})
.then(function(mov) {
clearInterval(interval);
logUpdate.clear();
printInfo(mov)});
}

function compareInfo(movies) {
if(movies[0].Response === 'False' || movies[1].Response === 'False') {
console.log(chalk.red(movies[0].Error));
process.exit(1);
}

var props = Object.keys(movies[0]);
props = propsToCompare.map(function(prop, i, arr) {
if(movies[0][prop] === 'N/A' && movies[1][prop] === 'N/A') {
return ;
}
console.log(chalk.bold.cyan(prop), " ".repeat(13-prop.length), movies[0][prop], "",
" ".repeat(50-movies[0][prop].length), movies[1][prop], ""
);
});

}

function printInfo(movie) {
if(movie.Response === 'False') {
console.log(chalk.red(movie.Error));
process.exit(1);
}
var props = Object.keys(movie);
props = propsToShow.map(function(prop, i, arr) {
if(movie[prop] !== 'N/A'){
console.log(chalk.bold.cyan(prop), " ".repeat(13-prop.length)," ::", movie[prop], "");
}
});
}

26 changes: 26 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"name": "movie-cli",
"version": "1.0.0",
"description": "A CLI for getting information about a movie and comparing two movies",
"bin": {
"movie": "./cli.js"
},
"repository": {
"type": "git",
"url": "git+https://github.com/mayankchd/movie-cli.git"
},
"author": "Mayank <imayankchd@gmail.com>",
"license": "MIT",
"bugs": {
"url": "https://github.com/mayankchd/movie-cli/issues"
},
"homepage": "https://github.com/mayankchd/movie-cli#readme",
"dependencies": {
"chalk": "^1.1.1",
"commander": "^2.9.0",
"elegant-spinner": "^1.0.1",
"es6-promise": "^3.1.2",
"isomorphic-fetch": "^2.2.1",
"log-update": "^1.0.2"
}
}

0 comments on commit 9306e0c

Please sign in to comment.