Created
December 6, 2016 16:34
-
-
Save gmemstr/d0024ab38a9cd0aae3a8cce25202c9b0 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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