aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarvin Borner2021-05-16 13:38:55 +0200
committerMarvin Borner2021-05-16 13:38:55 +0200
commita98ea0907ff4731a5d9fe8f5aa1168b8e70fd884 (patch)
treec84ad149828a3ea92cc31be64801ae718cd17c8f
parentdfa6d36a6edd5ad5190acf3401bad43480f8bcc0 (diff)
Added heatmap
-rw-r--r--assets/css/main.css26
-rwxr-xr-xassets/js/main.js358
-rwxr-xr-xassets/php/getData.php6
-rw-r--r--example.json3151
-rwxr-xr-xindex.html16
5 files changed, 3393 insertions, 164 deletions
diff --git a/assets/css/main.css b/assets/css/main.css
index 360f254..afb61a1 100644
--- a/assets/css/main.css
+++ b/assets/css/main.css
@@ -4,20 +4,18 @@
* @copyright Marvin Borner 2019
*/
-html, body {
+html,
+body {
padding: 8px;
- color: #ffffff;
+ color: #fff;
background-color: #141414;
font-family: "Varela Round", sans-serif !important;
text-rendering: optimizeLegibility !important;
}
-canvas {
- margin: 8px auto 0;
- width: 100%;
-}
-
-.loading, .stats {
+.loading,
+.stats,
+.input {
display: none;
}
@@ -29,14 +27,6 @@ canvas {
padding: 8px;
margin-top: 8px;
border: 1px solid white;
-}
-
-.heatMap {
- border-collapse: collapse;
-}
-
-.heatMap td {
- width: 2vw;
- height: 2vw;
- border: 1px solid white;
+ max-width: 800px;
+ margin: 8px auto;
}
diff --git a/assets/js/main.js b/assets/js/main.js
index 52b450c..77dc22e 100755
--- a/assets/js/main.js
+++ b/assets/js/main.js
@@ -10,27 +10,51 @@ const loading = document.querySelector("#loading");
const stats = document.querySelector("#stats");
const toggle = document.querySelector("#toggle");
-cookie.addEventListener("keyup", (e) => {
- if (e.key === "Enter") {
- const request = new XMLHttpRequest();
- request.onreadystatechange = () => {
- if (request.readyState === 4 && request.status === 200) {
- loading.style.display = "none";
- stats.style.display = "block";
- analyze(request.responseText);
- } else if (request.readyState === 4 && request.status !== 200)
- alert("Cookie is not valid!");
- };
- request.open("POST", "assets/php/getData.php", true);
- request.setRequestHeader(
- "Content-Type",
- "application/x-www-form-urlencoded"
- );
- request.send("cookie=" + cookie.value);
- loading.style.display = "block";
- cookieWrap.style.display = "none";
- }
-});
+function cookies() {
+ cookieWrap.style.display = "block";
+ cookie.addEventListener("keyup", (e) => {
+ if (e.key === "Enter") {
+ const request = new XMLHttpRequest();
+ request.onreadystatechange = () => {
+ if (request.readyState === 4 && request.status === 200) {
+ loading.style.display = "none";
+ stats.style.display = "block";
+ analyze(request.responseText);
+ } else if (request.readyState === 4 && request.status !== 200) {
+ alert("Cookie is not valid!");
+ }
+ };
+ request.open("POST", "assets/php/getData.php", true);
+ request.setRequestHeader(
+ "Content-Type",
+ "application/x-www-form-urlencoded"
+ );
+ request.send("cookie=" + cookie.value);
+ loading.style.display = "block";
+ cookieWrap.style.display = "none";
+ }
+ });
+}
+
+function tryDemo() {
+ const request = new XMLHttpRequest();
+ request.onreadystatechange = () => {
+ if (request.readyState === 4 && request.status === 200) {
+ cookieWrap.style.display = "none";
+ loading.style.display = "none";
+ stats.style.display = "block";
+ alert(
+ "Warning! You're using the example.json data. This is only for demonstration purposes and does NOT represent your real data!"
+ );
+ analyze(request.responseText);
+ } else if (request.readyState === 4 && request.status !== 200) {
+ console.log("Couldn't find demo, enabling cookie input");
+ cookies();
+ }
+ };
+ request.open("GET", "example.json", true);
+ request.send();
+}
function analyze(data) {
const filtered = {};
@@ -54,25 +78,12 @@ function analyze(data) {
obj.count++;
});
- setSizes();
drawTotalSpent(filtered);
drawTimeline(filtered);
drawTopTitles(filtered);
+ drawHeatmap(filtered);
toggle.onclick = () => drawTopTitles(filtered);
-
- console.log(filtered);
-}
-
-function setSizes() {
- const elements = document.getElementsByTagName("canvas");
- for (const elem of elements) {
- elem.setAttribute(
- "width",
- document.querySelector(".stats div").offsetWidth
- );
- elem.setAttribute("height", window.innerHeight / 2 + 200);
- }
}
function drawTotalSpent(data) {
@@ -80,10 +91,10 @@ function drawTotalSpent(data) {
.map((key) => data[key].duration)
.reduce((a, b) => a + b);
document.querySelector("#totalSpent").innerHTML = `
- Days: ${Math.floor(totalHours / 24)};
- Hours: ${Math.floor(totalHours)};
- Minutes: ${Math.round(totalHours * 60)};
- Seconds: ${Math.round(totalHours * 60 * 60)}`;
+ ${Math.floor(totalHours / 24)} days or
+ ${Math.floor(totalHours)} hours or
+ ${Math.round(totalHours * 60)} minutes or
+ ${Math.round(totalHours * 60 * 60)} seconds!`;
}
function drawTimeline(data) {
@@ -97,118 +108,201 @@ function drawTimeline(data) {
);
const ctx = document.getElementById("hourChart");
- new Chart(ctx, {
- type: "line",
- data: {
- labels: [...Array(24).keys()],
- datasets: [
- {
- data: occurrence,
- borderColor: "#e50914",
- },
- ],
+ const chart = new ApexCharts(ctx, {
+ chart: {
+ type: "line",
+ foreColor: "#fff",
+ background: "#141414",
},
- options: {
- responsive: false,
- maintainAspectRatio: true,
- legend: {
- display: false,
- },
- scales: {
- xAxes: [
- {
- gridLines: {
- color: "#424242",
- },
- },
- ],
- yAxes: [
- {
- gridLines: {
- color: "#424242",
- },
- },
- ],
+ theme: {
+ mode: "dark",
+ },
+ series: [
+ {
+ name: "Title count at hour",
+ data: occurrence,
},
+ ],
+ stroke: {
+ curve: "smooth",
+ },
+ dataLabels: {
+ enabled: false,
+ },
+ xaxis: {
+ categories: [...Array(24).keys()],
},
});
-
- console.log(occurrence);
+ chart.render();
}
let previous;
-
+let limited = false;
function drawTopTitles(data) {
- // Toggle layout
- toggle.setAttribute(
- "data-current",
- toggle.getAttribute("data-current") === "bar" ? "pie" : "bar"
- );
+ limited = !limited;
+ toggle.innerText = limited ? "View all" : "View less";
+ Array.prototype.limit = function () {
+ if (limited) return this.slice(0, 20);
+ return this;
+ };
+
if (previous) previous.destroy();
const ctx = document.getElementById("topChart");
- previous = new Chart(ctx, {
- type: toggle.getAttribute("data-current"),
- data: {
- labels: Object.keys(data).sort(
- (a, b) => data[b].duration - data[a].duration
- ),
- datasets: [
- {
- data: Object.keys(data)
- .map((key) => +data[key].duration.toFixed(2))
- .sort((a, b) => b - a),
- borderColor: "#424242",
- backgroundColor: Array.from(
- { length: Object.keys(data).length },
- () =>
- "#" +
- (
- "00000" +
- ((Math.random() * (1 << 24)) | 0).toString(16)
- ).slice(-6)
- ),
- },
- ],
+ previous = new ApexCharts(ctx, {
+ chart: {
+ type: "bar",
+ foreColor: "#fff",
+ background: "#141414",
+ },
+ theme: {
+ mode: "dark",
+ },
+ series: [
+ {
+ name: "Time in hours",
+ data: Object.keys(data)
+ .map((key) => +data[key].duration.toFixed(2))
+ .sort((a, b) => b - a)
+ .limit(),
+ },
+ ],
+ dataLabels: {
+ enabled: false,
+ },
+ xaxis: {
+ categories: Object.keys(data)
+ .sort((a, b) => data[b].duration - data[a].duration)
+ .limit(),
},
- options: {
- responsive: false,
- maintainAspectRatio: true,
- animation: {
- animateScale: true,
- animateRotate: true,
+ plotOptions: {
+ bar: {
+ horizontal: false,
},
- legend: {
- display: false,
+ donut: {
+ customScale: 0.4,
},
- scales: {
- xAxes: [
- {
- gridLines: {
- display:
- toggle.getAttribute("data-current") === "bar",
- color: "#424242",
+ },
+ });
+ previous.render();
+}
+
+// TODO: There may be a bug in the first week in January
+function drawHeatmap(data) {
+ Date.prototype.getWeek = function () {
+ var d = new Date(
+ Date.UTC(this.getFullYear(), this.getMonth(), this.getDate())
+ );
+ d.setUTCDate(d.getUTCDate() - d.getUTCDay());
+ var yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));
+ return Math.ceil(((d - yearStart) / 86400000 + 1) / 7);
+ };
+
+ const currentYear = new Date().getFullYear();
+ const currentWeek = new Date().getWeek();
+
+ const days = [[], [], [], [], [], [], []];
+ Object.keys(data).forEach((elem) => {
+ data[elem].dates.forEach((date) => {
+ if (date.getFullYear() != currentYear) return;
+
+ const day = date.getDay();
+ const week = date.getWeek();
+
+ if (week > currentWeek) return;
+
+ if (!days[day][week]) days[day][week] = 0;
+ days[day][week]++;
+ });
+ });
+
+ for (let i = 0; i < days.length; i++) {
+ for (let j = 0; j < days[i].length; j++) {
+ if (!days[i][j]) days[i][j] = 0;
+ }
+ }
+
+ const ctx = document.getElementById("heatMap");
+ const chart = new ApexCharts(ctx, {
+ chart: {
+ type: "heatmap",
+ foreColor: "#fff",
+ background: "#141414",
+ },
+ theme: {
+ mode: "dark",
+ },
+ series: [
+ {
+ name: "Saturday",
+ data: days[6],
+ },
+ {
+ name: "Friday",
+ data: days[5],
+ },
+ {
+ name: "Thursday",
+ data: days[4],
+ },
+ {
+ name: "Wednesday",
+ data: days[3],
+ },
+ {
+ name: "Tuesday",
+ data: days[2],
+ },
+ {
+ name: "Monday",
+ data: days[1],
+ },
+ {
+ name: "Sunday",
+ data: days[0],
+ },
+ ],
+ plotOptions: {
+ heatmap: {
+ colorScale: {
+ ranges: [
+ {
+ from: 0,
+ to: 5,
+ color: "#00a100",
+ name: "low",
},
- ticks: {
- display:
- toggle.getAttribute("data-current") === "bar",
+ {
+ from: 6,
+ to: 10,
+ color: "#128fd9",
+ name: "medium",
},
- },
- ],
- yAxes: [
- {
- gridLines: {
- display:
- toggle.getAttribute("data-current") === "bar",
- color: "#424242",
+ {
+ from: 10,
+ to: 20,
+ color: "#ffb200",
+ name: "high",
},
- ticks: {
- display:
- toggle.getAttribute("data-current") === "bar",
+ {
+ from: 21,
+ to: 100,
+ color: "#ff5100",
+ name: "very high",
},
- },
- ],
+ {
+ from: 101,
+ to: 1000,
+ color: "#e50914",
+ name: "wtf",
+ },
+ ],
+ },
},
},
});
+ chart.render();
}
+
+Apex.colors = ["#e50914"];
+tryDemo();
diff --git a/assets/php/getData.php b/assets/php/getData.php
index c392fc5..a236d49 100755
--- a/assets/php/getData.php
+++ b/assets/php/getData.php
@@ -6,14 +6,8 @@
* @copyright Marvin Borner 2018
*/
-$debug = true;
$cookie = $_POST['cookie'];
-if ($debug) {
- print_r(file_get_contents("../../debug.json"));
- die();
-}
-
if (!isset($cookie)) {
http_response_code(404);
die();
diff --git a/example.json b/example.json
new file mode 100644
index 0000000..b0db335
--- /dev/null
+++ b/example.json
@@ -0,0 +1,3151 @@
+[
+ [
+ {
+ "duration": 1182,
+ "date": 1621162627042,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1187,
+ "date": 1621112475579,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1231,
+ "date": 1621111678979,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1235,
+ "date": 1621111226965,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1265,
+ "date": 1621099622915,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1278,
+ "date": 1621098787302,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1170,
+ "date": 1621098068950,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1152,
+ "date": 1621097336480,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1202,
+ "date": 1621028805836,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1175,
+ "date": 1621028046277,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1232,
+ "date": 1621027205619,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1139,
+ "date": 1621026456091,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1255,
+ "date": 1621025641643,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1244,
+ "date": 1621024819502,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1276,
+ "date": 1621023938980,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1276,
+ "date": 1621023115240,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1197,
+ "date": 1621022329342,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1230,
+ "date": 1621021879278,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1283,
+ "date": 1621007974423,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1181,
+ "date": 1621007153260,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1151,
+ "date": 1620982992961,
+ "seriesTitle": "Wizards of Dos"
+ }
+ ],
+ [
+ {
+ "duration": 1179,
+ "date": 1620982230482,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1198,
+ "date": 1620981443098,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1214,
+ "date": 1620980664337,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1248,
+ "date": 1620979901701,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1240,
+ "date": 1620946506271,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1187,
+ "date": 1620945337671,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1256,
+ "date": 1620944549492,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1262,
+ "date": 1620936199348,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1263,
+ "date": 1620935368783,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1284,
+ "date": 1620934617525,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1188,
+ "date": 1620933848709,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1276,
+ "date": 1620916459097,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1283,
+ "date": 1620915679038,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1264,
+ "date": 1620915623727,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1287,
+ "date": 1620912551401,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1251,
+ "date": 1620909886722,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1171,
+ "date": 1620909128221,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1277,
+ "date": 1620908289233,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1261,
+ "date": 1620907281731,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1276,
+ "date": 1620906454550,
+ "seriesTitle": "Wizards of Dos"
+ }
+ ],
+ [
+ {
+ "duration": 1283,
+ "date": 1620859539970,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1288,
+ "date": 1620857310129,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1152,
+ "date": 1620856561279,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1286,
+ "date": 1620855439756,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1215,
+ "date": 1620854500904,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1253,
+ "date": 1620852511565,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1275,
+ "date": 1620851675529,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1286,
+ "date": 1620850841750,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1228,
+ "date": 1620811940416,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1229,
+ "date": 1620774720250,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1282,
+ "date": 1620774515393,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1244,
+ "date": 1620752879384,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1177,
+ "date": 1620752119991,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1232,
+ "date": 1620751700210,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1280,
+ "date": 1620748964664,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1265,
+ "date": 1620748141949,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1190,
+ "date": 1620747361520,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1283,
+ "date": 1620747137793,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1288,
+ "date": 1620726476745,
+ "seriesTitle": "Wizards of Dos"
+ }
+ ],
+ [
+ {
+ "duration": 1202,
+ "date": 1620725682141,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1204,
+ "date": 1620724040475,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1185,
+ "date": 1620723224974,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1285,
+ "date": 1620687479434,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1288,
+ "date": 1620686305454,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1184,
+ "date": 1620685511028,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1270,
+ "date": 1620653987276,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1242,
+ "date": 1620652763518,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1253,
+ "date": 1620651383041,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1285,
+ "date": 1620650174054,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1261,
+ "date": 1620589807053,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1284,
+ "date": 1620588977568,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1231,
+ "date": 1620588187032,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1199,
+ "date": 1620582243679,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1289,
+ "date": 1620580519329,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1282,
+ "date": 1620578947426,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1290,
+ "date": 1620577900663,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1220,
+ "date": 1620577810837,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1205,
+ "date": 1620566825600,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1259,
+ "date": 1620565928976,
+ "seriesTitle": "Wizards of Dos"
+ }
+ ],
+ [
+ {
+ "duration": 1152,
+ "date": 1620565488828,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1290,
+ "date": 1620556878635,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1292,
+ "date": 1620422877754,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1232,
+ "date": 1620421998064,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1172,
+ "date": 1620410709333,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1287,
+ "date": 1620409789760,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1250,
+ "date": 1620408407143,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1286,
+ "date": 1620407474314,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1211,
+ "date": 1620406639767,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1209,
+ "date": 1620405842302,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1277,
+ "date": 1620404978803,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1207,
+ "date": 1620404152030,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1258,
+ "date": 1620396298623,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1285,
+ "date": 1620394778611,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1229,
+ "date": 1620393542600,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1260,
+ "date": 1620310591532,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1279,
+ "date": 1620306192538,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1126,
+ "date": 1620305105833,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1217,
+ "date": 1620289356543,
+ "seriesTitle": "Wizards of Dos"
+ }
+ ],
+ [
+ {
+ "duration": 1279,
+ "date": 1620289324485,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1170,
+ "date": 1620285718757,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1188,
+ "date": 1620284937741,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1153,
+ "date": 1620248653942,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1254,
+ "date": 1620247785845,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1171,
+ "date": 1620246422385,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1175,
+ "date": 1620245982050,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1266,
+ "date": 1620210678294,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1275,
+ "date": 1620209825448,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1224,
+ "date": 1620207341350,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1281,
+ "date": 1620206349449,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1292,
+ "date": 1620205832779,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1274,
+ "date": 1620168902307,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1112,
+ "date": 1620168634972,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1292,
+ "date": 1620148756932,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1208,
+ "date": 1620147918886,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1220,
+ "date": 1620147112325,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1230,
+ "date": 1620146278444,
+ "seriesTitle": "Wizards of Dos"
+ }
+ ],
+ [
+ {
+ "duration": 1273,
+ "date": 1620145441855,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1275,
+ "date": 1620143855581,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1253,
+ "date": 1620143031057,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1290,
+ "date": 1620142123565,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1284,
+ "date": 1620141236596,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1276,
+ "date": 1620140393998,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1260,
+ "date": 1620140091880,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1277,
+ "date": 1620124062760,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1258,
+ "date": 1620123239467,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1206,
+ "date": 1620122440815,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1267,
+ "date": 1620121753756,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1254,
+ "date": 1620118124747,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1197,
+ "date": 1620080836892,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1278,
+ "date": 1620079994553,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1271,
+ "date": 1620079144445,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1269,
+ "date": 1620052067867,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1303,
+ "date": 1620051764128,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1205,
+ "date": 1620037669357,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1185,
+ "date": 1620036936319,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1309,
+ "date": 1620034072219,
+ "seriesTitle": "Wizards of Dos"
+ }
+ ],
+ [
+ {
+ "duration": 1200,
+ "date": 1619996401962,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1298,
+ "date": 1619995555640,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1202,
+ "date": 1619994764087,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1315,
+ "date": 1619993950012,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1236,
+ "date": 1619993138390,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1166,
+ "date": 1619976278454,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1206,
+ "date": 1619975622911,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1269,
+ "date": 1619909566100,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1257,
+ "date": 1619908736445,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1206,
+ "date": 1619907949879,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1235,
+ "date": 1619907144567,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1235,
+ "date": 1619906913555,
+ "seriesTitle": "How I Wrote Your Code"
+ },
+ {
+ "duration": 2562,
+ "date": 1619906788421,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2404,
+ "date": 1619906754046,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 3139,
+ "date": 1619906636132,
+ "seriesTitle": "Magic for Noobs"
+ },
+ {
+ "duration": 1318,
+ "date": 1619822105126,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1263,
+ "date": 1619821275762,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1368,
+ "date": 1619821153279,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1311,
+ "date": 1619818400074,
+ "seriesTitle": "How I Wrote Your Code"
+ },
+ {
+ "duration": 1311,
+ "date": 1619817321275,
+ "seriesTitle": "How I Wrote Your Code"
+ }
+ ],
+ [
+ {
+ "duration": 1384,
+ "date": 1619795562411,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1190,
+ "date": 1619794709234,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1224,
+ "date": 1619793910512,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1189,
+ "date": 1619793074730,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1140,
+ "date": 1619792247218,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1209,
+ "date": 1619791485855,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1288,
+ "date": 1619791317689,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1173,
+ "date": 1619777055429,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1202,
+ "date": 1619775490316,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1264,
+ "date": 1619737881472,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1168,
+ "date": 1619737545743,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1204,
+ "date": 1619736225452,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1190,
+ "date": 1619735473648,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1155,
+ "date": 1619734758778,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1244,
+ "date": 1619714738634,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1214,
+ "date": 1619713939540,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1259,
+ "date": 1619713912038,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1150,
+ "date": 1619702559474,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1149,
+ "date": 1619701776116,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1128,
+ "date": 1619691740490,
+ "seriesTitle": "Wizards of Dos"
+ }
+ ],
+ [
+ {
+ "duration": 1135,
+ "date": 1619690918776,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1220,
+ "date": 1619651203634,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1265,
+ "date": 1619649890366,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1233,
+ "date": 1619649106834,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1298,
+ "date": 1619648272459,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1205,
+ "date": 1619647431925,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1145,
+ "date": 1619646685072,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1231,
+ "date": 1619645709365,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1264,
+ "date": 1619644622046,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1239,
+ "date": 1619625689596,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1214,
+ "date": 1619624606173,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1228,
+ "date": 1619623679161,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1129,
+ "date": 1619622940516,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1258,
+ "date": 1619622139405,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1163,
+ "date": 1619618338977,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1274,
+ "date": 1619617462841,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1219,
+ "date": 1619616656848,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1185,
+ "date": 1619614772879,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1284,
+ "date": 1619613872691,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1135,
+ "date": 1619613130196,
+ "seriesTitle": "Wizards of Dos"
+ }
+ ],
+ [
+ {
+ "duration": 1129,
+ "date": 1619612215349,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1179,
+ "date": 1619611445789,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1272,
+ "date": 1619611199543,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1137,
+ "date": 1619569503848,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1247,
+ "date": 1619568667852,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1221,
+ "date": 1619567868802,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1274,
+ "date": 1619566987313,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1239,
+ "date": 1619565099165,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1170,
+ "date": 1619564318368,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1151,
+ "date": 1619563595789,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1197,
+ "date": 1619562749452,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1181,
+ "date": 1619561926621,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1147,
+ "date": 1619560828600,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 2384,
+ "date": 1619535010184,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2440,
+ "date": 1619534597829,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 3635,
+ "date": 1619392416453,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3365,
+ "date": 1619392364284,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3563,
+ "date": 1619307300615,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3225,
+ "date": 1619299796031,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3535,
+ "date": 1619296308905,
+ "seriesTitle": "CS Crowd"
+ }
+ ],
+ [
+ {
+ "duration": 3267,
+ "date": 1619293158307,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3591,
+ "date": 1619281036971,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3579,
+ "date": 1619276544766,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3305,
+ "date": 1619273169892,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3515,
+ "date": 1619269156063,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3579,
+ "date": 1619268513994,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3343,
+ "date": 1619220510484,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3766,
+ "date": 1619214023533,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3313,
+ "date": 1619209258122,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3239,
+ "date": 1619208372293,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3473,
+ "date": 1619196820897,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3469,
+ "date": 1619192675509,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3453,
+ "date": 1619189117330,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3621,
+ "date": 1619129449864,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3063,
+ "date": 1619126452136,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 4506,
+ "date": 1619117691582,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3331,
+ "date": 1619106406004,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3623,
+ "date": 1619102917734,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3541,
+ "date": 1619099397577,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3363,
+ "date": 1619095423222,
+ "seriesTitle": "CS Crowd"
+ }
+ ],
+ [
+ {
+ "duration": 3305,
+ "date": 1619092113999,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 5297,
+ "date": 1619086867698,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3597,
+ "date": 1619048399924,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3327,
+ "date": 1619043306306,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3547,
+ "date": 1619020991157,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3337,
+ "date": 1619017177754,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3601,
+ "date": 1619016850349,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3829,
+ "date": 1618961908464,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3133,
+ "date": 1618956505142,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3073,
+ "date": 1618934033338,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3447,
+ "date": 1618919785457,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3399,
+ "date": 1618876583759,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3523,
+ "date": 1618873135738,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3553,
+ "date": 1618850205485,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3515,
+ "date": 1618849407088,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3377,
+ "date": 1618790145699,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3489,
+ "date": 1618784648680,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3431,
+ "date": 1618779750316,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3473,
+ "date": 1618776380399,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3559,
+ "date": 1618773981682,
+ "seriesTitle": "CS Crowd"
+ }
+ ],
+ [
+ {
+ "duration": 3559,
+ "date": 1618762480471,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3585,
+ "date": 1618757885281,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3331,
+ "date": 1618698398045,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3299,
+ "date": 1618694744930,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3443,
+ "date": 1618694419216,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3455,
+ "date": 1618678746998,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3405,
+ "date": 1618656129084,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3337,
+ "date": 1618612013618,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 3573,
+ "date": 1618611458071,
+ "seriesTitle": "CS Crowd"
+ },
+ {
+ "duration": 1311,
+ "date": 1618565526996,
+ "seriesTitle": "How I Wrote Your Code"
+ },
+ {
+ "duration": 2522,
+ "date": 1618504918381,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2582,
+ "date": 1618404128194,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 1329,
+ "date": 1618386125162,
+ "seriesTitle": "How I Wrote Your Code"
+ },
+ {
+ "duration": 1399,
+ "date": 1618386101866,
+ "seriesTitle": "1337 f0r n00b5"
+ },
+ {
+ "duration": 1439,
+ "date": 1618386083750,
+ "seriesTitle": "1337 f0r n00b5"
+ },
+ {
+ "duration": 1479,
+ "date": 1618386030532,
+ "seriesTitle": "1337 f0r n00b5"
+ },
+ {
+ "duration": 1419,
+ "date": 1618386027821,
+ "seriesTitle": "1337 f0r n00b5"
+ },
+ {
+ "duration": 2594,
+ "date": 1618328894659,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2506,
+ "date": 1618328328492,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2530,
+ "date": 1618315964897,
+ "seriesTitle": "OSDev for Beginners"
+ }
+ ],
+ [
+ {
+ "duration": 2480,
+ "date": 1618240734908,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2352,
+ "date": 1618231464176,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2402,
+ "date": 1618229057933,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2488,
+ "date": 1618228574072,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2592,
+ "date": 1618180724909,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 3572,
+ "date": 1618175354900,
+ "seriesTitle": "DIY Phone in 3 steps"
+ },
+ {
+ "duration": 2996,
+ "date": 1618172154778,
+ "seriesTitle": "DIY Phone in 3 steps"
+ },
+ {
+ "duration": 3280,
+ "date": 1618168675159,
+ "seriesTitle": "DIY Phone in 3 steps"
+ },
+ {
+ "duration": 3188,
+ "date": 1618155327491,
+ "seriesTitle": "DIY Phone in 3 steps"
+ },
+ {
+ "duration": 3070,
+ "date": 1618152000136,
+ "seriesTitle": "DIY Phone in 3 steps"
+ },
+ {
+ "duration": 2936,
+ "date": 1618151127959,
+ "seriesTitle": "DIY Phone in 3 steps"
+ },
+ {
+ "duration": 3046,
+ "date": 1618142523630,
+ "seriesTitle": "DIY Phone in 3 steps"
+ },
+ {
+ "duration": 3078,
+ "date": 1618096661702,
+ "seriesTitle": "DIY Phone in 3 steps"
+ },
+ {
+ "duration": 3176,
+ "date": 1618092866310,
+ "seriesTitle": "DIY Phone in 3 steps"
+ },
+ {
+ "duration": 3106,
+ "date": 1618089752399,
+ "seriesTitle": "DIY Phone in 3 steps"
+ },
+ {
+ "duration": 2986,
+ "date": 1618089703192,
+ "seriesTitle": "DIY Phone in 3 steps"
+ },
+ {
+ "duration": 2362,
+ "date": 1618007274877,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2582,
+ "date": 1617922198071,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2538,
+ "date": 1617921688663,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 3216,
+ "date": 1617917452420,
+ "seriesTitle": "Vegan Lifestyle"
+ }
+ ],
+ [
+ {
+ "duration": 2670,
+ "date": 1617916810902,
+ "seriesTitle": "Vegan Lifestyle"
+ },
+ {
+ "duration": 2942,
+ "date": 1617910770346,
+ "seriesTitle": "Vegan Lifestyle"
+ },
+ {
+ "duration": 3300,
+ "date": 1617896534631,
+ "seriesTitle": "Vegan Lifestyle"
+ },
+ {
+ "duration": 3096,
+ "date": 1617892819921,
+ "seriesTitle": "Vegan Lifestyle"
+ },
+ {
+ "duration": 3356,
+ "date": 1617887541158,
+ "seriesTitle": "Vegan Lifestyle"
+ },
+ {
+ "duration": 2510,
+ "date": 1617839267790,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 3308,
+ "date": 1617831151043,
+ "seriesTitle": "Vegan Lifestyle"
+ },
+ {
+ "duration": 3458,
+ "date": 1617827442193,
+ "seriesTitle": "Vegan Lifestyle"
+ },
+ {
+ "duration": 1311,
+ "date": 1617729989635,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 1312,
+ "date": 1617728063808,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 1313,
+ "date": 1617728022025,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 1310,
+ "date": 1617727854806,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 2464,
+ "date": 1617720679556,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2564,
+ "date": 1617717139791,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2350,
+ "date": 1617717096409,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 1307,
+ "date": 1617668910710,
+ "seriesTitle": "How I Wrote Your Code"
+ },
+ {
+ "duration": 1309,
+ "date": 1617668901805,
+ "seriesTitle": "How I Wrote Your Code"
+ },
+ {
+ "duration": 3846,
+ "date": 1617666662773,
+ "seriesTitle": "Parry Hotter"
+ }
+ ],
+ [
+ {
+ "duration": 3063,
+ "date": 1617625437372,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 2342,
+ "date": 1617579133517,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2554,
+ "date": 1617492643902,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2590,
+ "date": 1617492634117,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 3494,
+ "date": 1617407093572,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3327,
+ "date": 1617377441416,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3692,
+ "date": 1617320975392,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3496,
+ "date": 1617300015445,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3588,
+ "date": 1617284822701,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3618,
+ "date": 1617281579301,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3654,
+ "date": 1617268963898,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3333,
+ "date": 1617268860521,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3526,
+ "date": 1617233008182,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3464,
+ "date": 1617224693991,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3540,
+ "date": 1617221913705,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3504,
+ "date": 1617206810904,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3417,
+ "date": 1617203255459,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3654,
+ "date": 1617199047243,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3730,
+ "date": 1617195283741,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3245,
+ "date": 1617192491545,
+ "seriesTitle": "Parry Hotter"
+ }
+ ],
+ [
+ {
+ "duration": 3484,
+ "date": 1617183550968,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3253,
+ "date": 1617180498084,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3476,
+ "date": 1617142630887,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3826,
+ "date": 1617123199008,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3702,
+ "date": 1617094610220,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3393,
+ "date": 1617056398641,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3321,
+ "date": 1617056247079,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3355,
+ "date": 1617035721546,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3834,
+ "date": 1617032002390,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3674,
+ "date": 1617026319838,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3401,
+ "date": 1617023299470,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3331,
+ "date": 1616951532587,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3005,
+ "date": 1616881931384,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3245,
+ "date": 1616795447744,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3630,
+ "date": 1616793771185,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3462,
+ "date": 1616769811843,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3439,
+ "date": 1616754522967,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 3716,
+ "date": 1616712666687,
+ "seriesTitle": "Parry Hotter"
+ },
+ {
+ "duration": 1311,
+ "date": 1616684419141,
+ "seriesTitle": "How I Wrote Your Code"
+ },
+ {
+ "duration": 1311,
+ "date": 1616683287991,
+ "seriesTitle": "How I Wrote Your Code"
+ }
+ ],
+ [
+ {
+ "duration": 1114,
+ "date": 1616596467949,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 1187,
+ "date": 1616595308506,
+ "seriesTitle": "Wizards of Dos"
+ },
+ {
+ "duration": 2404,
+ "date": 1616595283881,
+ "seriesTitle": "WHY?"
+ },
+ {
+ "duration": 1309,
+ "date": 1616521523767,
+ "seriesTitle": "How I Wrote Your Code"
+ },
+ {
+ "duration": 1313,
+ "date": 1616433143596,
+ "seriesTitle": "How I Wrote Your Code"
+ },
+ {
+ "duration": 1311,
+ "date": 1616339759208,
+ "seriesTitle": "How I Wrote Your Code"
+ },
+ {
+ "duration": 1309,
+ "date": 1616338311350,
+ "seriesTitle": "How I Wrote Your Code"
+ },
+ {
+ "duration": 1315,
+ "date": 1616283663323,
+ "seriesTitle": "How I Wrote Your Code"
+ },
+ {
+ "duration": 1319,
+ "date": 1616282211040,
+ "seriesTitle": "How I Wrote Your Code"
+ },
+ {
+ "duration": 3372,
+ "date": 1616190001742,
+ "seriesTitle": "I Can't C#"
+ },
+ {
+ "duration": 2682,
+ "date": 1616175535192,
+ "seriesTitle": "I Can't C#"
+ },
+ {
+ "duration": 2574,
+ "date": 1615987780472,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2780,
+ "date": 1615913583512,
+ "seriesTitle": "5D Chess"
+ },
+ {
+ "duration": 3558,
+ "date": 1615913571481,
+ "seriesTitle": "5D Chess"
+ },
+ {
+ "duration": 3618,
+ "date": 1615913551559,
+ "seriesTitle": "5D Chess"
+ },
+ {
+ "duration": 2380,
+ "date": 1615886842021,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2586,
+ "date": 1615824652568,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2532,
+ "date": 1615824070342,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2594,
+ "date": 1615823834890,
+ "seriesTitle": "OSDev for Beginners"
+ }
+ ],
+ [
+ {
+ "duration": 2506,
+ "date": 1615720414037,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2618,
+ "date": 1615675858275,
+ "seriesTitle": "I Can't C#"
+ },
+ {
+ "duration": 2662,
+ "date": 1615675392217,
+ "seriesTitle": "How to Walk"
+ },
+ {
+ "duration": 1367,
+ "date": 1615541048014,
+ "seriesTitle": "1337 f0r n00b5"
+ },
+ {
+ "duration": 3596,
+ "date": 1615500986760,
+ "seriesTitle": "Cooking for Noobs"
+ },
+ {
+ "duration": 3332,
+ "date": 1615499056739,
+ "seriesTitle": "Cooking for Noobs"
+ },
+ {
+ "duration": 3234,
+ "date": 1615495156960,
+ "seriesTitle": "Cooking for Noobs"
+ },
+ {
+ "duration": 3326,
+ "date": 1615480417987,
+ "seriesTitle": "Cooking for Noobs"
+ },
+ {
+ "duration": 3332,
+ "date": 1615476681108,
+ "seriesTitle": "Cooking for Noobs"
+ },
+ {
+ "duration": 3510,
+ "date": 1615472559145,
+ "seriesTitle": "Cooking for Noobs"
+ },
+ {
+ "duration": 3592,
+ "date": 1615468878094,
+ "seriesTitle": "Cooking for Noobs"
+ },
+ {
+ "duration": 3098,
+ "date": 1615467451606,
+ "seriesTitle": "Cooking for Noobs"
+ },
+ {
+ "duration": 2892,
+ "date": 1615410560062,
+ "seriesTitle": "Cooking for Noobs"
+ },
+ {
+ "duration": 3230,
+ "date": 1615404784980,
+ "seriesTitle": "Cooking for Noobs"
+ },
+ {
+ "duration": 2482,
+ "date": 1615393543199,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 3352,
+ "date": 1615388286199,
+ "seriesTitle": "I Can't C#"
+ },
+ {
+ "duration": 2622,
+ "date": 1615388223751,
+ "seriesTitle": "I Can't C#"
+ },
+ {
+ "duration": 2696,
+ "date": 1615372632024,
+ "seriesTitle": "I Can't C#"
+ },
+ {
+ "duration": 2942,
+ "date": 1615369926244,
+ "seriesTitle": "I Can't C#"
+ },
+ {
+ "duration": 2684,
+ "date": 1615329811966,
+ "seriesTitle": "I Can't C#"
+ }
+ ],
+ [
+ {
+ "duration": 2632,
+ "date": 1615328465158,
+ "seriesTitle": "I Can't C#"
+ },
+ {
+ "duration": 3154,
+ "date": 1615221960383,
+ "seriesTitle": "I Can't C#"
+ },
+ {
+ "duration": 3106,
+ "date": 1615219038436,
+ "seriesTitle": "I Can't C#"
+ },
+ {
+ "duration": 2542,
+ "date": 1614989241548,
+ "seriesTitle": "I Can't C#"
+ },
+ {
+ "duration": 2918,
+ "date": 1614896366392,
+ "seriesTitle": "I Can't C#"
+ },
+ {
+ "duration": 2444,
+ "date": 1614896101998,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2434,
+ "date": 1614895246361,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2562,
+ "date": 1614895242734,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 1447,
+ "date": 1614871651362,
+ "seriesTitle": "1337 f0r n00b5"
+ },
+ {
+ "duration": 1321,
+ "date": 1614871631474,
+ "seriesTitle": "1337 f0r n00b5"
+ },
+ {
+ "duration": 2560,
+ "date": 1614869757238,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2592,
+ "date": 1614867159570,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2574,
+ "date": 1614814796097,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2540,
+ "date": 1614783990322,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2410,
+ "date": 1614727829997,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2592,
+ "date": 1614725306853,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2450,
+ "date": 1614725281911,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2408,
+ "date": 1614700957022,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2416,
+ "date": 1614700790435,
+ "seriesTitle": "OSDev for Beginners"
+ }
+ ],
+ [
+ {
+ "duration": 3299,
+ "date": 1614633373180,
+ "seriesTitle": "history of the entire world"
+ },
+ {
+ "duration": 3405,
+ "date": 1614630089262,
+ "seriesTitle": "history of the entire world"
+ },
+ {
+ "duration": 3349,
+ "date": 1614626789376,
+ "seriesTitle": "history of the entire world"
+ },
+ {
+ "duration": 3341,
+ "date": 1614626646165,
+ "seriesTitle": "history of the entire world"
+ },
+ {
+ "duration": 3287,
+ "date": 1614615309121,
+ "seriesTitle": "history of the entire world"
+ },
+ {
+ "duration": 3259,
+ "date": 1614603072405,
+ "seriesTitle": "history of the entire world"
+ },
+ {
+ "duration": 3081,
+ "date": 1614560633178,
+ "seriesTitle": "history of the entire world"
+ },
+ {
+ "duration": 3031,
+ "date": 1614557703777,
+ "seriesTitle": "history of the entire world"
+ },
+ {
+ "duration": 3021,
+ "date": 1614553876673,
+ "seriesTitle": "history of the entire world"
+ },
+ {
+ "duration": 3499,
+ "date": 1614550487120,
+ "seriesTitle": "history of the entire world"
+ },
+ {
+ "duration": 3044,
+ "date": 1614469579604,
+ "seriesTitle": "Women in Black"
+ },
+ {
+ "duration": 2792,
+ "date": 1614465064126,
+ "seriesTitle": "Women in Black"
+ },
+ {
+ "duration": 3190,
+ "date": 1614460040012,
+ "seriesTitle": "Women in Black"
+ },
+ {
+ "duration": 3020,
+ "date": 1614388560447,
+ "seriesTitle": "Women in Black"
+ },
+ {
+ "duration": 2996,
+ "date": 1614387563053,
+ "seriesTitle": "Women in Black"
+ },
+ {
+ "duration": 2576,
+ "date": 1614352073696,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2492,
+ "date": 1614295991269,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 3040,
+ "date": 1614292903711,
+ "seriesTitle": "Women in Black"
+ },
+ {
+ "duration": 2536,
+ "date": 1614262337833,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2484,
+ "date": 1614210122024,
+ "seriesTitle": "OSDev for Beginners"
+ }
+ ],
+ [
+ {
+ "duration": 2468,
+ "date": 1614207683377,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2584,
+ "date": 1614180975633,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2400,
+ "date": 1614177605258,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2612,
+ "date": 1614120418841,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2436,
+ "date": 1614093832127,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2502,
+ "date": 1614092750914,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 1317,
+ "date": 1614035821085,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 2614,
+ "date": 1614032619554,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2556,
+ "date": 1614012286289,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2550,
+ "date": 1613953485929,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2622,
+ "date": 1613919982621,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2516,
+ "date": 1613919858916,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 3009,
+ "date": 1613664179015,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 2809,
+ "date": 1613662496958,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 2573,
+ "date": 1613604541393,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 2947,
+ "date": 1613601625078,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 2567,
+ "date": 1613599137714,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 2647,
+ "date": 1613576238004,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 2697,
+ "date": 1613574623083,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 2731,
+ "date": 1613559038107,
+ "seriesTitle": "Guide to the Space"
+ }
+ ],
+ [
+ {
+ "duration": 2883,
+ "date": 1613518334171,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 2887,
+ "date": 1613515542502,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 2745,
+ "date": 1613515488563,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 2701,
+ "date": 1613515476190,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 2685,
+ "date": 1613515408339,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 1313,
+ "date": 1613472785489,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 2685,
+ "date": 1613439291756,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 2685,
+ "date": 1613436695862,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 2685,
+ "date": 1613432034875,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 2685,
+ "date": 1613431660600,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 2685,
+ "date": 1613403054353,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 2697,
+ "date": 1613351398007,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 2685,
+ "date": 1613345003521,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 2735,
+ "date": 1613344550874,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 2719,
+ "date": 1613262925101,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 2683,
+ "date": 1613244890379,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 2749,
+ "date": 1613169881585,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 2683,
+ "date": 1613139360658,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 1313,
+ "date": 1613129238993,
+ "seriesTitle": "Why JS sucks"
+ }
+ ],
+ [
+ {
+ "duration": 2771,
+ "date": 1613126481068,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 1312,
+ "date": 1613084838598,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 1314,
+ "date": 1613084722679,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 2743,
+ "date": 1612975012607,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 2677,
+ "date": 1612912943950,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 2695,
+ "date": 1612833278101,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 2713,
+ "date": 1612831015870,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 2727,
+ "date": 1612798908232,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 2811,
+ "date": 1612798839754,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 1311,
+ "date": 1612659720108,
+ "seriesTitle": "How I Wrote Your Code"
+ },
+ {
+ "duration": 1315,
+ "date": 1612658434773,
+ "seriesTitle": "How I Wrote Your Code"
+ },
+ {
+ "duration": 1307,
+ "date": 1612658425334,
+ "seriesTitle": "How I Wrote Your Code"
+ },
+ {
+ "duration": 2797,
+ "date": 1612657600530,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 3013,
+ "date": 1612573739372,
+ "seriesTitle": "Guide to the Space"
+ },
+ {
+ "duration": 1353,
+ "date": 1612539912136,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 1301,
+ "date": 1612523210794,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 2981,
+ "date": 1612482833770,
+ "seriesTitle": "Tar Shrek"
+ },
+ {
+ "duration": 2981,
+ "date": 1612480035345,
+ "seriesTitle": "Tar Shrek"
+ },
+ {
+ "duration": 3103,
+ "date": 1612313752099,
+ "seriesTitle": "Tar Shrek"
+ },
+ {
+ "duration": 3089,
+ "date": 1612313631792,
+ "seriesTitle": "Tar Shrek"
+ }
+ ],
+ [
+ {
+ "duration": 2823,
+ "date": 1612295330187,
+ "seriesTitle": "Tar Shrek"
+ },
+ {
+ "duration": 2783,
+ "date": 1612294625767,
+ "seriesTitle": "Tar Shrek"
+ },
+ {
+ "duration": 2755,
+ "date": 1612277688475,
+ "seriesTitle": "Tar Shrek"
+ },
+ {
+ "duration": 2703,
+ "date": 1612274659476,
+ "seriesTitle": "Tar Shrek"
+ },
+ {
+ "duration": 2905,
+ "date": 1612272042494,
+ "seriesTitle": "Tar Shrek"
+ },
+ {
+ "duration": 2871,
+ "date": 1612262600267,
+ "seriesTitle": "Tar Shrek"
+ },
+ {
+ "duration": 3039,
+ "date": 1612226460809,
+ "seriesTitle": "Tar Shrek"
+ },
+ {
+ "duration": 2965,
+ "date": 1612221875158,
+ "seriesTitle": "Tar Shrek"
+ },
+ {
+ "duration": 2707,
+ "date": 1612219342169,
+ "seriesTitle": "Tar Shrek"
+ },
+ {
+ "duration": 2837,
+ "date": 1611958820998,
+ "seriesTitle": "Tar Shrek"
+ },
+ {
+ "duration": 2739,
+ "date": 1611956273229,
+ "seriesTitle": "Tar Shrek"
+ },
+ {
+ "duration": 1312,
+ "date": 1611934679646,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 2915,
+ "date": 1611931792147,
+ "seriesTitle": "Tar Shrek"
+ },
+ {
+ "duration": 2526,
+ "date": 1611915934566,
+ "seriesTitle": "Tar Shrek"
+ },
+ {
+ "duration": 1312,
+ "date": 1611880962017,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 1312,
+ "date": 1611880835995,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 2963,
+ "date": 1611876786094,
+ "seriesTitle": "Tar Shrek"
+ },
+ {
+ "duration": 2811,
+ "date": 1611873934534,
+ "seriesTitle": "Tar Shrek"
+ },
+ {
+ "duration": 3069,
+ "date": 1611871348425,
+ "seriesTitle": "Tar Shrek"
+ },
+ {
+ "duration": 2464,
+ "date": 1611847860729,
+ "seriesTitle": "OSDev for Beginners"
+ }
+ ],
+ [
+ {
+ "duration": 2488,
+ "date": 1611703226424,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2588,
+ "date": 1611686230435,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2786,
+ "date": 1611686221838,
+ "seriesTitle": "How to Fly"
+ },
+ {
+ "duration": 2540,
+ "date": 1611678991985,
+ "seriesTitle": "I like trains"
+ },
+ {
+ "duration": 2226,
+ "date": 1611676915029,
+ "seriesTitle": "I like trains"
+ },
+ {
+ "duration": 2488,
+ "date": 1611674473740,
+ "seriesTitle": "I like trains"
+ },
+ {
+ "duration": 2390,
+ "date": 1611654350889,
+ "seriesTitle": "I like trains"
+ },
+ {
+ "duration": 1315,
+ "date": 1611617415051,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 2801,
+ "date": 1611615843719,
+ "seriesTitle": "I like trains"
+ },
+ {
+ "duration": 2707,
+ "date": 1611597820887,
+ "seriesTitle": "I like trains"
+ },
+ {
+ "duration": 2663,
+ "date": 1611591004500,
+ "seriesTitle": "I like trains"
+ },
+ {
+ "duration": 2781,
+ "date": 1611588064538,
+ "seriesTitle": "I like trains"
+ },
+ {
+ "duration": 2412,
+ "date": 1611534361940,
+ "seriesTitle": "I like trains"
+ },
+ {
+ "duration": 3057,
+ "date": 1611530296192,
+ "seriesTitle": "I like trains"
+ },
+ {
+ "duration": 2480,
+ "date": 1611509858337,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 3232,
+ "date": 1611358041988,
+ "seriesTitle": "Fun With Flags"
+ },
+ {
+ "duration": 3018,
+ "date": 1611355181796,
+ "seriesTitle": "Fun With Flags"
+ },
+ {
+ "duration": 2822,
+ "date": 1611353207012,
+ "seriesTitle": "Fun With Flags"
+ },
+ {
+ "duration": 3118,
+ "date": 1611338158602,
+ "seriesTitle": "Fun With Flags"
+ },
+ {
+ "duration": 2884,
+ "date": 1611335425215,
+ "seriesTitle": "Fun With Flags"
+ }
+ ],
+ [
+ {
+ "duration": 3222,
+ "date": 1611326140945,
+ "seriesTitle": "Fun With Flags"
+ },
+ {
+ "duration": 1317,
+ "date": 1611308035661,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1317,
+ "date": 1611269321743,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 2596,
+ "date": 1611267608895,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2524,
+ "date": 1611265846185,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 1312,
+ "date": 1611248168791,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 2496,
+ "date": 1611245626980,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 1313,
+ "date": 1611186058893,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 2484,
+ "date": 1611183656893,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2494,
+ "date": 1611181864383,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2474,
+ "date": 1611160632412,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2524,
+ "date": 1611157783623,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2594,
+ "date": 1611156665587,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 2486,
+ "date": 1611099067680,
+ "seriesTitle": "OSDev for Beginners"
+ },
+ {
+ "duration": 1315,
+ "date": 1611097813212,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1313,
+ "date": 1611071980211,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 1326,
+ "date": 1611070693498,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 1326,
+ "date": 1611069387254,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 1327,
+ "date": 1611047794110,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 1323,
+ "date": 1611010228609,
+ "seriesTitle": "Why JS sucks"
+ }
+ ],
+ [
+ {
+ "duration": 1315,
+ "date": 1610961869859,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1333,
+ "date": 1610927380874,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1315,
+ "date": 1610904642217,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1315,
+ "date": 1610846241855,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1317,
+ "date": 1610845034904,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 3480,
+ "date": 1610844202789,
+ "seriesTitle": "Purpose of Life"
+ },
+ {
+ "duration": 4360,
+ "date": 1610757679042,
+ "seriesTitle": "Purpose of Life"
+ },
+ {
+ "duration": 3654,
+ "date": 1610753637049,
+ "seriesTitle": "Purpose of Life"
+ },
+ {
+ "duration": 3436,
+ "date": 1610752643946,
+ "seriesTitle": "Purpose of Life"
+ },
+ {
+ "duration": 3680,
+ "date": 1610744577595,
+ "seriesTitle": "Purpose of Life"
+ },
+ {
+ "duration": 3672,
+ "date": 1610741731999,
+ "seriesTitle": "Purpose of Life"
+ },
+ {
+ "duration": 3424,
+ "date": 1610733233852,
+ "seriesTitle": "Purpose of Life"
+ },
+ {
+ "duration": 3702,
+ "date": 1610729115591,
+ "seriesTitle": "Purpose of Life"
+ },
+ {
+ "duration": 1326,
+ "date": 1610704031781,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 1317,
+ "date": 1610616951061,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1315,
+ "date": 1610529907922,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1329,
+ "date": 1610474420241,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 1329,
+ "date": 1610444733229,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 2242,
+ "date": 1610381234589,
+ "seriesTitle": "Tar Wars"
+ }
+ ],
+ [
+ {
+ "duration": 2238,
+ "date": 1610378403600,
+ "seriesTitle": "Tar Wars"
+ },
+ {
+ "duration": 1333,
+ "date": 1610360043161,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1329,
+ "date": 1610360024095,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 2652,
+ "date": 1610313691187,
+ "seriesTitle": "Chanandler Bong"
+ },
+ {
+ "duration": 2888,
+ "date": 1610310850663,
+ "seriesTitle": "Chanandler Bong"
+ },
+ {
+ "duration": 2564,
+ "date": 1610310644004,
+ "seriesTitle": "Chanandler Bong"
+ },
+ {
+ "duration": 3190,
+ "date": 1610299951664,
+ "seriesTitle": "Chanandler Bong"
+ },
+ {
+ "duration": 2888,
+ "date": 1610297115593,
+ "seriesTitle": "Chanandler Bong"
+ },
+ {
+ "duration": 1321,
+ "date": 1610154536732,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1315,
+ "date": 1610153529710,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1319,
+ "date": 1610148328873,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1321,
+ "date": 1610147025734,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1317,
+ "date": 1610120587542,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1319,
+ "date": 1610119203013,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1317,
+ "date": 1610117898292,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1315,
+ "date": 1610102168863,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1317,
+ "date": 1610067997158,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1319,
+ "date": 1610066693212,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1319,
+ "date": 1610063993544,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1317,
+ "date": 1610062698943,
+ "seriesTitle": "The Sitting Sitcom"
+ }
+ ],
+ [
+ {
+ "duration": 1319,
+ "date": 1610061356289,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1317,
+ "date": 1610060052735,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1319,
+ "date": 1610059234518,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1349,
+ "date": 1610038763137,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1317,
+ "date": 1610017443274,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1319,
+ "date": 1609984520790,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1315,
+ "date": 1609983213834,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1319,
+ "date": 1609981911433,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1317,
+ "date": 1609980608381,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1328,
+ "date": 1609842900734,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 1321,
+ "date": 1609842873202,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 1327,
+ "date": 1609804413364,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 2248,
+ "date": 1609802204853,
+ "seriesTitle": "Tar Wars"
+ },
+ {
+ "duration": 2132,
+ "date": 1609800237821,
+ "seriesTitle": "Tar Wars"
+ },
+ {
+ "duration": 2290,
+ "date": 1609800164767,
+ "seriesTitle": "Tar Wars"
+ },
+ {
+ "duration": 1293,
+ "date": 1609798870422,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1429,
+ "date": 1609797457393,
+ "seriesTitle": "The Sitting Sitcom"
+ },
+ {
+ "duration": 1329,
+ "date": 1609777505255,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 1326,
+ "date": 1609777488770,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 1329,
+ "date": 1609634045202,
+ "seriesTitle": "Why JS sucks"
+ }
+ ],
+ [
+ {
+ "duration": 1328,
+ "date": 1609633101424,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 1328,
+ "date": 1609603575646,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 1328,
+ "date": 1609545071043,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 1328,
+ "date": 1609544002221,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 1327,
+ "date": 1609542575203,
+ "seriesTitle": "Why JS sucks"
+ },
+ {
+ "duration": 1328,
+ "date": 1609541313252,
+ "seriesTitle": "Why JS sucks"
+ }
+ ]
+]
diff --git a/index.html b/index.html
index 1bee661..dd347a0 100755
--- a/index.html
+++ b/index.html
@@ -22,7 +22,7 @@
</head>
<body>
- <div id="cookie_wrap">
+ <div class="input" id="cookie_wrap">
<label for="cookie">Enter your cookie:</label>
<input
class="cookie"
@@ -40,21 +40,21 @@
<h2>Netflix Statistics</h2>
<div>Total watch time: <span id="totalSpent"></span></div>
<div>
- <canvas id="hourChart"></canvas>
+ <p>Title count per hour:</p>
+ <div class="chart" id="hourChart"></div>
</div>
<div>
<p>Most watched titles:</p>
- <button data-current="bar" id="toggle">Toggle</button>
- <canvas id="topChart"></canvas>
+ <button id="toggle">View all</button>
+ <div class="chart" id="topChart"></div>
</div>
<div>
- <p>Overview of the year:</p>
- <div id="information"></div>
- <table class="heatMap" id="heatMap"></table>
+ <p>Title count per day this year:</p>
+ <div class="chart" id="heatMap"></div>
</div>
</div>
- <script src="assets/js/chart.js"></script>
+ <script src="https://cdn.jsdelivr.net/npm/apexcharts"></script>
<script src="assets/js/main.js"></script>
</body>
</html>