From 10106814e572edbc5d52acf6b1fb099538310591 Mon Sep 17 00:00:00 2001 From: Amir200524 Date: Wed, 12 Mar 2025 09:52:27 +0000 Subject: [PATCH 01/29] My name --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 9a400d1..0946822 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@ - TV Show Project | My Name (My GitHub username) + TV Show Project |AmirhosseinAminian From d19bd5a01efeb4255e80bd878de16cc4bfc8e413 Mon Sep 17 00:00:00 2001 From: Amir200524 Date: Wed, 12 Mar 2025 10:12:06 +0000 Subject: [PATCH 02/29] TVMaze Credit --- episodes.js | 30 ++++++++++++++++++++++++++++++ index.html | 4 ++++ style.css | 28 ++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+) diff --git a/episodes.js b/episodes.js index 5ef6e9e..d1e867c 100644 --- a/episodes.js +++ b/episodes.js @@ -1853,3 +1853,33 @@ function getAllEpisodes() { }, ]; } +// Function to format episode code (e.g., S02E07) +function formatEpisodeCode(season, episode) { + return `S${String(season).padStart(2, "0")}E${String(episode).padStart(2, "0")}`; +} + +// Function to display episodes +function displayEpisodes(episodes) { + const root = document.getElementById("root"); + root.innerHTML = ""; // Clear existing content + + episodes.forEach((episode) => { + const episodeCard = document.createElement("div"); + episodeCard.classList.add("episode-card"); + + episodeCard.innerHTML = ` +

${episode.name} (${formatEpisodeCode(episode.season, episode.number)})

+ ${episode.name} +

${episode.summary || "No summary available."}

+ More on TVMaze + `; + + root.appendChild(episodeCard); + }); +} + +// Load and display all episodes +window.onload = function () { + const episodes = getAllEpisodes(); // Provided function + displayEpisodes(episodes); +}; diff --git a/index.html b/index.html index 0946822..1f2e803 100644 --- a/index.html +++ b/index.html @@ -18,4 +18,8 @@ + + diff --git a/style.css b/style.css index 77cb8d4..84a9ac0 100644 --- a/style.css +++ b/style.css @@ -1,3 +1,31 @@ #root { color: red; } +body { + font-family: Arial, sans-serif; + background-color: #f5f5f5; + text-align: center; +} + +.episode-card { + background: white; + border: 1px solid #ddd; + border-radius: 8px; + box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.1); + display: inline-block; + width: 300px; + margin: 15px; + padding: 10px; +} + +.episode-card img { + width: 100%; + border-radius: 5px; +} + +a { + display: block; + margin-top: 10px; + color: #0073e6; + text-decoration: none; +} \ No newline at end of file From b48feb49ffa1f7de98d658ab16ba80713cce584b Mon Sep 17 00:00:00 2001 From: Amir200524 Date: Wed, 12 Mar 2025 10:16:16 +0000 Subject: [PATCH 03/29] delete wrong function --- episodes.js | 29 ----------------------------- 1 file changed, 29 deletions(-) diff --git a/episodes.js b/episodes.js index d1e867c..bf70fbc 100644 --- a/episodes.js +++ b/episodes.js @@ -1853,33 +1853,4 @@ function getAllEpisodes() { }, ]; } -// Function to format episode code (e.g., S02E07) -function formatEpisodeCode(season, episode) { - return `S${String(season).padStart(2, "0")}E${String(episode).padStart(2, "0")}`; -} - -// Function to display episodes -function displayEpisodes(episodes) { - const root = document.getElementById("root"); - root.innerHTML = ""; // Clear existing content - - episodes.forEach((episode) => { - const episodeCard = document.createElement("div"); - episodeCard.classList.add("episode-card"); - - episodeCard.innerHTML = ` -

${episode.name} (${formatEpisodeCode(episode.season, episode.number)})

- ${episode.name} -

${episode.summary || "No summary available."}

- More on TVMaze - `; - - root.appendChild(episodeCard); - }); -} -// Load and display all episodes -window.onload = function () { - const episodes = getAllEpisodes(); // Provided function - displayEpisodes(episodes); -}; From caefe75bf4bb8642288408a94d142654aab6b39a Mon Sep 17 00:00:00 2001 From: Amir200524 Date: Wed, 12 Mar 2025 10:24:25 +0000 Subject: [PATCH 04/29] move footer --- index.html | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index 1f2e803..e666e1e 100644 --- a/index.html +++ b/index.html @@ -11,6 +11,9 @@
+ @@ -18,8 +21,4 @@ - - From 509d127be43b488629384c07490e1e4373314fb5 Mon Sep 17 00:00:00 2001 From: Amir200524 Date: Wed, 12 Mar 2025 10:25:50 +0000 Subject: [PATCH 05/29] new css --- style.css | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/style.css b/style.css index 84a9ac0..fc9f73e 100644 --- a/style.css +++ b/style.css @@ -5,6 +5,20 @@ body { font-family: Arial, sans-serif; background-color: #f5f5f5; text-align: center; + margin: 0; + padding: 0; +} + +h1 { + margin-top: 20px; +} + +#root { + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 20px; + padding: 20px; } .episode-card { @@ -12,10 +26,8 @@ body { border: 1px solid #ddd; border-radius: 8px; box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.1); - display: inline-block; width: 300px; - margin: 15px; - padding: 10px; + padding: 15px; } .episode-card img { @@ -28,4 +40,9 @@ a { margin-top: 10px; color: #0073e6; text-decoration: none; +} + +footer { + margin-top: 20px; + padding: 10px; } \ No newline at end of file From 3870ae5b4a5e8d030a3129e8e57e9a08af0de216 Mon Sep 17 00:00:00 2001 From: Amir200524 Date: Wed, 12 Mar 2025 10:33:08 +0000 Subject: [PATCH 06/29] Retrieves all episodes Creates an episode card Displays the required --- script.js | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/script.js b/script.js index 87a7de8..a885ed8 100644 --- a/script.js +++ b/script.js @@ -1,12 +1,36 @@ -//You can edit ALL of the code here function setup() { const allEpisodes = getAllEpisodes(); makePageForEpisodes(allEpisodes); } +// Function to format episode code (e.g., S02E07) +function formatEpisodeCode(season, episode) { + return `S${String(season).padStart(2, "0")}E${String(episode).padStart(2, "0")}`; +} + +// Function to create and display episode cards function makePageForEpisodes(episodeList) { const rootElem = document.getElementById("root"); - rootElem.textContent = `Got ${episodeList.length} episode(s)`; + rootElem.innerHTML = ""; // Clear previous content + + // Display number of episodes + const episodeCount = document.createElement("p"); + episodeCount.textContent = `Got ${episodeList.length} episode(s)`; + rootElem.appendChild(episodeCount); + + episodeList.forEach((episode) => { + const episodeCard = document.createElement("div"); + episodeCard.classList.add("episode-card"); + + episodeCard.innerHTML = ` +

${episode.name} (${formatEpisodeCode(episode.season, episode.number)})

+ ${episode.name} +

${episode.summary || "No summary available."}

+ More on TVMaze + `; + + rootElem.appendChild(episodeCard); + }); } window.onload = setup; From 6a80129b3e7fc27bdd2f7ea239da96f5b1a91781 Mon Sep 17 00:00:00 2001 From: Amir200524 Date: Wed, 12 Mar 2025 10:41:24 +0000 Subject: [PATCH 07/29] Debugging log --- script.js | 1 + 1 file changed, 1 insertion(+) diff --git a/script.js b/script.js index a885ed8..2da8efc 100644 --- a/script.js +++ b/script.js @@ -1,5 +1,6 @@ function setup() { const allEpisodes = getAllEpisodes(); + console.log("Episodes loaded:", allEpisodes); makePageForEpisodes(allEpisodes); } From 9c077339c0f211cc6c15c87384803e039d912d9f Mon Sep 17 00:00:00 2001 From: Amir200524 Date: Wed, 12 Mar 2025 10:46:45 +0000 Subject: [PATCH 08/29] debugging function makePageForEpisodes --- script.js | 1 - 1 file changed, 1 deletion(-) diff --git a/script.js b/script.js index 2da8efc..a885ed8 100644 --- a/script.js +++ b/script.js @@ -1,6 +1,5 @@ function setup() { const allEpisodes = getAllEpisodes(); - console.log("Episodes loaded:", allEpisodes); makePageForEpisodes(allEpisodes); } From 671edf16591af1aec1282728b95a2b94fb2445ac Mon Sep 17 00:00:00 2001 From: Amir200524 Date: Wed, 12 Mar 2025 19:16:51 +0000 Subject: [PATCH 09/29] deleting extra function --- episodes.js | 27 --------------------------- 1 file changed, 27 deletions(-) diff --git a/episodes.js b/episodes.js index bf70fbc..2da6f26 100644 --- a/episodes.js +++ b/episodes.js @@ -3,33 +3,6 @@ //This content is from https://www.tvmaze.com/ //specifically: https://api.tvmaze.com/shows/82/episodes -function getOneEpisode() { - return { - id: 4952, - url: - "http://www.tvmaze.com/episodes/4952/game-of-thrones-1x01-winter-is-coming", - name: "Winter is Coming", - season: 1, - number: 1, - airdate: "2011-04-17", - airtime: "21:00", - airstamp: "2011-04-18T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2668.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2668.jpg", - }, - summary: - "

Lord Eddard Stark, ruler of the North, is summoned to court by his old friend, King Robert Baratheon, to serve as the King's Hand. Eddard reluctantly agrees after learning of a possible threat to the King's life. Eddard's bastard son Jon Snow must make a painful decision about his own future, while in the distant east Viserys Targaryen plots to reclaim his father's throne, usurped by Robert, by selling his sister in marriage.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4952", - }, - }, - }; -} function getAllEpisodes() { return [ From 7ebdde78ba7ddcfbed3e9f584c6ee8f1a3f4538d Mon Sep 17 00:00:00 2001 From: Amir200524 Date: Fri, 14 Mar 2025 18:39:03 +0000 Subject: [PATCH 10/29] style for footer --- style.css | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/style.css b/style.css index fc9f73e..c32cdc8 100644 --- a/style.css +++ b/style.css @@ -44,5 +44,14 @@ a { footer { margin-top: 20px; - padding: 10px; -} \ No newline at end of file + position: fixed; + bottom: 0; + width: 100%; + background-color:silver; + /* Dark background for contrast */ + color: white; + /* Light text */ + text-align: center; + padding: 10px 0; + font-size: 14px; +} From d3d50246b9ed1ea1732cbeed6eda9049711b8ebf Mon Sep 17 00:00:00 2001 From: AmirMontazeri Date: Sat, 15 Mar 2025 10:49:15 +0000 Subject: [PATCH 11/29] search bar and episode selector boxes added --- index.html | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/index.html b/index.html index e666e1e..72e3702 100644 --- a/index.html +++ b/index.html @@ -9,10 +9,21 @@ -
-
+
+

Games of Thrones episodes

+ + +

+
+ +
From 7b0595ebfe1831b2f4f174fe72d0da9b0ac71b6d Mon Sep 17 00:00:00 2001 From: AmirMontazeri Date: Sat, 15 Mar 2025 10:49:50 +0000 Subject: [PATCH 12/29] episode selector function implemented --- script.js | 93 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 76 insertions(+), 17 deletions(-) diff --git a/script.js b/script.js index a885ed8..7474052 100644 --- a/script.js +++ b/script.js @@ -1,35 +1,94 @@ function setup() { const allEpisodes = getAllEpisodes(); makePageForEpisodes(allEpisodes); + createEpisodeSelector(allEpisodes); + + // Event listener for search + document.getElementById("searchBar").addEventListener("input", function () { + const searchQuery = this.value.toLowerCase(); + const filteredEpisodes = allEpisodes.filter( + (episode) => + episode.name.toLowerCase().includes(searchQuery) || + episode.summary.toLowerCase().includes(searchQuery) + ); + makePageForEpisodes(filteredEpisodes); + }); + + // Event listener for episode selector + document + .getElementById("episodeSelector") + .addEventListener("change", function () { + const selectedId = this.value; + if (selectedId === "all") { + makePageForEpisodes(allEpisodes); // Show all episodes + } else { + const selectedEpisode = allEpisodes.find((ep) => ep.id == selectedId); + makePageForEpisodes([selectedEpisode]); // Show only selected episode + } + }); } -// Function to format episode code (e.g., S02E07) -function formatEpisodeCode(season, episode) { - return `S${String(season).padStart(2, "0")}E${String(episode).padStart(2, "0")}`; +function createEpisodeSelector(episodeList) { + const selector = document.getElementById("episodeSelector"); + selector.innerHTML = ""; // Clear previous options + + // Add "Show All" option + const allOption = document.createElement("option"); + allOption.value = "all"; + allOption.textContent = "Show All Episodes"; + selector.appendChild(allOption); + + // Add episodes to dropdown + episodeList.forEach((episode) => { + const option = document.createElement("option"); + option.value = episode.id; + const episodeCode = `S${String(episode.season).padStart(2, "0")}E${String( + episode.number + ).padStart(2, "0")}`; + option.textContent = `${episodeCode} - ${episode.name}`; + selector.appendChild(option); + }); } -// Function to create and display episode cards function makePageForEpisodes(episodeList) { const rootElem = document.getElementById("root"); rootElem.innerHTML = ""; // Clear previous content - // Display number of episodes - const episodeCount = document.createElement("p"); - episodeCount.textContent = `Got ${episodeList.length} episode(s)`; - rootElem.appendChild(episodeCount); + document.getElementById( + "episodeCount" + ).textContent = `Showing ${episodeList.length} episode(s)`; episodeList.forEach((episode) => { - const episodeCard = document.createElement("div"); - episodeCard.classList.add("episode-card"); + const card = document.createElement("div"); + card.className = "episode-card"; + card.id = `episode-${episode.id}`; // Assign an ID for scrolling + + const episodeCode = `S${String(episode.season).padStart(2, "0")}E${String( + episode.number + ).padStart(2, "0")}`; + const title = document.createElement("h2"); + title.textContent = `${episode.name} (${episodeCode})`; + + const img = document.createElement("img"); + img.src = episode.image + ? episode.image.medium + : "https://via.placeholder.com/300"; + img.alt = episode.name; + + const summary = document.createElement("p"); + summary.innerHTML = episode.summary; + + const link = document.createElement("a"); + link.href = episode._links.self.href; + link.target = "_blank"; + link.textContent = "More info on TVMaze"; - episodeCard.innerHTML = ` -

${episode.name} (${formatEpisodeCode(episode.season, episode.number)})

- ${episode.name} -

${episode.summary || "No summary available."}

- More on TVMaze - `; + card.appendChild(title); + card.appendChild(img); + card.appendChild(summary); + card.appendChild(link); - rootElem.appendChild(episodeCard); + rootElem.appendChild(card); }); } From c8998afe0b78b953b4c37beb73128d4a36a715d0 Mon Sep 17 00:00:00 2001 From: AmirMontazeri Date: Sat, 15 Mar 2025 10:50:10 +0000 Subject: [PATCH 13/29] search bar style done --- style.css | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/style.css b/style.css index c32cdc8..5bd3aab 100644 --- a/style.css +++ b/style.css @@ -35,6 +35,24 @@ h1 { border-radius: 5px; } +#searchBar { + width: 50%; + padding: 10px; + margin: 10px 0; + border: none; + border-radius: 5px; + font-size: 16px; +} + +#episodeSelector { + width: 50%; + padding: 10px; + margin: 10px 0; + border: none; + border-radius: 5px; + font-size: 16px; +} + a { display: block; margin-top: 10px; @@ -47,10 +65,10 @@ footer { position: fixed; bottom: 0; width: 100%; - background-color:silver; - /* Dark background for contrast */ + background-color: silver; + /* Dark background for contrast */ color: white; - /* Light text */ + /* Light text */ text-align: center; padding: 10px 0; font-size: 14px; From cbe0c5b21be5ff08be17eab11f1e42e10e47b300 Mon Sep 17 00:00:00 2001 From: Amir200524 Date: Sun, 16 Mar 2025 19:23:37 +0000 Subject: [PATCH 14/29] style for search bar and episode selector --- style.css | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/style.css b/style.css index 5bd3aab..d122167 100644 --- a/style.css +++ b/style.css @@ -36,19 +36,19 @@ h1 { } #searchBar { - width: 50%; + width: 30%; padding: 10px; margin: 10px 0; - border: none; + border: solid; border-radius: 5px; font-size: 16px; } #episodeSelector { - width: 50%; + width: 30%; padding: 10px; margin: 10px 0; - border: none; + border:solid; border-radius: 5px; font-size: 16px; } @@ -67,7 +67,7 @@ footer { width: 100%; background-color: silver; /* Dark background for contrast */ - color: white; + color:black; /* Light text */ text-align: center; padding: 10px 0; From 8685a6e1ab444a09b6f8ceb125ab9da23861ec99 Mon Sep 17 00:00:00 2001 From: Amir200524 Date: Sun, 16 Mar 2025 19:28:28 +0000 Subject: [PATCH 15/29] Remove episodes.js --- episodes.js | 1829 --------------------------------------------------- 1 file changed, 1829 deletions(-) delete mode 100644 episodes.js diff --git a/episodes.js b/episodes.js deleted file mode 100644 index 2da6f26..0000000 --- a/episodes.js +++ /dev/null @@ -1,1829 +0,0 @@ -//DO NOT EDIT THIS FILE - -//This content is from https://www.tvmaze.com/ -//specifically: https://api.tvmaze.com/shows/82/episodes - - -function getAllEpisodes() { - return [ - { - id: 4952, - url: - "http://www.tvmaze.com/episodes/4952/game-of-thrones-1x01-winter-is-coming", - name: "Winter is Coming", - season: 1, - number: 1, - airdate: "2011-04-17", - airtime: "21:00", - airstamp: "2011-04-18T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2668.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2668.jpg", - }, - summary: - "

Lord Eddard Stark, ruler of the North, is summoned to court by his old friend, King Robert Baratheon, to serve as the King's Hand. Eddard reluctantly agrees after learning of a possible threat to the King's life. Eddard's bastard son Jon Snow must make a painful decision about his own future, while in the distant east Viserys Targaryen plots to reclaim his father's throne, usurped by Robert, by selling his sister in marriage.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4952", - }, - }, - }, - { - id: 4953, - url: - "http://www.tvmaze.com/episodes/4953/game-of-thrones-1x02-the-kingsroad", - name: "The Kingsroad", - season: 1, - number: 2, - airdate: "2011-04-24", - airtime: "21:00", - airstamp: "2011-04-25T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2669.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2669.jpg", - }, - summary: - "

An incident on the Kingsroad threatens Eddard and Robert's friendship. Jon and Tyrion travel to the Wall, where they discover that the reality of the Night's Watch may not match the heroic image of it.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4953", - }, - }, - }, - { - id: 4954, - url: "http://www.tvmaze.com/episodes/4954/game-of-thrones-1x03-lord-snow", - name: "Lord Snow", - season: 1, - number: 3, - airdate: "2011-05-01", - airtime: "21:00", - airstamp: "2011-05-02T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2671.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2671.jpg", - }, - summary: - "

Jon Snow attempts to find his place amongst the Night's Watch. Eddard and his daughters arrive at King's Landing.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4954", - }, - }, - }, - { - id: 4955, - url: - "http://www.tvmaze.com/episodes/4955/game-of-thrones-1x04-cripples-bastards-and-broken-things", - name: "Cripples, Bastards, and Broken Things", - season: 1, - number: 4, - airdate: "2011-05-08", - airtime: "21:00", - airstamp: "2011-05-09T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2673.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2673.jpg", - }, - summary: - "

Tyrion stops at Winterfell on his way home and gets a frosty reception from Robb Stark. Eddard's investigation into the death of his predecessor gets underway.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4955", - }, - }, - }, - { - id: 4956, - url: - "http://www.tvmaze.com/episodes/4956/game-of-thrones-1x05-the-wolf-and-the-lion", - name: "The Wolf and the Lion", - season: 1, - number: 5, - airdate: "2011-05-15", - airtime: "21:00", - airstamp: "2011-05-16T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2674.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2674.jpg", - }, - summary: - "

Catelyn's actions on the road have repercussions for Eddard. Tyrion enjoys the dubious hospitality of the Eyrie.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4956", - }, - }, - }, - { - id: 4957, - url: - "http://www.tvmaze.com/episodes/4957/game-of-thrones-1x06-a-golden-crown", - name: "A Golden Crown", - season: 1, - number: 6, - airdate: "2011-05-22", - airtime: "21:00", - airstamp: "2011-05-23T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2676.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2676.jpg", - }, - summary: - "

Viserys is increasingly frustrated by the lack of progress towards gaining his crown.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4957", - }, - }, - }, - { - id: 4958, - url: - "http://www.tvmaze.com/episodes/4958/game-of-thrones-1x07-you-win-or-you-die", - name: "You Win or You Die", - season: 1, - number: 7, - airdate: "2011-05-29", - airtime: "21:00", - airstamp: "2011-05-30T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2677.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2677.jpg", - }, - summary: - "

Eddard's investigations in King's Landing reach a climax and a dark secret is revealed.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4958", - }, - }, - }, - { - id: 4959, - url: - "http://www.tvmaze.com/episodes/4959/game-of-thrones-1x08-the-pointy-end", - name: "The Pointy End", - season: 1, - number: 8, - airdate: "2011-06-05", - airtime: "21:00", - airstamp: "2011-06-06T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2678.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2678.jpg", - }, - summary: - "

Tyrion joins his father's army with unexpected allies. Events in King's Landing take a turn for the worse as Arya's lessons are put to the test.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4959", - }, - }, - }, - { - id: 4960, - url: "http://www.tvmaze.com/episodes/4960/game-of-thrones-1x09-baelor", - name: "Baelor", - season: 1, - number: 9, - airdate: "2011-06-12", - airtime: "21:00", - airstamp: "2011-06-13T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2679.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2679.jpg", - }, - summary: - "

Catelyn must negotiate with the irascible Lord Walder Frey.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4960", - }, - }, - }, - { - id: 4961, - url: - "http://www.tvmaze.com/episodes/4961/game-of-thrones-1x10-fire-and-blood", - name: "Fire and Blood", - season: 1, - number: 10, - airdate: "2011-06-19", - airtime: "21:00", - airstamp: "2011-06-20T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2681.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2681.jpg", - }, - summary: - "

Daenerys must realize her destiny. Jaime finds himself in an unfamiliar predicament.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4961", - }, - }, - }, - { - id: 4962, - url: - "http://www.tvmaze.com/episodes/4962/game-of-thrones-2x01-the-north-remembers", - name: "The North Remembers", - season: 2, - number: 1, - airdate: "2012-04-01", - airtime: "21:00", - airstamp: "2012-04-02T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/3174.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/3174.jpg", - }, - summary: - "

War grips the continent of Westeros. As Tyrion Lannister tries to take his strong-willed nephew in hand in King's Landing, Stannis Baratheon launches his own campaign to take the Iron Throne with the help of a mysterious priestess. In the east, Daenerys must lead her retinue through a desolate wasteland whilst beyond the Wall the Night's Watch seeks the aid of a wildling.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4962", - }, - }, - }, - { - id: 4963, - url: - "http://www.tvmaze.com/episodes/4963/game-of-thrones-2x02-the-night-lands", - name: "The Night Lands", - season: 2, - number: 2, - airdate: "2012-04-08", - airtime: "21:00", - airstamp: "2012-04-09T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/3175.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/3175.jpg", - }, - summary: - "

Stannis uses Ser Davos to seek out new allies for his war with the Lannisters. On the road north, Arya confides in Gendry. Robb Stark sends Theon Greyjoy to win an alliance with his father and the fierce warriors of the Iron Islands. Cersei and Tyrion clash on how to rule in King's Landing.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4963", - }, - }, - }, - { - id: 4964, - url: - "http://www.tvmaze.com/episodes/4964/game-of-thrones-2x03-what-is-dead-may-never-die", - name: "What is Dead May Never Die", - season: 2, - number: 3, - airdate: "2012-04-15", - airtime: "21:00", - airstamp: "2012-04-16T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/3176.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/3176.jpg", - }, - summary: - "

Catelyn Stark treats with King Renly in the hope of winning an alliance. Tyrion undertakes a complex plan in King's Landing to expose an enemy. At Winterfell, Bran's dreams continue to trouble him.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4964", - }, - }, - }, - { - id: 4965, - url: - "http://www.tvmaze.com/episodes/4965/game-of-thrones-2x04-garden-of-bones", - name: "Garden of Bones", - season: 2, - number: 4, - airdate: "2012-04-22", - airtime: "21:00", - airstamp: "2012-04-23T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/3177.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/3177.jpg", - }, - summary: - "

Tyrion attempts to restrain Joffrey's cruelty. Catelyn attempts to broker a peace between Stannis and Renly. Daenerys and her followers arrive at the great city of Qarth and hope to find refuge there. Arya and Gendry arrive at Harrenhal, a great castle now under Lannister occupation.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4965", - }, - }, - }, - { - id: 4966, - url: - "http://www.tvmaze.com/episodes/4966/game-of-thrones-2x05-the-ghost-of-harrenhal", - name: "The Ghost of Harrenhal", - season: 2, - number: 5, - airdate: "2012-04-29", - airtime: "21:00", - airstamp: "2012-04-30T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/3178.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/3178.jpg", - }, - summary: - "

Confusion rages in the Stormlands in the wake of a devastating reversal. Catelyn must flee with a new ally, whilst Littlefinger sees an opportunity in the chaos. Theon seeks to prove himself to his father in battle. Arya receives a promise from the enigmatic Jaqen H'ghar. The Night's Watch arrives at the Fist of the First Men. Daenerys Targaryen receives a marriage proposal.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4966", - }, - }, - }, - { - id: 4967, - url: - "http://www.tvmaze.com/episodes/4967/game-of-thrones-2x06-the-old-gods-and-the-new", - name: "The Old Gods and the New", - season: 2, - number: 6, - airdate: "2012-05-06", - airtime: "21:00", - airstamp: "2012-05-07T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/3180.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/3180.jpg", - }, - summary: - "

Arya has a surprise visitor; Dany vows to take what is hers; Joffrey meets his subjects; Qhorin gives Jon a chance to prove himself.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4967", - }, - }, - }, - { - id: 4968, - url: - "http://www.tvmaze.com/episodes/4968/game-of-thrones-2x07-a-man-without-honor", - name: "A Man Without Honor", - season: 2, - number: 7, - airdate: "2012-05-13", - airtime: "21:00", - airstamp: "2012-05-14T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/3192.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/3192.jpg", - }, - summary: - "

Jaime meets a relative; Theon hunts; Dany receives an invitation.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4968", - }, - }, - }, - { - id: 4969, - url: - "http://www.tvmaze.com/episodes/4969/game-of-thrones-2x08-the-prince-of-winterfell", - name: "The Prince of Winterfell", - season: 2, - number: 8, - airdate: "2012-05-20", - airtime: "21:00", - airstamp: "2012-05-21T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/3194.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/3194.jpg", - }, - summary: - "

Theon holds the fort; Arya calls in her debt with Jaqen; Robb is betrayed; Stannis and Davos approach their destination.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4969", - }, - }, - }, - { - id: 4970, - url: - "http://www.tvmaze.com/episodes/4970/game-of-thrones-2x09-blackwater", - name: "Blackwater", - season: 2, - number: 9, - airdate: "2012-05-27", - airtime: "21:00", - airstamp: "2012-05-28T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/3196.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/3196.jpg", - }, - summary: - "

A massive battle rages for control of King's Landing and the Iron Throne.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4970", - }, - }, - }, - { - id: 4971, - url: - "http://www.tvmaze.com/episodes/4971/game-of-thrones-2x10-valar-morghulis", - name: "Valar Morghulis", - season: 2, - number: 10, - airdate: "2012-06-03", - airtime: "21:00", - airstamp: "2012-06-04T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/3197.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/3197.jpg", - }, - summary: - "

Tyrion awakens to a changed situation. King Joffrey doles out rewards to his subjects. As Theon stirs his men to action, Luwin offers some final advice. Brienne silences Jaime; Arya receives a gift from Jaqen; Dany goes to a strange place; Jon proves himself to Qhorin.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4971", - }, - }, - }, - { - id: 4972, - url: - "http://www.tvmaze.com/episodes/4972/game-of-thrones-3x01-valar-dohaeris", - name: "Valar Dohaeris", - season: 3, - number: 1, - airdate: "2013-03-31", - airtime: "21:00", - airstamp: "2013-04-01T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2628.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2628.jpg", - }, - summary: - "

Jon is brought before Mance Rayder, the King Beyond the Wall, while the Night's Watch survivors retreat south. In King's Landing, Tyrion asks for his reward. Littlefinger offers Sansa a way out. Cersei hosts a dinner for the royal family. Daenerys sails into Slaver's Bay.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4972", - }, - }, - }, - { - id: 4973, - url: - "http://www.tvmaze.com/episodes/4973/game-of-thrones-3x02-dark-wings-dark-words", - name: "Dark Wings, Dark Words", - season: 3, - number: 2, - airdate: "2013-04-07", - airtime: "21:00", - airstamp: "2013-04-08T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2618.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2618.jpg", - }, - summary: - "

Sansa says too much. Shae asks Tyrion for a favor. Jaime finds a way to pass the time. Arya runs into the Brotherhood Without Banners.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4973", - }, - }, - }, - { - id: 4974, - url: - "http://www.tvmaze.com/episodes/4974/game-of-thrones-3x03-walk-of-punishment", - name: "Walk of Punishment", - season: 3, - number: 3, - airdate: "2013-04-14", - airtime: "21:00", - airstamp: "2013-04-15T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2616.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2616.jpg", - }, - summary: - "

Tyrion shoulders new responsibilities. Jon is taken to the Fist of the First Men. Daenerys meets with the slavers. Jaime strikes a deal with his captors.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4974", - }, - }, - }, - { - id: 4975, - url: - "http://www.tvmaze.com/episodes/4975/game-of-thrones-3x04-and-now-his-watch-is-ended", - name: "And Now His Watch is Ended", - season: 3, - number: 4, - airdate: "2013-04-21", - airtime: "21:00", - airstamp: "2013-04-22T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2615.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2615.jpg", - }, - summary: - "

The Night's Watch takes stock. Varys meets his better. Arya is taken to the commander of the Brotherhood. Daenerys exchanges a chain for a Whip.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4975", - }, - }, - }, - { - id: 4976, - url: - "http://www.tvmaze.com/episodes/4976/game-of-thrones-3x05-kissed-by-fire", - name: "Kissed by Fire", - season: 3, - number: 5, - airdate: "2013-04-28", - airtime: "21:00", - airstamp: "2013-04-29T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2614.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2614.jpg", - }, - summary: - "

The Hound is judged by the gods; Jaime is judged by men. Jon proves himself; Robb is betrayed. Tyrion learns the cost of weddings.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4976", - }, - }, - }, - { - id: 4977, - url: "http://www.tvmaze.com/episodes/4977/game-of-thrones-3x06-the-climb", - name: "The Climb", - season: 3, - number: 6, - airdate: "2013-05-05", - airtime: "21:00", - airstamp: "2013-05-06T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2612.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2612.jpg", - }, - summary: - "

Tywin plans strategic unions for the Lannisters. Melisandre visits the Riverlands. Robb weighs a compromise to repair his alliance with House Frey. Roose Bolton decides what to do with Jaime Lannister. Jon, Ygritte and the Wildlings face a daunting climb.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4977", - }, - }, - }, - { - id: 4978, - url: - "http://www.tvmaze.com/episodes/4978/game-of-thrones-3x07-the-bear-and-the-maiden-fair", - name: "The Bear and the Maiden Fair", - season: 3, - number: 7, - airdate: "2013-05-12", - airtime: "21:00", - airstamp: "2013-05-13T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2611.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2611.jpg", - }, - summary: - "

Daenerys exchanges gifts with a slave lord outside Yunkai. As Sansa frets about her prospects, Shae chafes at Tyrion's new situation. Tywin counsels the king, and Melisandre reveals a secret to Gendry. Brienne faces a formidable foe in Harrenhal.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4978", - }, - }, - }, - { - id: 4979, - url: - "http://www.tvmaze.com/episodes/4979/game-of-thrones-3x08-second-sons", - name: "Second Sons", - season: 3, - number: 8, - airdate: "2013-05-19", - airtime: "21:00", - airstamp: "2013-05-20T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2599.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2599.jpg", - }, - summary: - "

King's Landing hosts a wedding, and Tyrion and Sansa spend the night together. Daenerys meets the Titan's Bastard. Davos demands proof from Melisandre. Sam and Gilly meet an older Gentleman.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4979", - }, - }, - }, - { - id: 4980, - url: - "http://www.tvmaze.com/episodes/4980/game-of-thrones-3x09-the-rains-of-castamere", - name: "The Rains of Castamere", - season: 3, - number: 9, - airdate: "2013-06-02", - airtime: "21:00", - airstamp: "2013-06-03T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2598.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2598.jpg", - }, - summary: - "

Robb presents himself to Walder Frey, and Edmure meets his bride. Jon faces his harshest test yet. Bran discovers a new gift. Daario and Jorah debate how to take Yunkai. House Frey joins with House Tully.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4980", - }, - }, - }, - { - id: 4981, - url: "http://www.tvmaze.com/episodes/4981/game-of-thrones-3x10-mhysa", - name: "Mhysa", - season: 3, - number: 10, - airdate: "2013-06-09", - airtime: "21:00", - airstamp: "2013-06-10T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2597.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2597.jpg", - }, - summary: - "

Joffrey challenges Tywin. Bran tells a ghost story. In Dragonstone, mercy comes from strange quarters. Daenerys waits to see if she is a conqueror or a liberator.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4981", - }, - }, - }, - { - id: 4982, - url: - "http://www.tvmaze.com/episodes/4982/game-of-thrones-4x01-two-swords", - name: "Two Swords", - season: 4, - number: 1, - airdate: "2014-04-06", - airtime: "21:00", - airstamp: "2014-04-07T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2583.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2583.jpg", - }, - summary: - "

Tyrion welcomes a guest to King's Landing. At Castle Black, Jon Snow finds himself unwelcome. Dany is pointed to Meereen, the mother of all slave cities. Arya runs into an old friend.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4982", - }, - }, - }, - { - id: 4983, - url: - "http://www.tvmaze.com/episodes/4983/game-of-thrones-4x02-the-lion-and-the-rose", - name: "The Lion and the Rose", - season: 4, - number: 2, - airdate: "2014-04-13", - airtime: "21:00", - airstamp: "2014-04-14T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2584.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2584.jpg", - }, - summary: - "

Tyrion lends Jaime a hand. Joffrey and Margaery host a breakfast. At Dragonstone, Stannis loses patience with Davos. Ramsay finds a purpose for his pet. North of the Wall, Bran sees where they must go.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4983", - }, - }, - }, - { - id: 4984, - url: - "http://www.tvmaze.com/episodes/4984/game-of-thrones-4x03-breaker-of-chains", - name: "Breaker of Chains", - season: 4, - number: 3, - airdate: "2014-04-20", - airtime: "21:00", - airstamp: "2014-04-21T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2585.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2585.jpg", - }, - summary: - "

Tyrion ponders his options. Tywin extends an olive branch. Sam realizes Castle Black isn't safe, and Jon proposes a bold plan. The Hound teaches Arya the way things are. Dany chooses her Champion.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4984", - }, - }, - }, - { - id: 4985, - url: - "http://www.tvmaze.com/episodes/4985/game-of-thrones-4x04-oathkeeper", - name: "Oathkeeper", - season: 4, - number: 4, - airdate: "2014-04-27", - airtime: "21:00", - airstamp: "2014-04-28T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2586.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2586.jpg", - }, - summary: - "

Dany balances justice and mercy. Jaime tasks Brienne with his honor. Jon secures volunteers while Bran, Jojen, Meera and Hodor stumble on shelter.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4985", - }, - }, - }, - { - id: 4986, - url: - "http://www.tvmaze.com/episodes/4986/game-of-thrones-4x05-first-of-his-name", - name: "First of His Name", - season: 4, - number: 5, - airdate: "2014-05-04", - airtime: "21:00", - airstamp: "2014-05-05T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2587.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2587.jpg", - }, - summary: - "

Cersei and Tywin plot the Crown's next move. Dany discusses future plans. Jon embarks on a new mission.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4986", - }, - }, - }, - { - id: 4987, - url: - "http://www.tvmaze.com/episodes/4987/game-of-thrones-4x06-the-laws-of-gods-and-men", - name: "The Laws of Gods and Men", - season: 4, - number: 6, - airdate: "2014-05-11", - airtime: "21:00", - airstamp: "2014-05-12T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2588.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2588.jpg", - }, - summary: - "

Stannis and Davos set sail with a new strategy. Dany meets with supplicants. Tyrion faces down his father in the throne room.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4987", - }, - }, - }, - { - id: 4988, - url: - "http://www.tvmaze.com/episodes/4988/game-of-thrones-4x07-mockingbird", - name: "Mockingbird", - season: 4, - number: 7, - airdate: "2014-05-18", - airtime: "21:00", - airstamp: "2014-05-19T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2589.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2589.jpg", - }, - summary: - "

Tyrion enlists an unlikely ally. Daario entreats Dany to allow him to do what he does best. Jon's warnings about the Wall's vulnerability fall on deaf ears. Brienne follows a new lead on the road with Pod.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4988", - }, - }, - }, - { - id: 4989, - url: - "http://www.tvmaze.com/episodes/4989/game-of-thrones-4x08-the-mountain-and-the-viper", - name: "The Mountain and the Viper", - season: 4, - number: 8, - airdate: "2014-06-01", - airtime: "21:00", - airstamp: "2014-06-02T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2591.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2591.jpg", - }, - summary: - "

Mole's Town receives unexpected visitors. Littlefinger's motives are questioned. Ramsay attempts to prove himself to his father. Tyrion's fate is decided.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4989", - }, - }, - }, - { - id: 4990, - url: - "http://www.tvmaze.com/episodes/4990/game-of-thrones-4x09-the-watchers-on-the-wall", - name: "The Watchers on the Wall", - season: 4, - number: 9, - airdate: "2014-06-08", - airtime: "21:00", - airstamp: "2014-06-09T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2593.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2593.jpg", - }, - summary: - "

Jon Snow and the rest of the Night's Watch face the biggest challenge to the Wall yet.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4990", - }, - }, - }, - { - id: 4991, - url: - "http://www.tvmaze.com/episodes/4991/game-of-thrones-4x10-the-children", - name: "The Children", - season: 4, - number: 10, - airdate: "2014-06-15", - airtime: "21:00", - airstamp: "2014-06-16T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/1/2594.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/1/2594.jpg", - }, - summary: - "

An unexpected arrival north of the Wall changes circumstances. Dany is forced to face harsh realities. Bran learns more of his destiny. Tyrion sees the truth of his situation.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/4991", - }, - }, - }, - { - id: 116522, - url: - "http://www.tvmaze.com/episodes/116522/game-of-thrones-5x01-the-wars-to-come", - name: "The Wars to Come", - season: 5, - number: 1, - airdate: "2015-04-12", - airtime: "21:00", - airstamp: "2015-04-13T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/10/25988.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/10/25988.jpg", - }, - summary: - "

Varys discusses a conspiracy with Tyrion; Daenerys' rule faces a new threat; Jon finds himself between two kings; and Cersei and Jaime try to move on from Tywin's demise.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/116522", - }, - }, - }, - { - id: 144328, - url: - "http://www.tvmaze.com/episodes/144328/game-of-thrones-5x02-the-house-of-black-and-white", - name: "The House of Black and White", - season: 5, - number: 2, - airdate: "2015-04-19", - airtime: "21:00", - airstamp: "2015-04-20T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/10/25989.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/10/25989.jpg", - }, - summary: - "

Arya arrives in Braavos; Brienne and Podrick find danger while traveling; Cersei worries about Myrcella in Dorne when Ellaria Sand seeks revenge for Oberyn's death; Jon is tempted by Stannis.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/144328", - }, - }, - }, - { - id: 144329, - url: - "http://www.tvmaze.com/episodes/144329/game-of-thrones-5x03-high-sparrow", - name: "High Sparrow", - season: 5, - number: 3, - airdate: "2015-04-26", - airtime: "21:00", - airstamp: "2015-04-27T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/10/25990.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/10/25990.jpg", - }, - summary: - "

Cersei meets the High Sparrow after learning of a clergyman's embarrassing tale. Meanwhile, Davos talks to Jon about the future of Winterfell, where Ramsay Snow has just learned the identity of his future bride; Arya grows impatient doing menial tasks in the House of Black and White; and Tyrion searches for more comfortable surroundings on a long trip with Varys.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/144329", - }, - }, - }, - { - id: 144330, - url: - "http://www.tvmaze.com/episodes/144330/game-of-thrones-5x04-sons-of-the-harpy", - name: "Sons of the Harpy", - season: 5, - number: 4, - airdate: "2015-05-03", - airtime: "21:00", - airstamp: "2015-05-04T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/10/26444.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/10/26444.jpg", - }, - summary: - "

Margaery seeks prudent counsel. Jaime Struggles in foreign lands. Dany answers the Harpy's call.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/144330", - }, - }, - }, - { - id: 151777, - url: - "http://www.tvmaze.com/episodes/151777/game-of-thrones-5x05-kill-the-boy", - name: "Kill the Boy", - season: 5, - number: 5, - airdate: "2015-05-10", - airtime: "21:00", - airstamp: "2015-05-11T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/10/26819.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/10/26819.jpg", - }, - summary: - "

Dany makes a difficult decision in Meereen. Jon recruits the help of an unexpected ally. Brienne searches for Sansa. Theon remains under Ramsay's control.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/151777", - }, - }, - }, - { - id: 152766, - url: - "http://www.tvmaze.com/episodes/152766/game-of-thrones-5x06-unbowed-unbent-unbroken", - name: "Unbowed, Unbent, Unbroken", - season: 5, - number: 6, - airdate: "2015-05-17", - airtime: "21:00", - airstamp: "2015-05-18T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/10/27259.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/10/27259.jpg", - }, - summary: - "

Arya trains. Jorah and Tyrion run into slavers. Trystane and Myrcella make plans. Jaime and Bronn reach their destination. The Sand Snakes attack.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/152766", - }, - }, - }, - { - id: 153327, - url: - "http://www.tvmaze.com/episodes/153327/game-of-thrones-5x07-the-gift", - name: "The Gift", - season: 5, - number: 7, - airdate: "2015-05-24", - airtime: "21:00", - airstamp: "2015-05-25T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/11/27535.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/11/27535.jpg", - }, - summary: - "

Jon prepares for conflict. Sansa tries to talk to Theon. Brienne waits for a sign. Stannis remains stubborn. Jaime attempts to reconnect with family.



", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/153327", - }, - }, - }, - { - id: 155299, - url: - "http://www.tvmaze.com/episodes/155299/game-of-thrones-5x08-hardhome", - name: "Hardhome", - season: 5, - number: 8, - airdate: "2015-05-31", - airtime: "21:00", - airstamp: "2015-06-01T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/11/28151.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/11/28151.jpg", - }, - summary: - "

Arya makes progress in her training. Sansa confronts an old friend. Cersei struggles. Jon travels.



", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/155299", - }, - }, - }, - { - id: 160040, - url: - "http://www.tvmaze.com/episodes/160040/game-of-thrones-5x09-the-dance-of-dragons", - name: "The Dance of Dragons", - season: 5, - number: 9, - airdate: "2015-06-07", - airtime: "21:00", - airstamp: "2015-06-08T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/11/29160.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/11/29160.jpg", - }, - summary: - "

Stannis confronts a troubling decision. Jon returns to The Wall. Mace visits the Iron Bank. Arya encounters someone from her past. Dany reluctantly oversees a traditional celebration of athleticism.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/160040", - }, - }, - }, - { - id: 162186, - url: - "http://www.tvmaze.com/episodes/162186/game-of-thrones-5x10-mothers-mercy", - name: "Mother's Mercy", - season: 5, - number: 10, - airdate: "2015-06-14", - airtime: "21:00", - airstamp: "2015-06-15T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/12/30012.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/12/30012.jpg", - }, - summary: - "

Cersei seeks forgiveness; Jon faces a new challenge; Arya plots to cross a name off her list; Tyrion sees a familiar face; and Daenerys finds herself surrounded by strangers.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/162186", - }, - }, - }, - { - id: 560813, - url: - "http://www.tvmaze.com/episodes/560813/game-of-thrones-6x01-the-red-woman", - name: "The Red Woman", - season: 6, - number: 1, - airdate: "2016-04-24", - airtime: "21:00", - airstamp: "2016-04-25T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/56/142371.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/56/142371.jpg", - }, - summary: - "

Jon Snow is dead. Daenerys meets a strong man. Cersei sees her daughter again.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/560813", - }, - }, - }, - { - id: 664672, - url: "http://www.tvmaze.com/episodes/664672/game-of-thrones-6x02-home", - name: "Home", - season: 6, - number: 2, - airdate: "2016-05-01", - airtime: "21:00", - airstamp: "2016-05-02T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/56/142372.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/56/142372.jpg", - }, - summary: - "

Bran trains with the Three-Eyed Raven. In King's Landing, Jaime advises Tommen. Tyrion demands good news, but has to make his own. At Castle Black, the Night's Watch stands behind Thorne. Ramsay Bolton proposes a plan, and Balon Greyjoy entertains other proposals.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/664672", - }, - }, - }, - { - id: 664673, - url: - "http://www.tvmaze.com/episodes/664673/game-of-thrones-6x03-oathbreaker", - name: "Oathbreaker", - season: 6, - number: 3, - airdate: "2016-05-08", - airtime: "21:00", - airstamp: "2016-05-09T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/56/142370.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/56/142370.jpg", - }, - summary: - "

Daenerys meets her future. Bran meets the past. Tommen confronts the High Sparrow. Arya trains to be No One. Varys finds an answer. Ramsay gets a gift.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/664673", - }, - }, - }, - { - id: 664674, - url: - "http://www.tvmaze.com/episodes/664674/game-of-thrones-6x04-book-of-the-stranger", - name: "Book of the Stranger", - season: 6, - number: 4, - airdate: "2016-05-15", - airtime: "21:00", - airstamp: "2016-05-16T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/56/142273.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/56/142273.jpg", - }, - summary: - "

Tyrion strikes a deal. Jorah and Daario undertake a difficult task. Jaime and Cersei try to improve their situation.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/664674", - }, - }, - }, - { - id: 664675, - url: - "http://www.tvmaze.com/episodes/664675/game-of-thrones-6x05-the-door", - name: "The Door", - season: 6, - number: 5, - airdate: "2016-05-22", - airtime: "21:00", - airstamp: "2016-05-23T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/60/150273.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/60/150273.jpg", - }, - summary: - "

Tyrion seeks a strange ally. Bran learns a great deal. Brienne goes on a mission. Arya is given a chance to prove herself.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/664675", - }, - }, - }, - { - id: 664676, - url: - "http://www.tvmaze.com/episodes/664676/game-of-thrones-6x06-blood-of-my-blood", - name: "Blood of My Blood", - season: 6, - number: 6, - airdate: "2016-05-29", - airtime: "21:00", - airstamp: "2016-05-30T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/60/150274.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/60/150274.jpg", - }, - summary: - "

An old foe comes back into the picture. Gilly meets Sam's family. Arya faces a difficult choice. Jaime faces off against the High Sparrow.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/664676", - }, - }, - }, - { - id: 717449, - url: - "http://www.tvmaze.com/episodes/717449/game-of-thrones-6x07-the-broken-man", - name: "The Broken Man", - season: 6, - number: 7, - airdate: "2016-06-05", - airtime: "21:00", - airstamp: "2016-06-06T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/60/150275.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/60/150275.jpg", - }, - summary: - "

The High Sparrow eyes another target. Jaime confronts a hero. Arya makes a plan. The North is reminded.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/717449", - }, - }, - }, - { - id: 729573, - url: "http://www.tvmaze.com/episodes/729573/game-of-thrones-6x08-no-one", - name: "No One", - season: 6, - number: 8, - airdate: "2016-06-12", - airtime: "21:00", - airstamp: "2016-06-13T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/61/153044.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/61/153044.jpg", - }, - summary: - "

Jaime encounters a hero; the High Sparrow fixates on another prey; Arya hatches a new plan; Yara and Theon plot their next move; Olenna and Cersei discuss their families' futures.

While Jaime weighs his options, Cersei answers a request. Tyrion's plans bear fruit. Arya faces a new test.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/729573", - }, - }, - }, - { - id: 729574, - url: - "http://www.tvmaze.com/episodes/729574/game-of-thrones-6x09-battle-of-the-bastards", - name: "Battle of the Bastards", - season: 6, - number: 9, - airdate: "2016-06-19", - airtime: "21:00", - airstamp: "2016-06-20T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/62/155042.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/62/155042.jpg", - }, - summary: - "

Ramsay surprises his audience. Jon retaliates. Dany is true to her word.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/729574", - }, - }, - }, - { - id: 729575, - url: - "http://www.tvmaze.com/episodes/729575/game-of-thrones-6x10-the-winds-of-winter", - name: "The Winds of Winter", - season: 6, - number: 10, - airdate: "2016-06-26", - airtime: "21:00", - airstamp: "2016-06-27T01:00:00+00:00", - runtime: 69, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/63/157920.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/63/157920.jpg", - }, - summary: - "

Alliances are made, the High Sparrow is holding trials at King's Landing, Daenerys is sailing for the Seven Kingdoms and a new King of the North is crowned.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/729575", - }, - }, - }, - { - id: 937256, - url: - "http://www.tvmaze.com/episodes/937256/game-of-thrones-7x01-dragonstone", - name: "Dragonstone", - season: 7, - number: 1, - airdate: "2017-07-16", - airtime: "21:00", - airstamp: "2017-07-17T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/120/302038.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/120/302038.jpg", - }, - summary: - "

Jon organizes the defense of the North. Cersei tries to even the odds. Daenerys comes home.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/937256", - }, - }, - }, - { - id: 1221410, - url: - "http://www.tvmaze.com/episodes/1221410/game-of-thrones-7x02-stormborn", - name: "Stormborn", - season: 7, - number: 2, - airdate: "2017-07-23", - airtime: "21:00", - airstamp: "2017-07-24T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/120/302047.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/120/302047.jpg", - }, - summary: - "

Daenerys receives an unexpected visitor. Jon faces a revolt. Tyrion plans the conquest of Westeros.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/1221410", - }, - }, - }, - { - id: 1221411, - url: - "http://www.tvmaze.com/episodes/1221411/game-of-thrones-7x03-the-queens-justice", - name: "The Queen's Justice", - season: 7, - number: 3, - airdate: "2017-07-30", - airtime: "21:00", - airstamp: "2017-07-31T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/122/306938.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/122/306938.jpg", - }, - summary: - "

Daenerys holds court. Cersei returns a gift. Jaime learns from his mistakes.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/1221411", - }, - }, - }, - { - id: 1221412, - url: - "http://www.tvmaze.com/episodes/1221412/game-of-thrones-7x04-the-spoils-of-war", - name: "The Spoils of War", - season: 7, - number: 4, - airdate: "2017-08-06", - airtime: "21:00", - airstamp: "2017-08-07T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/123/307677.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/123/307677.jpg", - }, - summary: - "

Arya gets to the final destination. Daenerys takes it upon herself to strike back.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/1221412", - }, - }, - }, - { - id: 1221413, - url: - "http://www.tvmaze.com/episodes/1221413/game-of-thrones-7x05-eastwatch", - name: "Eastwatch", - season: 7, - number: 5, - airdate: "2017-08-13", - airtime: "21:00", - airstamp: "2017-08-14T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/124/310839.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/124/310839.jpg", - }, - summary: - "

Daenerys demands loyalty from the surviving Lannister soldiers; Jon heeds Bran's warning about White Walkers on the move; Cersei vows to vanquish anyone or anything that stands in her way.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/1221413", - }, - }, - }, - { - id: 1221414, - url: - "http://www.tvmaze.com/episodes/1221414/game-of-thrones-7x06-beyond-the-wall", - name: "Beyond the Wall", - season: 7, - number: 6, - airdate: "2017-08-20", - airtime: "21:00", - airstamp: "2017-08-21T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/125/312651.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/125/312651.jpg", - }, - summary: - "

Jon's mission continues north of the wall, but the odds against his ragged band of misfits may be greater than he imagined.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/1221414", - }, - }, - }, - { - id: 1221415, - url: - "http://www.tvmaze.com/episodes/1221415/game-of-thrones-7x07-the-dragon-and-the-wolf", - name: "The Dragon and the Wolf", - season: 7, - number: 7, - airdate: "2017-08-27", - airtime: "21:00", - airstamp: "2017-08-28T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/125/314502.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/125/314502.jpg", - }, - summary: - "

Cersei sits on the Iron Throne; Daenerys sails across the Narrow Sea; Jon Snow is King in the North, and winter is finally here.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/1221415", - }, - }, - }, - { - id: 1590943, - url: - "http://www.tvmaze.com/episodes/1590943/game-of-thrones-8x01-winterfell", - name: "Winterfell", - season: 8, - number: 1, - airdate: "2019-04-14", - airtime: "21:00", - airstamp: "2019-04-15T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/191/479477.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/191/479477.jpg", - }, - summary: - "

Arriving at Winterfell, Jon and Daenerys struggle to unite a divided North. Jon gets some big news.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/1590943", - }, - }, - }, - { - id: 1623964, - url: - "http://www.tvmaze.com/episodes/1623964/game-of-thrones-8x02-a-knight-of-the-seven-kingdoms", - name: "A Knight of the Seven Kingdoms", - season: 8, - number: 2, - airdate: "2019-04-21", - airtime: "21:00", - airstamp: "2019-04-22T01:00:00+00:00", - runtime: 60, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/192/482451.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/192/482451.jpg", - }, - summary: - "

Jaime faces judgement and Winterfell prepares for the battle to come.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/1623964", - }, - }, - }, - { - id: 1623965, - url: - "http://www.tvmaze.com/episodes/1623965/game-of-thrones-8x03-the-long-night", - name: "The Long Night", - season: 8, - number: 3, - airdate: "2019-04-28", - airtime: "21:00", - airstamp: "2019-04-29T01:00:00+00:00", - runtime: 90, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/192/482465.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/192/482465.jpg", - }, - summary: "

Winterfell fights the Army of the Dead.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/1623965", - }, - }, - }, - { - id: 1623966, - url: - "http://www.tvmaze.com/episodes/1623966/game-of-thrones-8x04-the-last-of-the-starks", - name: "The Last of the Starks", - season: 8, - number: 4, - airdate: "2019-05-05", - airtime: "21:00", - airstamp: "2019-05-06T01:00:00+00:00", - runtime: 78, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/195/487839.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/195/487839.jpg", - }, - summary: - "

The survivors plan their next steps; Cersei makes a power move.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/1623966", - }, - }, - }, - { - id: 1623967, - url: - "http://www.tvmaze.com/episodes/1623967/game-of-thrones-8x05-the-bells", - name: "The Bells", - season: 8, - number: 5, - airdate: "2019-05-12", - airtime: "21:00", - airstamp: "2019-05-13T01:00:00+00:00", - runtime: 79, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/196/491994.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/196/491994.jpg", - }, - summary: - "

Varys betrays his queen, and Daenerys brings her forces to King's Landing.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/1623967", - }, - }, - }, - { - id: 1623968, - url: - "http://www.tvmaze.com/episodes/1623968/game-of-thrones-8x06-the-iron-throne", - name: "The Iron Throne", - season: 8, - number: 6, - airdate: "2019-05-19", - airtime: "21:00", - airstamp: "2019-05-20T01:00:00+00:00", - runtime: 80, - image: { - medium: - "http://static.tvmaze.com/uploads/images/medium_landscape/198/495648.jpg", - original: - "http://static.tvmaze.com/uploads/images/original_untouched/198/495648.jpg", - }, - summary: - "

In the aftermath of the devastating attack on King's Landing, Daenerys must face the survivors.

", - _links: { - self: { - href: "http://api.tvmaze.com/episodes/1623968", - }, - }, - }, - ]; -} - From a063a733afc6845f628ebd1b43aaa4a0d4546fc3 Mon Sep 17 00:00:00 2001 From: Amir200524 Date: Sun, 16 Mar 2025 19:35:25 +0000 Subject: [PATCH 16/29] =?UTF-8?q?Update=20script.js=20=E2=80=93=20Fetch=20?= =?UTF-8?q?episodes=20dynamically?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- script.js | 159 ++++++++++++++++++++++++++---------------------------- 1 file changed, 77 insertions(+), 82 deletions(-) diff --git a/script.js b/script.js index 7474052..8093d14 100644 --- a/script.js +++ b/script.js @@ -1,95 +1,90 @@ -function setup() { - const allEpisodes = getAllEpisodes(); - makePageForEpisodes(allEpisodes); - createEpisodeSelector(allEpisodes); +document.addEventListener("DOMContentLoaded", () => { + const API_URL = "https://api.tvmaze.com/shows/82/episodes"; + const root = document.getElementById("root"); + const searchBar = document.getElementById("searchBar"); + const episodeSelector = document.getElementById("episodeSelector"); + const episodeCount = document.getElementById("episodeCount"); - // Event listener for search - document.getElementById("searchBar").addEventListener("input", function () { - const searchQuery = this.value.toLowerCase(); - const filteredEpisodes = allEpisodes.filter( - (episode) => - episode.name.toLowerCase().includes(searchQuery) || - episode.summary.toLowerCase().includes(searchQuery) - ); - makePageForEpisodes(filteredEpisodes); - }); + let episodes = []; // Store episodes to prevent multiple fetches - // Event listener for episode selector - document - .getElementById("episodeSelector") - .addEventListener("change", function () { - const selectedId = this.value; - if (selectedId === "all") { - makePageForEpisodes(allEpisodes); // Show all episodes - } else { - const selectedEpisode = allEpisodes.find((ep) => ep.id == selectedId); - makePageForEpisodes([selectedEpisode]); // Show only selected episode - } - }); -} + // Function to fetch episodes from API + async function fetchEpisodes() { + try { + root.innerHTML = "

Loading episodes...

"; // Show loading message -function createEpisodeSelector(episodeList) { - const selector = document.getElementById("episodeSelector"); - selector.innerHTML = ""; // Clear previous options - - // Add "Show All" option - const allOption = document.createElement("option"); - allOption.value = "all"; - allOption.textContent = "Show All Episodes"; - selector.appendChild(allOption); - - // Add episodes to dropdown - episodeList.forEach((episode) => { - const option = document.createElement("option"); - option.value = episode.id; - const episodeCode = `S${String(episode.season).padStart(2, "0")}E${String( - episode.number - ).padStart(2, "0")}`; - option.textContent = `${episodeCode} - ${episode.name}`; - selector.appendChild(option); - }); -} + const response = await fetch(API_URL); + if (!response.ok) throw new Error("Failed to fetch episodes."); -function makePageForEpisodes(episodeList) { - const rootElem = document.getElementById("root"); - rootElem.innerHTML = ""; // Clear previous content + episodes = await response.json(); + displayEpisodes(episodes); + populateDropdown(episodes); + } catch (error) { + root.innerHTML = `

Error loading episodes. Please try again later.

`; + console.error("Fetch Error:", error); + } + } - document.getElementById( - "episodeCount" - ).textContent = `Showing ${episodeList.length} episode(s)`; + // Function to display episodes + function displayEpisodes(episodeList) { + root.innerHTML = ""; // Clear previous content + if (episodeList.length === 0) { + root.innerHTML = "

No episodes found.

"; + return; + } - episodeList.forEach((episode) => { - const card = document.createElement("div"); - card.className = "episode-card"; - card.id = `episode-${episode.id}`; // Assign an ID for scrolling - - const episodeCode = `S${String(episode.season).padStart(2, "0")}E${String( - episode.number - ).padStart(2, "0")}`; - const title = document.createElement("h2"); - title.textContent = `${episode.name} (${episodeCode})`; + episodeList.forEach((episode) => { + const episodeCard = document.createElement("div"); + episodeCard.className = "episode-card"; + episodeCard.innerHTML = ` +

${formatEpisodeTitle(episode)}

+ ${episode.name} +

${episode.summary || "No summary available."}

+ More info + `; + root.appendChild(episodeCard); + }); - const img = document.createElement("img"); - img.src = episode.image - ? episode.image.medium - : "https://via.placeholder.com/300"; - img.alt = episode.name; + episodeCount.textContent = `Displaying ${episodeList.length} / ${episodes.length} episodes`; + } - const summary = document.createElement("p"); - summary.innerHTML = episode.summary; + // Function to format episode title + function formatEpisodeTitle(episode) { + const season = episode.season.toString().padStart(2, "0"); + const number = episode.number.toString().padStart(2, "0"); + return `S${season}E${number} - ${episode.name}`; + } - const link = document.createElement("a"); - link.href = episode._links.self.href; - link.target = "_blank"; - link.textContent = "More info on TVMaze"; + // Function to populate dropdown menu + function populateDropdown(episodeList) { + episodeSelector.innerHTML = ''; + episodeList.forEach((episode) => { + const option = document.createElement("option"); + option.value = episode.id; + option.textContent = formatEpisodeTitle(episode); + episodeSelector.appendChild(option); + }); + } - card.appendChild(title); - card.appendChild(img); - card.appendChild(summary); - card.appendChild(link); + // Event listener for search + searchBar.addEventListener("input", () => { + const query = searchBar.value.toLowerCase(); + const filteredEpisodes = episodes.filter((episode) => + episode.name.toLowerCase().includes(query) || + (episode.summary && episode.summary.toLowerCase().includes(query)) + ); + displayEpisodes(filteredEpisodes); + }); - rootElem.appendChild(card); + // Event listener for dropdown selection + episodeSelector.addEventListener("change", () => { + const selectedId = episodeSelector.value; + if (selectedId === "all") { + displayEpisodes(episodes); + } else { + const selectedEpisode = episodes.find((ep) => ep.id == selectedId); + displayEpisodes(selectedEpisode ? [selectedEpisode] : []); + } }); -} -window.onload = setup; + fetchEpisodes(); // Fetch data on page load +}); From a1e1164afd7110c3764c412c5ae52225b2494f04 Mon Sep 17 00:00:00 2001 From: Amir200524 Date: Sun, 16 Mar 2025 19:36:18 +0000 Subject: [PATCH 17/29] Removed episodes.js --- index.html | 57 +++++++++++++++++++++++++++--------------------------- 1 file changed, 28 insertions(+), 29 deletions(-) diff --git a/index.html b/index.html index 72e3702..3b73828 100644 --- a/index.html +++ b/index.html @@ -1,35 +1,34 @@ - - - - TV Show Project |AmirhosseinAminian - - - - -
-

Games of Thrones episodes

- - -

-
+ + + + TV Show Project | Amirhossein Aminian + + + -
- + +
+

Game of Thrones Episodes

+ + +

+
- - +
- - - - + + + + + + \ No newline at end of file From cd63a2d5b5fd4983f544302c532bfa292eb87a5d Mon Sep 17 00:00:00 2001 From: Amir200524 Date: Sun, 16 Mar 2025 19:37:20 +0000 Subject: [PATCH 18/29] New styles for loading messages and errors --- style.css | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/style.css b/style.css index d122167..b3e6083 100644 --- a/style.css +++ b/style.css @@ -1,6 +1,3 @@ -#root { - color: red; -} body { font-family: Arial, sans-serif; background-color: #f5f5f5; @@ -35,20 +32,12 @@ h1 { border-radius: 5px; } -#searchBar { - width: 30%; - padding: 10px; - margin: 10px 0; - border: solid; - border-radius: 5px; - font-size: 16px; -} - +#searchBar, #episodeSelector { width: 30%; padding: 10px; margin: 10px 0; - border:solid; + border: 1px solid #ccc; border-radius: 5px; font-size: 16px; } @@ -66,10 +55,21 @@ footer { bottom: 0; width: 100%; background-color: silver; - /* Dark background for contrast */ - color:black; - /* Light text */ + color: black; text-align: center; padding: 10px 0; font-size: 14px; } + +/* New styles for loading and errors */ +.loading { + font-size: 18px; + font-weight: bold; + color: #555; +} + +.error { + font-size: 18px; + font-weight: bold; + color: red; +} \ No newline at end of file From 3945278a1bb086f450de2e886896dc23295697fe Mon Sep 17 00:00:00 2001 From: AmirMontazeri Date: Wed, 19 Mar 2025 13:35:05 +0000 Subject: [PATCH 19/29] TV-show added to h1 --- index.html | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index 72e3702..d1b6e63 100644 --- a/index.html +++ b/index.html @@ -10,7 +10,10 @@
-

Games of Thrones episodes

+

TV-Show episodes

+ -

- - + + + \ No newline at end of file From 347175845a038d72d3c7b8ce442b8d6927f3fc24 Mon Sep 17 00:00:00 2001 From: Amir200524 Date: Wed, 19 Mar 2025 15:27:42 +0000 Subject: [PATCH 23/29] update JS --- script.js | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) diff --git a/script.js b/script.js index 8b13789..d47e4d8 100644 --- a/script.js +++ b/script.js @@ -1 +1,97 @@ +const showsApiUrl = "https://api.tvmaze.com/shows"; +let allShows = []; +let allEpisodes = {}; + +// Fetch and populate show selector +async function fetchShows() { + const showSelector = document.getElementById("showSelector"); + try { + const response = await fetch(showsApiUrl); + if (!response.ok) throw new Error("Failed to fetch shows"); + + allShows = await response.json(); + allShows.sort((a, b) => a.name.localeCompare(b.name, undefined, { sensitivity: 'base' })); + + showSelector.innerHTML = allShows.map(show => ``).join(""); + + fetchEpisodes(allShows[0].id); // Load first show's episodes by default + } catch (error) { + console.error("Error fetching shows:", error); + } +} + +// Fetch episodes for selected show +async function fetchEpisodes(showId) { + const rootElem = document.getElementById("root"); + rootElem.innerHTML = "

Loading episodes...

"; + + if (allEpisodes[showId]) { + makePageForEpisodes(allEpisodes[showId]); + return; + } + + try { + const response = await fetch(`https://api.tvmaze.com/shows/${showId}/episodes`); + if (!response.ok) throw new Error("Failed to fetch episodes"); + + allEpisodes[showId] = await response.json(); + makePageForEpisodes(allEpisodes[showId]); + createEpisodeSelector(allEpisodes[showId]); + } catch (error) { + rootElem.innerHTML = `

Failed to load episodes.

`; + console.error("Error fetching episodes:", error); + } +} + +// Populate episode dropdown and display episodes +function createEpisodeSelector(episodes) { + const selector = document.getElementById("episodeSelector"); + selector.innerHTML = `` + + episodes.map(episode => ``).join(""); +} + +function makePageForEpisodes(episodes) { + const rootElem = document.getElementById("root"); + rootElem.innerHTML = episodes.map(episode => ` +
+

${formatEpisodeTitle(episode)}

+ ${episode.name} +

${episode.summary || "No description available."}

+
+ `).join(""); +} + +// Format episode title +function formatEpisodeTitle(episode) { + return `S${String(episode.season).padStart(2, "0")}E${String(episode.number).padStart(2, "0")} - ${episode.name}`; +} + +// Handle search functionality +document.getElementById("searchBar").addEventListener("input", function () { + const query = this.value.toLowerCase(); + const selectedShowId = document.getElementById("showSelector").value; + const filteredEpisodes = allEpisodes[selectedShowId].filter( + (episode) => episode.name.toLowerCase().includes(query) || (episode.summary && episode.summary.toLowerCase().includes(query)) + ); + makePageForEpisodes(filteredEpisodes); +}); + +// Handle episode selection +document.getElementById("episodeSelector").addEventListener("change", function () { + const selectedId = this.value; + const selectedShowId = document.getElementById("showSelector").value; + if (selectedId === "all") { + makePageForEpisodes(allEpisodes[selectedShowId]); + } else { + makePageForEpisodes([allEpisodes[selectedShowId].find(ep => ep.id == selectedId)]); + } +}); + +// Handle show selection +document.getElementById("showSelector").addEventListener("change", function () { + fetchEpisodes(this.value); +}); + +// Initialize application +window.onload = fetchShows; From 4883d15ab63da65000b04743ebfad4e4d39217a9 Mon Sep 17 00:00:00 2001 From: Amir200524 Date: Wed, 19 Mar 2025 15:30:25 +0000 Subject: [PATCH 24/29] position for footer --- style.css | 1 + 1 file changed, 1 insertion(+) diff --git a/style.css b/style.css index fc499eb..7c5234a 100644 --- a/style.css +++ b/style.css @@ -52,6 +52,7 @@ p { footer { margin-top: 20px; + position: fixed; text-align: center; padding: 10px; From e2eb0cd89807c9ec47e19bbf42b6fe660ee0992e Mon Sep 17 00:00:00 2001 From: Amir200524 Date: Wed, 19 Mar 2025 15:37:23 +0000 Subject: [PATCH 25/29] updating style --- style.css | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/style.css b/style.css index 7c5234a..bf79fe9 100644 --- a/style.css +++ b/style.css @@ -1,6 +1,6 @@ body { font-family: Arial, sans-serif; - background-color: #f9f9f9; + background-color: silver; color: #333; margin: 0; padding: 0; @@ -9,18 +9,17 @@ body { h1 { margin-top: 20px; - color: #007bff; + color: black; } #searchBar, #showSelector, #episodeSelector { - width: 90%; + width: 30%; max-width: 600px; padding: 10px; margin: 10px auto; - border: 1px solid #ccc; + border: 3px solid #ccc; border-radius: 8px; font-size: 16px; - display: block; } #root { From 305a203c220151617c5445ac58786a48f325bf80 Mon Sep 17 00:00:00 2001 From: Amir200524 Date: Wed, 19 Mar 2025 16:16:42 +0000 Subject: [PATCH 26/29] shadow for boxes --- style.css | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/style.css b/style.css index bf79fe9..bc22600 100644 --- a/style.css +++ b/style.css @@ -20,6 +20,7 @@ h1 { border: 3px solid #ccc; border-radius: 8px; font-size: 16px; + box-shadow: 14px 14px 20px rgba(0, 0, 0, 0.1); } #root { @@ -52,10 +53,10 @@ p { footer { margin-top: 20px; position: fixed; - text-align: center; padding: 10px; - font-size: 14px; + font-size: 24px; + background-color: white; } /* New styles for loading and errors */ From 9dd810a11add3d870af63f391cbff1de22dd0422 Mon Sep 17 00:00:00 2001 From: Amir200524 Date: Wed, 19 Mar 2025 16:19:10 +0000 Subject: [PATCH 27/29] footer style --- style.css | 1 - 1 file changed, 1 deletion(-) diff --git a/style.css b/style.css index bc22600..17a177d 100644 --- a/style.css +++ b/style.css @@ -52,7 +52,6 @@ p { footer { margin-top: 20px; - position: fixed; text-align: center; padding: 10px; font-size: 24px; From 88a7e1232d16f6ea88334dfdf69b775492a61aeb Mon Sep 17 00:00:00 2001 From: Amir200524 Date: Mon, 24 Mar 2025 10:14:13 +0000 Subject: [PATCH 28/29] navigation button for returning --- index.html | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/index.html b/index.html index 70353d1..b66d15e 100644 --- a/index.html +++ b/index.html @@ -11,20 +11,18 @@
-

TV Show Episodes

- - - +

TV Show Explorer

+ +
-