Skip to content

Instantly share code, notes, and snippets.

@gmemstr
Created December 6, 2016 16:34
Show Gist options
  • Save gmemstr/d0024ab38a9cd0aae3a8cce25202c9b0 to your computer and use it in GitHub Desktop.
Save gmemstr/d0024ab38a9cd0aae3a8cce25202c9b0 to your computer and use it in GitHub Desktop.
// Function to retrieve token
function tvdbToken() {
var url = "https://api.thetvdb.com/login";
var payload = JSON.stringify({
"apikey": "YOUR_TVDB_API_KEY"
});
var headers = {
"content-type": "application/json"
}
var options = {
'method': 'post',
'headers': headers,
'payload': payload
};
var response = UrlFetchApp.fetch(url, options);
var json = response.getContentText();
var data = JSON.parse(json);
return data["token"];
}
// ---
// Function to search TVDB for correct show
function searchTvdb(show, network) {
var url = "https://api.thetvdb.com/search/series?name=" + show;
var headers = {
"Authorization": "Bearer " + tvdbToken(),
"content-type": "application/json"
}
var options = {
'method': 'get',
'headers': headers
};
var response = UrlFetchApp.fetch(url, options);
var json = response.getContentText();
var data = JSON.parse(json);
var showId;
for (var i = 0; i < data["data"].length; i++){
var showNet = data["data"][i]["network"];
if(showNet.indexOf(network) !== -1){
showId = data["data"][i]["id"];
// Logger.log(show + " " + network + " " + showNet);
}
if (showId == undefined) {
showId = 309893; // Placeholder
}
}
return showId;
}
// ---
// Combine data and runtime and return
function aggData(show, network){
var showId = searchTvdb(show, network);
var url = "https://api.thetvdb.com/series/" + showId;
var headers = {
"Authorization": "Bearer " + tvdbToken(),
"content-type": "application/json"
}
var options = {
'method': 'get',
'headers': headers
};
var response = UrlFetchApp.fetch(url, options);
var json = response.getContentText();
var data = JSON.parse(json);
var finalData = JSON.parse(json);
var url = "https://api.thetvdb.com/series/" + showId + "/episodes/summary";
var headers = {
"Authorization": "Bearer " + tvdbToken(),
"content-type": "application/json"
}
var options = {
'method': 'get',
'headers': headers
};
var response = UrlFetchApp.fetch(url, options);
var json = response.getContentText();
var episodesData = JSON.parse(json);
finalData["data"]["airedEpisodes"] = episodesData["data"]["airedEpisodes"];
Logger.log(finalData["data"]["airedEpisodes"]);
return finalData;
}
// ---
// Input data into spreadsheet
function Main(){
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
for (var i = 0; i < data.length; i++) {
var showData = aggData(data[i][0], data[i][1]);
// Logger.log(showData["data"]["runtime"]);
Logger.log('Show Name: ' + data[i][0]);
sheet.getRange(i+1,3).setValue(showData["data"]["runtime"]);
sheet.getRange(i+1,4).setValue(showData["data"]["airedEpisodes"]);
var totalTime = showData["data"]["runtime"] * showData["data"]["airedEpisodes"] / 60;
sheet.getRange(i+1,5).setValue(totalTime.toFixed(2) + " hours");
}
}
// ---
function debug() {
// Debug function for testing fetch
Browser.msgBox(tvdbToken());
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment