Skip to content

Instantly share code, notes, and snippets.

@wrtsprt
Created April 28, 2017 08:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wrtsprt/2b0a9cc063ec0e574231d85ff9da7bad to your computer and use it in GitHub Desktop.
Save wrtsprt/2b0a9cc063ec0e574231d85ff9da7bad to your computer and use it in GitHub Desktop.
Chart the development of IMDB scores of Steven Seagull movies - POC
<html>
<head>
<script src="https://code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.bundle.js"></script>
<script type="text/javascript">
var realData = [{y: 3.7, x: 2016},
,{y: 3.9, x: 2016}
,{y: 3.2, x: 2016}
,{y: 3.4, x: 2016}
,{y: 4.2, x: 2016}
,{y: 3.3, x: 2016}
,{y: 3.8, x: 2016}
,{y: 4.5, x: 2015}
,{y: 4.7, x: 2014}
,{y: 4.6, x: 2013}
,{y: 4.9, x: 2012}
,{y: 4.8, x: 2010}
,{y: 4.5, x: 2010}
,{y: 5.1, x: 2009}
,{y: 5.2, x: 2009}
,{y: 5.2, x: 2009}
,{y: 3.2, x: 2009}
,{y: 4, x: 2008}
,{y: 5.4, x: 2008}
,{y: 5.4, x: 2007}
,{y: 3.5, x: 2007}
,{y: 2.7, x: 2006}
,{y: 4.1, x: 2006}
,{y: 4.2, x: 2006}
,{y: 3.9, x: 2005}
,{y: 5.5, x: 2005}
,{y: 4.2, x: 2005}
,{y: 3.8, x: 2005}
,{y: 4.4, x: 2005}
,{y: 3.9, x: 2004}
,{y: 4.7, x: 2003}
,{y: 3.3, x: 2003}
,{y: 3.3, x: 2003}
,{y: 4.6, x: 2002}
,{y: 5.8, x: 2001}
,{y: 5.3, x: 2000}
,{y: 5.2, x: 1998}
,{y: 4.1, x: 1998}
,{y: 5, x: 1997}
,{y: 5.3, x: 1996}
,{y: 5.4, x: 1995}
,{y: 4.4, x: 1994}
,{y: 6.4, x: 1992}
,{y: 6, x: 1991}
,{y: 5.9, x: 1990}
,{y: 5.9, x: 1988}];
var labels = [
2016,
, 2016
, 2016
, 2016
, 2016
, 2016
, 2016
, 2015
, 2014
, 2013
, 2012
, 2010
, 2010
, 2009
, 2009
, 2009
, 2009
,2008
,2008
,2007
,2007
,2006
,2006
,2006
,2005
,2005
,2005
,2005
,2005
,2004
,2003
,2003
,2003
,2002
,2001
,2000
,1998
,1998
,1997
,1996
,1995
,1994
,1992
,1991
,1990
,1988];
var values = [
3.7,
,3.9
,3.2
,3.4
,4.2
,3.3
,3.8
,4.5
,4.7
,4.6
,4.9
,4.8
,4.5
,5.1
,5.2
,5.2
,3.2
,4,
,5.4
,5.4
,3.5
,2.7
,4.1
,4.2
,3.9
,5.5
,4.2
,3.8
,4.4
,3.9
,4.7
,3.3
,3.3
,4.6
,5.8
,5.3
,5.2
,4.1
,5,
,5.3
,5.4
,4.4
,6.4
,6,
,5.9
,5.9];
$( document ).ready(function() {
console.log('ready');
plotGraph();
});
var theData;
var movieMap = {};
var storeData = function() {
$.when(getData()).then(function(theDataWeGot) {
console.dir(theDataWeGot);
theData = theDataWeGot.data;
});
};
var getData = function() {
var make = $.Deferred();
var imdbId = 'nm0000219';
$.ajax({
url: 'http://imdb.wemakesites.net/api/' + imdbId,
crossDomain: true,
data: {
api_key: 'f944db93-6274-4955-a630-6e61f11c89c8'
},
dataType: 'jsonp'
}).done(function(data) {
console.log(data);
make.resolve(data);
});
return make.promise();
};
var retrieveRating = function() {
$.each(theData.filmography, function(index, item){
console.log(item);
var movieId = /http:\/\/www\.imdb\.com\/title\/(.*)\//.exec(item.info)[1]
console.log("id: " + movieId);
movieMap[movieId] = { info: item.info, title: item.title, year: item.year }
$.ajax({
url: 'http://app.imdb.com/title/maindetails?tconst=' + movieId
}).done(function(movie) {
if(movie.data && movie.data.rating) {
var movieInfo = movieMap[movie.data.tconst];
movieInfo["rating"] = movie.data.rating;
movieMap[movie.data.tconst] = movieInfo;
}
});
});
};
var plotData = new Array();
var prepareData = function() {
$.each(movieMap, function(id, movieDetails) {
year = parseInt(/&nbsp;(\d*)/.exec(movieDetails.year)[1])
if(movieDetails.rating && year) {
plotData.push({y: movieDetails.rating, x: year });
}
});
};
var plotGraph = function() {
var ctx = document.getElementById("myChart");
var myChart = new Chart(ctx, {
type: 'line',
data: {
labels: labels.reverse(),
datasets: [
{
data: values.reverse(),
label: 'the real data' ,
spanGaps: true,
cubicInterpolationMode: 'monotone'
}
],
options: {
scales: {
yAxes: [{
ticks: {
beginAtZero:true
}
}],
xAxes: [{
type: 'linear',
position: 'bottom'
}]
}
}
}});
}
var main = function() {
$.when(storeData())
.then(retrieveRating())
.then(prepareData())
.then(plotGraph());
};
</script>
</head>
<body>
<h2>Hello Steven</h2>
<canvas id="myChart" width="400" height="400"></canvas>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment