From f51258c6609cb41d1b6b3ea97c73dce36af76416 Mon Sep 17 00:00:00 2001 From: j14-c <> Date: Sun, 28 Nov 2021 06:00:30 -0500 Subject: Fixed roundDown bug --- Extensions/UserScript/Return Youtube Dislike.user.js | 5 +++-- Extensions/chrome/return-youtube-dislike.script.js | 3 ++- Extensions/firefox/return-youtube-dislike.script.js | 3 ++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Extensions/UserScript/Return Youtube Dislike.user.js b/Extensions/UserScript/Return Youtube Dislike.user.js index 47ddaac..2c52611 100644 --- a/Extensions/UserScript/Return Youtube Dislike.user.js +++ b/Extensions/UserScript/Return Youtube Dislike.user.js @@ -23,7 +23,7 @@ function doXHR(opts) { if (typeof GM_xmlhttpRequest === 'function') { return GM_xmlhttpRequest(opts); } - if (typeof GM !== 'undefined') /*This will prevent from throwing "Uncaught ReferenceError: GM is not defined"*/{ + if (typeof GM !== 'undefined') /*This will prevent from throwing "Uncaught ReferenceError: GM is not defined"*/ { if (typeof GM.xmlHttpRequest === 'function') { return GM.xmlHttpRequest(opts); } @@ -194,7 +194,8 @@ function isVideoLoaded() { function roundDown(num) { if (num < 1000) return num; - const decimal = Math.floor(Math.log10(num) - 1); + const int = Math.floor(Math.log10(num) - 2); + const decimal = int + (int % 3 ? 1 : 0); const value = Math.floor(num / 10 ** decimal); return value * (10 ** decimal); } diff --git a/Extensions/chrome/return-youtube-dislike.script.js b/Extensions/chrome/return-youtube-dislike.script.js index 5ec0172..9c7ffd8 100644 --- a/Extensions/chrome/return-youtube-dislike.script.js +++ b/Extensions/chrome/return-youtube-dislike.script.js @@ -139,7 +139,8 @@ function roundDown(num) { if (num < 1000) return num; - const decimal = Math.floor(Math.log10(num) - 1); + const int = Math.floor(Math.log10(num) - 2); + const decimal = int + (int % 3 ? 1 : 0); const value = Math.floor(num / 10 ** decimal); return value * (10 ** decimal); } diff --git a/Extensions/firefox/return-youtube-dislike.script.js b/Extensions/firefox/return-youtube-dislike.script.js index 2597ee2..89b1dc1 100644 --- a/Extensions/firefox/return-youtube-dislike.script.js +++ b/Extensions/firefox/return-youtube-dislike.script.js @@ -135,7 +135,8 @@ function isVideoLoaded() { function roundDown(num) { if (num < 1000) return num; - const decimal = Math.floor(Math.log10(num) - 1); + const int = Math.floor(Math.log10(num) - 2); + const decimal = int + (int % 3 ? 1 : 0); const value = Math.floor(num / 10 ** decimal); return value * (10 ** decimal); } -- cgit v1.2.3 From 4764c3ed129000038235cb68c1533705a9a60c75 Mon Sep 17 00:00:00 2001 From: Dmitrii Selivanov Date: Mon, 29 Nov 2021 00:46:50 +0300 Subject: Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2c76819..9681447 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -[![Mozilla rating](https://img.shields.io/amo/stars/return-youtube-dislikes?label=Firefox%20Rating&style=flat&logo=firefox)](https://addons.mozilla.org/en-US/firefox/addon/return-youtube-dislikes/) -[![Mozilla downloads](https://img.shields.io/amo/users/return-youtube-dislikes?label=Firefox%20Users&style=flat&logo=firefox)](https://addons.mozilla.org/en-US/firefox/addon/return-youtube-dislikes/) [![Chrome Web Store](https://img.shields.io/chrome-web-store/stars/gebbhagfogifgggkldgodflihgfeippi?label=Chrome%20Rating&style=flat&logo=google)](https://chrome.google.com/webstore/detail/youtube-dislike-button/gebbhagfogifgggkldgodflihgfeippi/) [![Chrome Web Store Users](https://img.shields.io/chrome-web-store/users/gebbhagfogifgggkldgodflihgfeippi?label=Chrome%20Users&style=flat&logo=google)](https://chrome.google.com/webstore/detail/youtube-dislike-button/gebbhagfogifgggkldgodflihgfeippi/) +[![Mozilla rating](https://img.shields.io/amo/stars/return-youtube-dislikes?label=Firefox%20Rating&style=flat&logo=firefox)](https://addons.mozilla.org/en-US/firefox/addon/return-youtube-dislikes/) +[![Mozilla downloads](https://img.shields.io/amo/users/return-youtube-dislikes?label=Firefox%20Users&style=flat&logo=firefox)](https://addons.mozilla.org/en-US/firefox/addon/return-youtube-dislikes/) [![Commit rate](https://img.shields.io/github/commit-activity/m/Anarios/return-youtube-dislike?label=Commits&style=flat)](https://github.com/Anarios/return-youtube-dislike/commits/main) [![Issues](https://img.shields.io/github/issues/Anarios/return-youtube-dislike?style=flat&label=Issues)](https://github.com/Anarios/return-youtube-dislike/issues) [![Discord](https://img.shields.io/discord/909435648170160229?label=Discord&style=flat&logo=discord)](https://discord.gg/UMxyMmCgfF) -- cgit v1.2.3 From e51ba3999b482c82bf32b1745c5f5c7c7b920d05 Mon Sep 17 00:00:00 2001 From: Francesco Ferraro <39172206+francesco-ferraro@users.noreply.github.com> Date: Sun, 28 Nov 2021 22:59:51 +0100 Subject: Locales separating decimals with commas Add regex for locales separating decimals with commas, and not periods --- Extensions/UserScript/Return Youtube Dislike.user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Extensions/UserScript/Return Youtube Dislike.user.js b/Extensions/UserScript/Return Youtube Dislike.user.js index 2c52611..139dedd 100644 --- a/Extensions/UserScript/Return Youtube Dislike.user.js +++ b/Extensions/UserScript/Return Youtube Dislike.user.js @@ -209,7 +209,7 @@ function numberFormat(numberState) { maximumFractionDigits: 1 }); - return formatter.format(roundDown(numberState)).replace('.0', ''); + return formatter.format(roundDown(numberState)).replace(/.0|,0/gi, ''); } function setEventListeners(evt) { -- cgit v1.2.3 From d8bd7d31a6c06e95d638686c2d3c3be7c2a1a9a7 Mon Sep 17 00:00:00 2001 From: Francesco Ferraro <39172206+francesco-ferraro@users.noreply.github.com> Date: Sun, 28 Nov 2021 23:00:55 +0100 Subject: Locales separating decimals with commas Add regex for locales separating decimals with commas, and not periods --- Extensions/chrome/return-youtube-dislike.script.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Extensions/chrome/return-youtube-dislike.script.js b/Extensions/chrome/return-youtube-dislike.script.js index 9c7ffd8..9a1fb94 100644 --- a/Extensions/chrome/return-youtube-dislike.script.js +++ b/Extensions/chrome/return-youtube-dislike.script.js @@ -154,7 +154,7 @@ maximumFractionDigits: 1 }); - return formatter.format(roundDown(numberState)).replace('.0', ''); + return formatter.format(roundDown(numberState)).replace(/.0|,0/gi, ''); } var jsInitChecktimer = null; -- cgit v1.2.3 From 2852449aa9a673262e47f311072226692cd03997 Mon Sep 17 00:00:00 2001 From: Francesco Ferraro <39172206+francesco-ferraro@users.noreply.github.com> Date: Sun, 28 Nov 2021 23:01:42 +0100 Subject: Locales separating decimals with commas Added regex for locales separating decimals with commas, not periods --- Extensions/firefox/return-youtube-dislike.script.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Extensions/firefox/return-youtube-dislike.script.js b/Extensions/firefox/return-youtube-dislike.script.js index 89b1dc1..8c0e176 100644 --- a/Extensions/firefox/return-youtube-dislike.script.js +++ b/Extensions/firefox/return-youtube-dislike.script.js @@ -150,7 +150,7 @@ function numberFormat(numberState) { maximumFractionDigits: 1 }); - return formatter.format(roundDown(numberState)).replace('.0', ''); + return formatter.format(roundDown(numberState)).replace(/.0|,0/gi, ''); } function setEventListeners(evt) { -- cgit v1.2.3 From 77ce8f6a063c91ef458d5d37077ec61db3997beb Mon Sep 17 00:00:00 2001 From: j14-c <> Date: Mon, 29 Nov 2021 02:01:40 -0500 Subject: Fixed numberFormat RegEx --- Extensions/UserScript/Return Youtube Dislike.user.js | 2 +- Extensions/chrome/return-youtube-dislike.script.js | 2 +- Extensions/firefox/return-youtube-dislike.script.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Extensions/UserScript/Return Youtube Dislike.user.js b/Extensions/UserScript/Return Youtube Dislike.user.js index 139dedd..d41f36e 100644 --- a/Extensions/UserScript/Return Youtube Dislike.user.js +++ b/Extensions/UserScript/Return Youtube Dislike.user.js @@ -209,7 +209,7 @@ function numberFormat(numberState) { maximumFractionDigits: 1 }); - return formatter.format(roundDown(numberState)).replace(/.0|,0/gi, ''); + return formatter.format(roundDown(numberState)).replace(/\.0|,0/, ''); } function setEventListeners(evt) { diff --git a/Extensions/chrome/return-youtube-dislike.script.js b/Extensions/chrome/return-youtube-dislike.script.js index 9a1fb94..d51cc00 100644 --- a/Extensions/chrome/return-youtube-dislike.script.js +++ b/Extensions/chrome/return-youtube-dislike.script.js @@ -154,7 +154,7 @@ maximumFractionDigits: 1 }); - return formatter.format(roundDown(numberState)).replace(/.0|,0/gi, ''); + return formatter.format(roundDown(numberState)).replace(/\.0|,0/, ''); } var jsInitChecktimer = null; diff --git a/Extensions/firefox/return-youtube-dislike.script.js b/Extensions/firefox/return-youtube-dislike.script.js index 8c0e176..293388b 100644 --- a/Extensions/firefox/return-youtube-dislike.script.js +++ b/Extensions/firefox/return-youtube-dislike.script.js @@ -150,7 +150,7 @@ function numberFormat(numberState) { maximumFractionDigits: 1 }); - return formatter.format(roundDown(numberState)).replace(/.0|,0/gi, ''); + return formatter.format(roundDown(numberState)).replace(/\.0|,0/, ''); } function setEventListeners(evt) { -- cgit v1.2.3 From 8ce61c874228e56bbc727bbccf61461c59a636ff Mon Sep 17 00:00:00 2001 From: DARKDRAGON532 <69623818+DARKDRAGON532@users.noreply.github.com> Date: Mon, 29 Nov 2021 22:50:28 +0530 Subject: Added fetch from youtube for userscript --- .../UserScript/Return Youtube Dislike.user.js | 67 ++++++++++++++++++++-- 1 file changed, 63 insertions(+), 4 deletions(-) diff --git a/Extensions/UserScript/Return Youtube Dislike.user.js b/Extensions/UserScript/Return Youtube Dislike.user.js index d41f36e..91a80c7 100644 --- a/Extensions/UserScript/Return Youtube Dislike.user.js +++ b/Extensions/UserScript/Return Youtube Dislike.user.js @@ -34,9 +34,15 @@ function doXHR(opts) { const xhr = new XMLHttpRequest(); xhr.open(opts.method, opts.url, true); - xhr.onload = () => opts.onload({ - response: JSON.parse(xhr.responseText), - }); + if (opts.responseType === 'text') { + xhr.onload = () => opts.onload({ + response: xhr.responseText, + }); + } else { + xhr.onload = () => opts.onload({ + response: JSON.parse(xhr.responseText), + }); + } xhr.onerror = err => console.error('XHR Failed', err); xhr.send(); } @@ -145,6 +151,28 @@ function createRateBar(likes, dislikes) { function setState() { cLog('Fetching votes...'); + let statsSet = false; + doXHR({ + method: 'GET', + responseType: 'text', + url: `https://www.youtube.com/watch?v=${getVideoId()}`, + onload: function (xhr) { + if (xhr) { + let result = getDislikesFromYoutubeResponse(xhr.response); + if (result) { + cLog("response from youtube:"); + cLog(JSON.stringify(result)); + if (result.likes || result.dislikes) { + const formattedDislike = numberFormat(result.dislikes); + setDislikes(formattedDislike); + createRateBar(result.likes, result.dislikes); + statsSet = true; + } + } + + } + } + }) doXHR({ method: "GET", @@ -153,7 +181,7 @@ function setState() { "https://return-youtube-dislike-api.azurewebsites.net/votes?videoId=" + getVideoId(), onload: function (xhr) { - if (xhr != undefined) { + if (xhr != undefined && !statsSet) { const { dislikes, likes } = xhr.response; cLog(`Received count: ${dislikes}`); setDislikes(numberFormat(dislikes)); @@ -212,6 +240,37 @@ function numberFormat(numberState) { return formatter.format(roundDown(numberState)).replace(/\.0|,0/, ''); } +function getDislikesFromYoutubeResponse(htmlResponse) { + let start = + htmlResponse.indexOf('"videoDetails":') + '"videoDetails":'.length; + let end = + htmlResponse.indexOf('"isLiveContent":false}', start) + + '"isLiveContent":false}'.length; + if (end < start) { + end = + htmlResponse.indexOf('"isLiveContent":true}', start) + + '"isLiveContent":true}'.length; + } + let jsonStr = htmlResponse.substring(start, end); + let jsonResult = JSON.parse(jsonStr); + let rating = jsonResult.averageRating; + + start = htmlResponse.indexOf('"topLevelButtons":[', end); + start = + htmlResponse.indexOf('"accessibilityData":', start) + + '"accessibilityData":'.length; + end = htmlResponse.indexOf("}", start); + let likes = +htmlResponse.substring(start, end).replace(/\D/g, ""); + let dislikes = (likes * (5 - rating)) / (rating - 1); + let result = { + likes, + dislikes: Math.round(dislikes), + rating, + viewCount: +jsonResult.viewCount, + }; + return result; +} + function setEventListeners(evt) { function checkForJS_Finish() { if (getButtons()?.offsetParent && isVideoLoaded()) { -- cgit v1.2.3 From 2a4b1b95d18cf9d6c52f91165149cbf0a4cc3de4 Mon Sep 17 00:00:00 2001 From: DARKDRAGON532 <69623818+DARKDRAGON532@users.noreply.github.com> Date: Mon, 29 Nov 2021 22:52:23 +0530 Subject: formatted with prettier --- .../UserScript/Return Youtube Dislike.user.js | 81 +++++++++++----------- 1 file changed, 41 insertions(+), 40 deletions(-) diff --git a/Extensions/UserScript/Return Youtube Dislike.user.js b/Extensions/UserScript/Return Youtube Dislike.user.js index 91a80c7..18b6094 100644 --- a/Extensions/UserScript/Return Youtube Dislike.user.js +++ b/Extensions/UserScript/Return Youtube Dislike.user.js @@ -14,44 +14,48 @@ // @updateURL https://github.com/Anarios/return-youtube-dislike/raw/main/Extensions/UserScript/Return%20Youtube%20Dislike.user.js // @grant GM.xmlHttpRequest // ==/UserScript== -function cLog(text, subtext = '') { - subtext = subtext.trim() === '' ? '' : `(${subtext})`; +function cLog(text, subtext = "") { + subtext = subtext.trim() === "" ? "" : `(${subtext})`; console.log(`[Return Youtube Dislikes] ${text} ${subtext}`); } function doXHR(opts) { - if (typeof GM_xmlhttpRequest === 'function') { + if (typeof GM_xmlhttpRequest === "function") { return GM_xmlhttpRequest(opts); } - if (typeof GM !== 'undefined') /*This will prevent from throwing "Uncaught ReferenceError: GM is not defined"*/ { - if (typeof GM.xmlHttpRequest === 'function') { + if (typeof GM !== "undefined") { + /*This will prevent from throwing "Uncaught ReferenceError: GM is not defined"*/ if ( + typeof GM.xmlHttpRequest === "function" + ) { return GM.xmlHttpRequest(opts); } } - console.warn('Unable to detect UserScript plugin, falling back to native XHR.'); + console.warn( + "Unable to detect UserScript plugin, falling back to native XHR." + ); const xhr = new XMLHttpRequest(); xhr.open(opts.method, opts.url, true); - if (opts.responseType === 'text') { - xhr.onload = () => opts.onload({ - response: xhr.responseText, - }); + if (opts.responseType === "text") { + xhr.onload = () => + opts.onload({ + response: xhr.responseText, + }); } else { - xhr.onload = () => opts.onload({ - response: JSON.parse(xhr.responseText), - }); + xhr.onload = () => + opts.onload({ + response: JSON.parse(xhr.responseText), + }); } - xhr.onerror = err => console.error('XHR Failed', err); + xhr.onerror = (err) => console.error("XHR Failed", err); xhr.send(); } function getButtons() { if (document.getElementById("menu-container").offsetParent === null) { - return document.querySelector( - "ytd-menu-renderer.ytd-watch-metadata > div" - ); + return document.querySelector("ytd-menu-renderer.ytd-watch-metadata > div"); } else { return document .getElementById("menu-container") @@ -102,9 +106,7 @@ function setDislikes(dislikesCount) { } function createRateBar(likes, dislikes) { - var rateBar = document.getElementById( - "return-youtube-dislike-bar-container" - ); + var rateBar = document.getElementById("return-youtube-dislike-bar-container"); const widthPx = getButtons().children[0].clientWidth + @@ -150,11 +152,11 @@ function createRateBar(likes, dislikes) { } function setState() { - cLog('Fetching votes...'); + cLog("Fetching votes..."); let statsSet = false; doXHR({ - method: 'GET', - responseType: 'text', + method: "GET", + responseType: "text", url: `https://www.youtube.com/watch?v=${getVideoId()}`, onload: function (xhr) { if (xhr) { @@ -162,17 +164,16 @@ function setState() { if (result) { cLog("response from youtube:"); cLog(JSON.stringify(result)); - if (result.likes || result.dislikes) { - const formattedDislike = numberFormat(result.dislikes); - setDislikes(formattedDislike); - createRateBar(result.likes, result.dislikes); - statsSet = true; - } + if (result.likes || result.dislikes) { + const formattedDislike = numberFormat(result.dislikes); + setDislikes(formattedDislike); + createRateBar(result.likes, result.dislikes); + statsSet = true; + } } - } - } - }) + }, + }); doXHR({ method: "GET", @@ -192,12 +193,12 @@ function setState() { } function likeClicked() { - cLog('Like clicked', getState()); + cLog("Like clicked", getState()); setState(); } function dislikeClicked() { - cLog('Dislike clicked', getState()); + cLog("Dislike clicked", getState()); setState(); } @@ -225,19 +226,19 @@ function roundDown(num) { const int = Math.floor(Math.log10(num) - 2); const decimal = int + (int % 3 ? 1 : 0); const value = Math.floor(num / 10 ** decimal); - return value * (10 ** decimal); + return value * 10 ** decimal; } function numberFormat(numberState) { const userLocales = navigator.language; const formatter = Intl.NumberFormat(userLocales, { - notation: 'compact', + notation: "compact", minimumFractionDigits: 1, - maximumFractionDigits: 1 + maximumFractionDigits: 1, }); - return formatter.format(roundDown(numberState)).replace(/\.0|,0/, ''); + return formatter.format(roundDown(numberState)).replace(/\.0|,0/, ""); } function getDislikesFromYoutubeResponse(htmlResponse) { @@ -278,7 +279,7 @@ function setEventListeners(evt) { const buttons = getButtons(); if (!window.returnDislikeButtonlistenersSet) { - cLog('Registering button listeners...'); + cLog("Registering button listeners..."); buttons.children[0].addEventListener("click", likeClicked); buttons.children[1].addEventListener("click", dislikeClicked); window.returnDislikeButtonlistenersSet = true; @@ -288,7 +289,7 @@ function setEventListeners(evt) { } if (window.location.href.indexOf("watch?") >= 0) { - cLog('Setting up...'); + cLog("Setting up..."); var jsInitChecktimer = setInterval(checkForJS_Finish, 111); } } -- cgit v1.2.3 From c6ddeb757f6c51e383e2d8d03a02a7102eb5573b Mon Sep 17 00:00:00 2001 From: Frieder Bluemle Date: Mon, 29 Nov 2021 22:21:28 -0800 Subject: Fix typos --- Extensions/UserScript/Return Youtube Dislike.user.js | 2 +- Extensions/chrome/popup.html | 6 +++--- Extensions/firefox/manifest.json | 2 +- Extensions/firefox/popup.html | 6 +++--- StaticSiteOld/index.html | 4 ++-- Website/README.md | 2 +- Website/nuxt.config.js | 4 ++-- Website/pages/index.vue | 4 ++-- Website/pages/links.vue | 4 ++-- 9 files changed, 17 insertions(+), 17 deletions(-) diff --git a/Extensions/UserScript/Return Youtube Dislike.user.js b/Extensions/UserScript/Return Youtube Dislike.user.js index d41f36e..223212b 100644 --- a/Extensions/UserScript/Return Youtube Dislike.user.js +++ b/Extensions/UserScript/Return Youtube Dislike.user.js @@ -16,7 +16,7 @@ // ==/UserScript== function cLog(text, subtext = '') { subtext = subtext.trim() === '' ? '' : `(${subtext})`; - console.log(`[Return Youtube Dislikes] ${text} ${subtext}`); + console.log(`[Return YouTube Dislikes] ${text} ${subtext}`); } function doXHR(opts) { diff --git a/Extensions/chrome/popup.html b/Extensions/chrome/popup.html index 218814e..e6734a3 100644 --- a/Extensions/chrome/popup.html +++ b/Extensions/chrome/popup.html @@ -2,7 +2,7 @@ - Return Youtube Dislike + Return YouTube Dislike @@ -10,11 +10,11 @@
Logo -

Return Youtube Dislike

+

Return YouTube Dislike

by Dmitrii Selivanov & Community

- +
diff --git a/Extensions/firefox/manifest.json b/Extensions/firefox/manifest.json index 59fa79e..f01886e 100644 --- a/Extensions/firefox/manifest.json +++ b/Extensions/firefox/manifest.json @@ -1,5 +1,5 @@ { - "name": "Return Youtube Dislike", + "name": "Return YouTube Dislike", "description": "Returns ability to see dislikes", "version": "0.0.0.9", "manifest_version": 2, diff --git a/Extensions/firefox/popup.html b/Extensions/firefox/popup.html index 218814e..e6734a3 100644 --- a/Extensions/firefox/popup.html +++ b/Extensions/firefox/popup.html @@ -2,7 +2,7 @@ - Return Youtube Dislike + Return YouTube Dislike @@ -10,11 +10,11 @@
Logo -

Return Youtube Dislike

+

Return YouTube Dislike

by Dmitrii Selivanov & Community

- +
diff --git a/StaticSiteOld/index.html b/StaticSiteOld/index.html index 23836cd..48a185d 100644 --- a/StaticSiteOld/index.html +++ b/StaticSiteOld/index.html @@ -171,7 +171,7 @@ extension users to derive actual dislike count on a video

- Youtube has removed dislike statistics. Since this was a very + YouTube has removed dislike statistics. Since this was a very usefull feature - this extension aims to return this functionality to users.

@@ -181,7 +181,7 @@

We're considering integration with - Youtube Vanced mobile app, if + YouTube Vanced mobile app, if the devs will want to utilize our API

diff --git a/Website/README.md b/Website/README.md index 645c53f..552c817 100644 --- a/Website/README.md +++ b/Website/README.md @@ -1,4 +1,4 @@ -# Return-Youtube-Dislike +# return-youtube-dislike-site ## Build Setup diff --git a/Website/nuxt.config.js b/Website/nuxt.config.js index 285e8f5..724f3ba 100644 --- a/Website/nuxt.config.js +++ b/Website/nuxt.config.js @@ -3,8 +3,8 @@ import colors from 'vuetify/es5/util/colors' export default { // Global page headers: https://go.nuxtjs.dev/config-head head: { - titleTemplate: 'Return Youtube Dislike', - title: 'Return Youtube Dislike', + titleTemplate: 'Return YouTube Dislike', + title: 'Return YouTube Dislike', htmlAttrs: { lang: 'en' }, diff --git a/Website/pages/index.vue b/Website/pages/index.vue index 94e3354..6cf22a2 100644 --- a/Website/pages/index.vue +++ b/Website/pages/index.vue @@ -1,7 +1,7 @@