From 8e376f61421c34f63031296bafaa394853f65fd9 Mon Sep 17 00:00:00 2001 From: Anarios Date: Thu, 28 Jul 2022 22:18:42 +0200 Subject: [PATCH 01/12] RoundDown option removed --- Extensions/combined/changelog/changelog.js | 1 - Extensions/combined/manifest-firefox.json | 15 ++++++----- Extensions/combined/popup.html | 16 ++++-------- Extensions/combined/popup.js | 30 +++------------------- Extensions/combined/ryd.background.js | 20 --------------- Extensions/combined/src/events.js | 10 -------- Extensions/combined/src/state.js | 12 --------- Extensions/combined/src/utils.js | 16 +----------- 8 files changed, 17 insertions(+), 103 deletions(-) diff --git a/Extensions/combined/changelog/changelog.js b/Extensions/combined/changelog/changelog.js index 8c9e332a..fbef6c94 100644 --- a/Extensions/combined/changelog/changelog.js +++ b/Extensions/combined/changelog/changelog.js @@ -6,7 +6,6 @@ const config = { coloredBar: false, colorTheme: "classic", numberDisplayFormat: "compactShort", - numberDisplayRoundDown: true, showAdvancedMessage: '', hideAdvancedMessage: diff --git a/Extensions/combined/manifest-firefox.json b/Extensions/combined/manifest-firefox.json index 82fd897a..f304c6a1 100644 --- a/Extensions/combined/manifest-firefox.json +++ b/Extensions/combined/manifest-firefox.json @@ -29,11 +29,12 @@ "js": ["ryd.content-script.js"] } ] - // , - // "browser_specific_settings": { - // "gecko": { - // "id": "addon@example.com", - // "strict_min_version": "42.0" - // } - // } + // uncomment this section for local storage to work in firefox locally + , + "browser_specific_settings": { + "gecko": { + "id": "addon@example.com", + "strict_min_version": "42.0" + } + } } diff --git a/Extensions/combined/popup.html b/Extensions/combined/popup.html index aa2e5085..719d082b 100644 --- a/Extensions/combined/popup.html +++ b/Extensions/combined/popup.html @@ -104,21 +104,15 @@


- -

@@ -134,13 +128,13 @@


@@ -184,7 +178,7 @@

data-hover="Display percentage in like/dislike bar tooltip." > - + Percentage in like/dislike bar tooltip.
diff --git a/Extensions/combined/popup.js b/Extensions/combined/popup.js index cf72829d..1c7a8322 100644 --- a/Extensions/combined/popup.js +++ b/Extensions/combined/popup.js @@ -8,7 +8,6 @@ const config = { coloredBar: false, colorTheme: "classic", numberDisplayFormat: "compactShort", - numberDisplayRoundDown: true, showTooltipPercentage: false, tooltipPercentageMode: "dash_like", numberDisplayReformatLikes: false, @@ -81,10 +80,6 @@ document.getElementById("color_theme").addEventListener("click", (ev) => { chrome.storage.sync.set({ colorTheme: ev.target.value }); }); -document.getElementById("number_round_down").addEventListener("click", (ev) => { - chrome.storage.sync.set({ numberDisplayRoundDown: ev.target.checked }); - updateNumberDisplayFormatContent(ev.target.checked); -}); document.getElementById("number_format").addEventListener("change", (ev) => { chrome.storage.sync.set({ numberDisplayFormat: ev.target.value }); @@ -135,7 +130,6 @@ function initConfig() { initializeColoredBar(); initializeColorTheme(); initializeNumberDisplayFormat(); - initializeNumberDisplayRoundDown(); initializeTooltipPercentage(); initializeTooltipPercentageMode(); initializeNumberDisplayReformatLikes(); @@ -203,11 +197,6 @@ function initializeColorTheme() { }); } -function initializeNumberDisplayRoundDown() { - chrome.storage.sync.get(["numberDisplayRoundDown"], (res) => { - handleNumberDisplayRoundDownChangeEvent(res.numberDisplayRoundDown); - }); -} function initializeTooltipPercentage() { chrome.storage.sync.get(["showTooltipPercentage"], (res) => { @@ -228,13 +217,8 @@ function initializeNumberDisplayFormat() { updateNumberDisplayFormatContent(); } -function updateNumberDisplayFormatContent(roundDown) { - let testValue; - if (roundDown) { - testValue = 123000; - } else { - testValue = 123456; - } +function updateNumberDisplayFormatContent() { + let testValue = 123456; document.getElementById("number_format_compactShort").innerHTML = getNumberFormatter("compactShort").format(testValue); document.getElementById("number_format_compactLong").innerHTML = @@ -266,11 +250,6 @@ function storageChangeHandler(changes, area) { if (changes.colorTheme !== undefined) { handleColorThemeChangeEvent(changes.colorTheme.newValue); } - if (changes.numberDisplayRoundDown !== undefined) { - handleNumberDisplayRoundDownChangeEvent( - changes.numberDisplayRoundDown.newValue - ); - } if (changes.numberDisplayFormat !== undefined) { handleNumberDisplayFormatChangeEvent(changes.numberDisplayFormat.newValue); } @@ -319,10 +298,7 @@ function updateColorThemePreviewContent(themeName) { getColorFromTheme(themeName, false); } -function handleNumberDisplayRoundDownChangeEvent(value) { - config.numberDisplayRoundDown = value; - document.getElementById("number_round_down").checked = value; -} + function handleNumberDisplayFormatChangeEvent(value) { config.numberDisplayFormat = value; diff --git a/Extensions/combined/ryd.background.js b/Extensions/combined/ryd.background.js index c416da94..edc5b6f8 100644 --- a/Extensions/combined/ryd.background.js +++ b/Extensions/combined/ryd.background.js @@ -10,7 +10,6 @@ let extConfig = { coloredBar: false, colorTheme: "classic", // classic, accessible, neon numberDisplayFormat: "compactShort", // compactShort, compactLong, standard - numberDisplayRoundDown: true, // locale 'de' shows exact numbers by default numberDisplayReformatLikes: false, // use existing (native) likes number }; @@ -266,11 +265,6 @@ function storageChangeHandler(changes, area) { if (changes.colorTheme !== undefined) { handleColorThemeChangeEvent(changes.colorTheme.newValue); } - if (changes.numberDisplayRoundDown !== undefined) { - handleNumberDisplayRoundDownChangeEvent( - changes.numberDisplayRoundDown.newValue - ); - } if (changes.numberDisplayFormat !== undefined) { handleNumberDisplayFormatChangeEvent(changes.numberDisplayFormat.newValue); } @@ -315,10 +309,6 @@ function handleTooltipPercentageModeChangeEvent(value) { extConfig.tooltipPercentageMode = value; } -function handleNumberDisplayRoundDownChangeEvent(value) { - extConfig.numberDisplayRoundDown = value; -} - function changeIcon(iconName) { if (api.action !== undefined) api.action.setIcon({ path: "/icons/" + iconName }); @@ -354,7 +344,6 @@ function initExtConfig() { initializeColoredBar(); initializeColorTheme(); initializeNumberDisplayFormat(); - initializeNumberDisplayRoundDown(); initializeNumberDisplayReformatLikes(); initializeTooltipPercentage(); initializeTooltipPercentageMode(); @@ -381,15 +370,6 @@ function initializeColoredThumbs() { }); } -function initializeNumberDisplayRoundDown() { - api.storage.sync.get(["numberDisplayRoundDown"], (res) => { - if (res.numberDisplayRoundDown === undefined) { - api.storage.sync.set({ numberDisplayRoundDown: true }); - } else { - extConfig.numberDisplayRoundDown = res.numberDisplayRoundDown; - } - }); -} function initializeColoredBar() { api.storage.sync.get(["coloredBar"], (res) => { diff --git a/Extensions/combined/src/events.js b/Extensions/combined/src/events.js index 9b0e78ae..47d0bce8 100644 --- a/Extensions/combined/src/events.js +++ b/Extensions/combined/src/events.js @@ -108,12 +108,6 @@ function storageChangeHandler(changes, area) { if (changes.colorTheme !== undefined) { handleColorThemeChangeEvent(changes.colorTheme.newValue); } - - if (changes.numberDisplayRoundDown !== undefined) { - handleNumberDisplayRoundDownChangeEvent( - changes.numberDisplayRoundDown.newValue - ); - } if (changes.numberDisplayFormat !== undefined) { handleNumberDisplayFormatChangeEvent(changes.numberDisplayFormat.newValue); } @@ -145,10 +139,6 @@ function handleNumberDisplayFormatChangeEvent(value) { extConfig.numberDisplayFormat = value; } -function handleNumberDisplayRoundDownChangeEvent(value) { - extConfig.numberDisplayRoundDown = value; -} - function handleNumberDisplayReformatLikesChangeEvent(value) { extConfig.numberDisplayReformatLikes = value; } diff --git a/Extensions/combined/src/state.js b/Extensions/combined/src/state.js index ec2125a5..73eb905b 100644 --- a/Extensions/combined/src/state.js +++ b/Extensions/combined/src/state.js @@ -22,7 +22,6 @@ let extConfig = { coloredBar: false, colorTheme: "classic", numberDisplayFormat: "compactShort", - numberDisplayRoundDown: true, showTooltipPercentage: false, tooltipPercentageMode: "dash_like", numberDisplayReformatLikes: false, @@ -260,7 +259,6 @@ function initExtConfig() { initializeColoredBar(); initializeColorTheme(); initializeNumberDisplayFormat(); - initializeNumberDisplayRoundDown(); initializeTooltipPercentage(); initializeTooltipPercentageMode(); initializeNumberDisplayReformatLikes(); @@ -296,16 +294,6 @@ function initializeColoredBar() { }); } -function initializeNumberDisplayRoundDown() { - getBrowser().storage.sync.get(["numberDisplayRoundDown"], (res) => { - if (res.numberDisplayRoundDown === undefined) { - getBrowser().storage.sync.set({ numberDisplayRoundDown: true }); - } else { - extConfig.numberDisplayRoundDown = res.numberDisplayRoundDown; - } - }); -} - function initializeColorTheme() { getBrowser().storage.sync.get(["colorTheme"], (res) => { if (res.colorTheme === undefined) { diff --git a/Extensions/combined/src/utils.js b/Extensions/combined/src/utils.js index 05dafbf0..b92bc0ce 100644 --- a/Extensions/combined/src/utils.js +++ b/Extensions/combined/src/utils.js @@ -1,22 +1,8 @@ import { extConfig } from "./state"; -function roundDown(num) { - if (num < 1000) return 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; -} - function numberFormat(numberState) { - let numberDisplay; - if (extConfig.numberDisplayRoundDown === false) { - numberDisplay = numberState; - } else { - numberDisplay = roundDown(numberState); - } return getNumberFormatter(extConfig.numberDisplayFormat).format( - numberDisplay + numberState ); } From 61c3757d1ffc6aae4be64ba914d8e8410156bd4d Mon Sep 17 00:00:00 2001 From: Anarios Date: Thu, 28 Jul 2022 22:56:32 +0200 Subject: [PATCH 02/12] 3.0.0.3 --- Extensions/combined/manifest-chrome.json | 4 ++-- Extensions/combined/manifest-firefox.json | 15 +++++++-------- Extensions/combined/ryd.background.js | 11 ++++++----- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/Extensions/combined/manifest-chrome.json b/Extensions/combined/manifest-chrome.json index d881a756..fc9e0514 100644 --- a/Extensions/combined/manifest-chrome.json +++ b/Extensions/combined/manifest-chrome.json @@ -1,8 +1,8 @@ { - "name": "__MSG_extensionName__", + "name": "__MSG_extensionNameBeta__", "description": "__MSG_extensionDesc__", "default_locale": "en", - "version": "3.0.0.1", + "version": "3.0.0.3", "manifest_version": 3, "background": { "service_worker": "ryd.background.js" diff --git a/Extensions/combined/manifest-firefox.json b/Extensions/combined/manifest-firefox.json index f304c6a1..4f7ba040 100644 --- a/Extensions/combined/manifest-firefox.json +++ b/Extensions/combined/manifest-firefox.json @@ -2,7 +2,7 @@ "name": "__MSG_extensionName__", "description": "__MSG_extensionDesc__", "default_locale": "en", - "version": "3.0.0.0", + "version": "3.0.0.3", "manifest_version": 2, "background": { "scripts": ["ryd.background.js"] @@ -28,13 +28,12 @@ "css": ["content-style.css"], "js": ["ryd.content-script.js"] } - ] + ], // uncomment this section for local storage to work in firefox locally - , - "browser_specific_settings": { - "gecko": { - "id": "addon@example.com", - "strict_min_version": "42.0" - } + "browser_specific_settings": { + "gecko": { + "id": "addon@example.com", + "strict_min_version": "42.0" } + } } diff --git a/Extensions/combined/ryd.background.js b/Extensions/combined/ryd.background.js index edc5b6f8..cc2817ce 100644 --- a/Extensions/combined/ryd.background.js +++ b/Extensions/combined/ryd.background.js @@ -80,11 +80,13 @@ api.runtime.onInstalled.addListener((details) => { details.reason === "chrome_update" || // No need to show changelog if developer just reloaded the extension details.reason === "update" - ) + ) { return; - api.tabs.create({ - url: api.runtime.getURL("/changelog/3/changelog_3.0.html"), - }); + } else if (details.reason == "install") { + api.tabs.create({ + url: api.runtime.getURL("/changelog/3/changelog_3.0.html"), + }); + } }); // api.storage.sync.get(['lastShowChangelogVersion'], (details) => { @@ -370,7 +372,6 @@ function initializeColoredThumbs() { }); } - function initializeColoredBar() { api.storage.sync.get(["coloredBar"], (res) => { if (res.coloredBar === undefined) { From c0ba031eaf1a2f0d399a8031553c3b881133473d Mon Sep 17 00:00:00 2001 From: Dmitrii Selivanov Date: Fri, 29 Jul 2022 01:31:13 +0200 Subject: [PATCH 03/12] Create Privacy Policy --- Docs/Privacy Policy | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 Docs/Privacy Policy diff --git a/Docs/Privacy Policy b/Docs/Privacy Policy new file mode 100644 index 00000000..5dfbca3e --- /dev/null +++ b/Docs/Privacy Policy @@ -0,0 +1,7 @@ +The only data collected from users is their likes and dislikes made while the extension is installed. + +No personal info, account name or watch history is collected or saved. + +Users are identified by a random user ID, which is not directly linked to any of their accounts, the only purpose of this user ID is to make voting process possible. + +None of the saved data is shared with any third parties, From dfa541ad1c4a8718705e2bbf2756c216aa8a7d83 Mon Sep 17 00:00:00 2001 From: Dmitrii Selivanov Date: Fri, 29 Jul 2022 16:36:33 +0200 Subject: [PATCH 04/12] Update manifest-chrome.json Updated manifest to prevent extension from showing a wrong update message --- Extensions/combined/manifest-chrome.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Extensions/combined/manifest-chrome.json b/Extensions/combined/manifest-chrome.json index fc9e0514..da2e082e 100644 --- a/Extensions/combined/manifest-chrome.json +++ b/Extensions/combined/manifest-chrome.json @@ -2,7 +2,7 @@ "name": "__MSG_extensionNameBeta__", "description": "__MSG_extensionDesc__", "default_locale": "en", - "version": "3.0.0.3", + "version": "3.0.0.2", "manifest_version": 3, "background": { "service_worker": "ryd.background.js" From 596c0d730c4c77b61452b66230d80531ad3af523 Mon Sep 17 00:00:00 2001 From: sh4dow Date: Mon, 1 Aug 2022 21:49:35 +0200 Subject: [PATCH 05/12] fix dislike text box not being found for some users --- .../UserScript/Return Youtube Dislike.user.js | 19 +++++++++++++++++-- Extensions/combined/src/buttons.js | 17 ++++++++++++++++- Extensions/combined/src/state.js | 9 ++++----- 3 files changed, 37 insertions(+), 8 deletions(-) diff --git a/Extensions/UserScript/Return Youtube Dislike.user.js b/Extensions/UserScript/Return Youtube Dislike.user.js index 253344c7..c45efd1d 100644 --- a/Extensions/UserScript/Return Youtube Dislike.user.js +++ b/Extensions/UserScript/Return Youtube Dislike.user.js @@ -94,10 +94,25 @@ function getLikeButton() { return getButtons().children[0]; } +function getLikeTextContainer() { + return ( + getLikeButton().querySelector("#text") ?? + getLikeButton().getElementsByTagName("yt-formatted-string")[0] + ); +} + function getDislikeButton() { return getButtons().children[1]; } +function getDislikeTextContainer() { + return ( + getDislikeButton().querySelector("#text") ?? + getDislikeButton().getElementsByTagName("yt-formatted-string")[0] + ); +} + + let mutationObserver = new Object(); if (isShorts() && mutationObserver.exists !== true) { @@ -197,7 +212,7 @@ function setLikes(likesCount) { likesCount; return; } - getButtons().children[0].querySelector("#text").innerText = likesCount; + getLikeTextContainer().innerText = likesCount; } function setDislikes(dislikesCount) { @@ -205,7 +220,7 @@ function setDislikes(dislikesCount) { mobileDislikes = dislikesCount; return; } - getButtons().children[1].querySelector("#text").innerText = dislikesCount; + getDislikeTextContainer().innerText = dislikesCount; } function getLikeCountFromButton() { diff --git a/Extensions/combined/src/buttons.js b/Extensions/combined/src/buttons.js index 95ba1c63..ffb6137f 100644 --- a/Extensions/combined/src/buttons.js +++ b/Extensions/combined/src/buttons.js @@ -36,10 +36,25 @@ function getLikeButton() { return getButtons().children[0]; } +function getLikeTextContainer() { + return ( + getLikeButton().querySelector("#text") ?? + getLikeButton().getElementsByTagName("yt-formatted-string")[0] + ); +} + function getDislikeButton() { return getButtons().children[1]; } +function getDislikeTextContainer() { + return ( + getDislikeButton().querySelector("#text") ?? + getDislikeButton().getElementsByTagName("yt-formatted-string")[0] + ); +} + + function checkForSignInButton() { if ( document.querySelector( @@ -52,4 +67,4 @@ function checkForSignInButton() { } } -export { getButtons, getLikeButton, getDislikeButton, checkForSignInButton }; +export { getButtons, getLikeButton, getDislikeButton, getLikeTextContainer, getDislikeTextContainer, checkForSignInButton }; diff --git a/Extensions/combined/src/state.js b/Extensions/combined/src/state.js index 73eb905b..2f3a9565 100644 --- a/Extensions/combined/src/state.js +++ b/Extensions/combined/src/state.js @@ -1,4 +1,4 @@ -import { getLikeButton, getDislikeButton, getButtons } from "./buttons"; +import { getLikeButton, getDislikeButton, getButtons, getLikeTextContainer, getDislikeTextContainer } from "./buttons"; import { createRateBar } from "./bar"; import { getBrowser, @@ -127,7 +127,7 @@ function getState(storedData) { //--- Sets The Likes And Dislikes Values ---// function setLikes(likesCount) { - getButtons().children[0].querySelector("#text").innerText = likesCount; + getLikeTextContainer().innerText = likesCount; } function setDislikes(dislikesCount) { @@ -138,7 +138,7 @@ function setDislikes(dislikesCount) { ).innerText = dislikesCount; return; } - getButtons().children[1].querySelector("#text").innerText = dislikesCount; + getDislikeTextContainer().innerText = dislikesCount; } else { cLog("likes count disabled by creator"); if (isMobile()) { @@ -147,8 +147,7 @@ function setDislikes(dislikesCount) { ).innerText = localize("TextLikesDisabled"); return; } - getButtons().children[1].querySelector("#text").innerText = - localize("TextLikesDisabled"); + getDislikeTextContainer().innerText = localize("TextLikesDisabled"); } } From 4e0f633a1478191cb9e7fcce085ff7ffda19405e Mon Sep 17 00:00:00 2001 From: Anarios Date: Tue, 2 Aug 2022 00:03:03 +0200 Subject: [PATCH 06/12] Prettier reformat --- Extensions/UserScript/Return Youtube Dislike.user.js | 1 - Extensions/combined/src/buttons.js | 10 ++++++++-- Extensions/combined/src/state.js | 8 +++++++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/Extensions/UserScript/Return Youtube Dislike.user.js b/Extensions/UserScript/Return Youtube Dislike.user.js index c45efd1d..b9ffa27a 100644 --- a/Extensions/UserScript/Return Youtube Dislike.user.js +++ b/Extensions/UserScript/Return Youtube Dislike.user.js @@ -112,7 +112,6 @@ function getDislikeTextContainer() { ); } - let mutationObserver = new Object(); if (isShorts() && mutationObserver.exists !== true) { diff --git a/Extensions/combined/src/buttons.js b/Extensions/combined/src/buttons.js index ffb6137f..3b8cab4f 100644 --- a/Extensions/combined/src/buttons.js +++ b/Extensions/combined/src/buttons.js @@ -54,7 +54,6 @@ function getDislikeTextContainer() { ); } - function checkForSignInButton() { if ( document.querySelector( @@ -67,4 +66,11 @@ function checkForSignInButton() { } } -export { getButtons, getLikeButton, getDislikeButton, getLikeTextContainer, getDislikeTextContainer, checkForSignInButton }; +export { + getButtons, + getLikeButton, + getDislikeButton, + getLikeTextContainer, + getDislikeTextContainer, + checkForSignInButton, +}; diff --git a/Extensions/combined/src/state.js b/Extensions/combined/src/state.js index 2f3a9565..24fa4356 100644 --- a/Extensions/combined/src/state.js +++ b/Extensions/combined/src/state.js @@ -1,4 +1,10 @@ -import { getLikeButton, getDislikeButton, getButtons, getLikeTextContainer, getDislikeTextContainer } from "./buttons"; +import { + getLikeButton, + getDislikeButton, + getButtons, + getLikeTextContainer, + getDislikeTextContainer, +} from "./buttons"; import { createRateBar } from "./bar"; import { getBrowser, From 3f49b65e813de55e268c85b5ec5945c8ae9cdf7b Mon Sep 17 00:00:00 2001 From: ilyas zan <71350431+ilbailba@users.noreply.github.com> Date: Fri, 5 Aug 2022 19:29:41 +0300 Subject: [PATCH 07/12] Turkish translations and Reference corrections --- CONTRIBUTING.md | 2 +- CONTRIBUTINGfr.md | 2 +- CONTRIBUTINGru.md | 2 +- CONTRIBUTINGtr.md | 67 ++++++++++++++++ Docs/FAQ.md | 2 +- Docs/FAQfr.md | 2 +- Docs/{FAQru.txt => FAQru.md} | 43 +++++----- Docs/FAQtr.md | 61 ++++++++++++++ Docs/SECURITY-FAQ.md | 2 +- Docs/SECURITY-FAQfr.md | 2 +- Docs/SECURITY-FAQru.md | 2 +- Docs/SECURITY-FAQtr.md | 31 +++++++ Docs/readme.md | 2 +- Docs/readmefr.md | 2 +- Docs/readmetr.md | 39 +++++++++ Extensions/combined/_locales/tr/messages.json | 80 ++++++++++++++++++- READMEes.md | 2 +- READMEfr.md | 4 +- READMEja.md | 2 +- READMEtr.md | 14 ++-- Website/_locales/tr.ts | 42 ++++------ 21 files changed, 335 insertions(+), 70 deletions(-) create mode 100644 CONTRIBUTINGtr.md rename Docs/{FAQru.txt => FAQru.md} (96%) create mode 100644 Docs/FAQtr.md create mode 100644 Docs/SECURITY-FAQtr.md create mode 100644 Docs/readmetr.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2a65ac17..8e8da18d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,4 +1,4 @@ -Read this in other languages: [Français](CONTRIBUTINGfr.md) +Read this in other languages: [русский](CONTRIBUTINGru.md), [Français](CONTRIBUTINGfr.md), [Türkçe](CONTRIBUTINGtr.md) # Welcome To Return YouTube Dislikes contributing guide diff --git a/CONTRIBUTINGfr.md b/CONTRIBUTINGfr.md index 95ece722..c9b9e91b 100644 --- a/CONTRIBUTINGfr.md +++ b/CONTRIBUTINGfr.md @@ -1,4 +1,4 @@ -Lisez ceci dans d'autres langues : [English](CONTRIBUTING.md) +Lisez ceci dans d'autres langues : [English](CONTRIBUTING.md), [русский](CONTRIBUTINGru.md), [Türkçe](CONTRIBUTINGtr.md) # Bienvenue dans le guide de contribution à Return YouTube Dislikes diff --git a/CONTRIBUTINGru.md b/CONTRIBUTINGru.md index 82b7bc1b..0907d33f 100644 --- a/CONTRIBUTINGru.md +++ b/CONTRIBUTINGru.md @@ -1,4 +1,4 @@ -Прочитать на других языках: [English](CONTRIBUTING.md) +Прочитать на других языках: [English](CONTRIBUTING.md), [Français](CONTRIBUTINGfr.md), [Türkçe](CONTRIBUTINGtr.md) # Добро пожаловать в руководство по внесению вклада Return YouTube Dislikes diff --git a/CONTRIBUTINGtr.md b/CONTRIBUTINGtr.md new file mode 100644 index 00000000..4a33b15d --- /dev/null +++ b/CONTRIBUTINGtr.md @@ -0,0 +1,67 @@ +Bunu diğer dillerde okuyun: [English](CONTRIBUTING.md), [русский](CONTRIBUTINGru.md), [Français](CONTRIBUTINGfr.md) + +# "YouTube Dislike Sayısını Geri Getir"in katkı kılavuzuna Hoş Geldiniz + +Projemize katkıda bulunmak için zaman ayırdığınız için teşekkür ederiz! Tüm değişiklikleriniz, uzantının bir sonraki sürümüne (veya [internet sitesi](https://www.returnyoutubedislike.com/)ne) yansıtılacaktır. + +## Başlarken + +Lütfen formatlama işlemi için, Prettier'i varsayılan ayarlardayken kullanın. + +#### Ön Şartlar + +Kaynağın paketlenmiş sürümünü oluşturmak için node ve npm'nin kurulu olması gerekir. + +Kurulum sırasında kullanılan sürümler: + +- node: 12.18.4 +- npm: 6.14.6 + +Bu uzantının iş mantığının çoğunu içeren `bundled-content-script.js`yi oluşturmak için, önce tüm bağımlılıkları yüklemeniz gerekir. + +1. Deponun köküne gidin ve şu komutu çalıştırın: + +``` +npm install +``` + +2. `manifest.json` içinde kullanılan `bundled-content-script.js` dosyasını oluşturmak için aşağıdaki komutu çalıştırın. + +``` +npm start // derleme dosyasının/dosyalarının oluşturulması ve kaydedilmesi sırasında çalışırken yeniden yüklenen bir dosya izleyicisini başlatmak için + +// ya da + +npm run build // derleme dosyasını/dosyalarını bir kez oluşturmak için +``` + +Tebrikler, artık geliştirmeye hazırsınız! + +Chrome uzantıları geliştirme konusunda yeniyseniz veya fazladan yardıma ihtiyacınız olursa lütfen [bu YouTube öğreticisi](https://www.youtube.com/watch?v=mdOj6HYE3_0)ne bakın. + +### Issue'lar + +#### Yeni bir issue başlatmak + +Uzantıyla ilgili herhangi bir sorununuz varsa, sorunun önceden bildirilmediğinden emin olmak için lütfen arama yapın. Eğer daha önce bildirilmediyse, bir konu açın. Sorun formunu kullanmanız şiddetle tavsiye edilir ancak zorunlu değildir. + +#### Bir issue'yu çözmek + +Çözebileceğinizi düşündüğünüz bir sorun bulduysanız, çekinmeyin. Düzeltmeyi içeren bir PR açın ve düzelttiğiniz sorunu belirttiğinizden emin olun. + +### Özellik Talebi + +#### Yeni bir özellik talebi açmak + +Uzantı hakkında bir fikriniz varsa, bir özellik isteği açmaktan çekinmeyin, ancak özelliğin daha önce önerilmediğinden emin olmak için lütfen önce arama yapın. Özellik formunun kullanılması şiddetle tavsiye edilir ancak zorunlu değildir. + +#### Bir özellik isteğini uygulamak + +Uygulayabileceğinizi düşündüğünüz bir özellik bulduysanız, çekinmeyin. Düzeltmeyi içeren bir PR açın ve uyguladığınız özelliği belirttiğinizden emin olun. + +### Hangi tür PR'leri kabul ediyoruz? + +- Sorun düzeltmeleri. +- Özellik uygulaması. +- Yazım hataları veya daha anlaşılabilir ve kullanımı daha kolay kelimeler. +- Site katkıları. diff --git a/Docs/FAQ.md b/Docs/FAQ.md index d539b4f8..aaa2d520 100644 --- a/Docs/FAQ.md +++ b/Docs/FAQ.md @@ -1,4 +1,4 @@ -Read this in other languages: [Français](FAQfr.md) +Read this in other languages: [русский](FAQru.md), [Français](FAQfr.md), [Türkçe](FAQtr.md) # Frequently Asked Questions diff --git a/Docs/FAQfr.md b/Docs/FAQfr.md index 76b481ec..1ad62d20 100644 --- a/Docs/FAQfr.md +++ b/Docs/FAQfr.md @@ -1,4 +1,4 @@ -Lisez ceci dans d'autres langues : [English](FAQ.md) +Lisez ceci dans d'autres langues : [English](FAQ.md), [русский](FAQru.md), [Türkçe](FAQtr.md) # Foire Aux Questions diff --git a/Docs/FAQru.txt b/Docs/FAQru.md similarity index 96% rename from Docs/FAQru.txt rename to Docs/FAQru.md index 5c770df1..b6ac8f94 100644 --- a/Docs/FAQru.txt +++ b/Docs/FAQru.md @@ -1,21 +1,24 @@ -# Часто задаваемые вопросы -## Прежде чем задать вопрос на GitHub или в Discord, пожалуйста, ознакомьтесь с этим. - -### **1. Откуда это расширение получает данные?** -Комбинация API Google и старых данных. - -Мы сохраняем все имеющиеся данные в нашей базе данных, чтобы они были доступны после того, как Google прекратит подсчёт отметок «Не нравится» в своём API. - -### **2. Количество не понравившихся видео не обновляется** -В настоящее время видео с отметками «Не нравится» кэшируются и обновляются не очень часто. Раз в 2-3 дня, не чаще. - -Да, это не идеально, но это то, что есть. Мы работаем над тем, чтобы улучшить частоту их обновления. - -### **3. Как это работает?** -Расширение собирает идентификатор видео, которое вы смотрите, извлекает данные об отметках «Не нравится» (и другие поля, такие как просмотры, отметки «Нравится» и т.д.) с помощью нашего API, если видео было извлечено нашим API впервые, оно использует YouTube API для получения данных, затем сохраняет данные в базе данных для кэширования (кэшируются около 2-3 дней) и архивирования и возвращает их вам. После этого расширение отображает отметки «Не нравится» вам. - -### **4. Что произойдёт после того, как API YouTube перестанет возвращать данные о количестве отметок «Не нравится»?** -Внутренняя часть нашего сервера переключится на использование комбинации архивных статистик отметок «Не нравится», оценок, экстраполированных из данных о пользователях расширения, и оценок, основанных на соотношении просмотров и отметок «Нравится» для видео, чьи отметки «Не нравится» не были заархивированы, и для устаревших архивов с отметками «Не нравится». - -## Я беспокоюсь о безопасности / конфиденциальности +Read this in other languages: [English](FAQ.md), [Français](FAQfr.md), [Türkçe](FAQtr.md) + +# Часто задаваемые вопросы + +## Прежде чем задать вопрос на GitHub или в Discord, пожалуйста, ознакомьтесь с этим. + +### **1. Откуда это расширение получает данные?** +Комбинация API Google и старых данных. + +Мы сохраняем все имеющиеся данные в нашей базе данных, чтобы они были доступны после того, как Google прекратит подсчёт отметок «Не нравится» в своём API. + +### **2. Количество не понравившихся видео не обновляется** +В настоящее время видео с отметками «Не нравится» кэшируются и обновляются не очень часто. Раз в 2-3 дня, не чаще. + +Да, это не идеально, но это то, что есть. Мы работаем над тем, чтобы улучшить частоту их обновления. + +### **3. Как это работает?** +Расширение собирает идентификатор видео, которое вы смотрите, извлекает данные об отметках «Не нравится» (и другие поля, такие как просмотры, отметки «Нравится» и т.д.) с помощью нашего API, если видео было извлечено нашим API впервые, оно использует YouTube API для получения данных, затем сохраняет данные в базе данных для кэширования (кэшируются около 2-3 дней) и архивирования и возвращает их вам. После этого расширение отображает отметки «Не нравится» вам. + +### **4. Что произойдёт после того, как API YouTube перестанет возвращать данные о количестве отметок «Не нравится»?** +Внутренняя часть нашего сервера переключится на использование комбинации архивных статистик отметок «Не нравится», оценок, экстраполированных из данных о пользователях расширения, и оценок, основанных на соотношении просмотров и отметок «Нравится» для видео, чьи отметки «Не нравится» не были заархивированы, и для устаревших архивов с отметками «Не нравится». + +## Я беспокоюсь о безопасности / конфиденциальности Более подробную информацию смотрите на [этой странице](SECURITY-FAQ.md). \ No newline at end of file diff --git a/Docs/FAQtr.md b/Docs/FAQtr.md new file mode 100644 index 00000000..cfab81f0 --- /dev/null +++ b/Docs/FAQtr.md @@ -0,0 +1,61 @@ +Bunu diğer dillerde okuyun: [English](FAQ.md), [русский](FAQru.md), [Français](FAQfr.md) + +# Sıkça Sorulan Sorular + +## GitHub'da veya Discord'da bir soru sormadan önce, lütfen buraya göz atın. + +
+ +### **1. Bu uzantı verileri nereden alıyor?** + +Google API'lerinin ve kazınmış verilerin bir kombinasyonu. + +Google, API'lerinde dislike sayılarını kapattıktan sonra kullanılabilir olması için mevcut tüm verileri DB'mize kaydederiz. + +
+ +### **2. Video'nun dislike sayısı güncellenmiyor** + +Şu anda video dislike'ları önbelleğe alınır ve çok sık güncellenmez. Her 2-3 günde bir, daha sık değil. + +Evet, ideal değil, ama olan bu. Bunları nasıl daha sık güncelleyebileceğimizi öğrenmeye çalışıyoruz. + +
+ +### **3. Bu uzantı nasıl çalışıyor?** + +Uzantı, izlediğiniz videonun video kimliğini alır, dislike'larını (ve görüntülemeleri, like'ları vb. diğer alanları) API'mizi kullanarak getirir; video, API'miz tarafından ilk kez getiriliyorsa YouTube API'sini kullanır. Verileri almak için, verileri önbelleğe alma (yaklaşık 2-3 gün önbelleğe alınır) ve arşivleme amacıyla bir veritabanında saklanır ve size geri döndürülür. Uzantı daha sonra size dislike'ları gösterir. + +
+ +### **4. YouTube API'si, dislike sayısını döndürmeyi durdurduğunda ne olacak?** + +Backend, arşivlenmiş dislike istatistikleri, uzantı kullanıcı verilerinden tahmin edilen tahminler ve like'ları arşivlenmemiş videolar ve eski dislike arşivleri için izlenme/like oranlarına dayalı tahminlerin bir kombinasyonunu kullanmaya geçecektir. + +
+ +### **5. Dislike sayısı nasıl hesaplanıyor?** + +YDS, dislike sayısını tahmin etmek için kullanıcılarının oylarını kullanır. + +- Video, API kapatıldıktan sonra yüklendiyse: + + $$ \textup{YDS'nin Dislike Sayısı} = \left( \frac{\textup{YDS Kullanıcılarının Like Sayısı}}{\textup{YDS Kullanıcılarının Dislike Sayısı}} \right) \times \textup{Halka Açık Like Sayısı} $$ + +- YDS veritabanı bir şekilde gerçek like ve dislike sayısına sahipse (yükleyici tarafından veya arşivden sağlanır), dislike sayısı hem kullanıcıların oyları hem de arşivlenen değer temelinde hesaplanacaktır. Arşivlenen değer, eskidikçe son sayım üzerinde daha az etkiye sahip olacaktır. + +
+ +--- + +Bu video şeklinde + +[![IReturn YouTube Dislike Explained](https://yt-embed.herokuapp.com/embed?v=GSmmtv-0yYQ)](https://www.youtube.com/watch?v=GSmmtv-0yYQ) + +--- + +
+ +## Gizlilik / güvenlik hakkında endişelerim var + +Daha fazla bilgi için [bu sayfa](SECURITY-FAQtr.md)ya göz atın. diff --git a/Docs/SECURITY-FAQ.md b/Docs/SECURITY-FAQ.md index dfbbbca7..b51bd783 100644 --- a/Docs/SECURITY-FAQ.md +++ b/Docs/SECURITY-FAQ.md @@ -1,4 +1,4 @@ -Read this in other languages: [Français](SECURITY-FAQfr.md) +Read this in other languages: [русский](SECURITY-FAQru.md), [Français](SECURITY-FAQfr.md), [Türkçe](SECURITY-FAQtr.md) # Security diff --git a/Docs/SECURITY-FAQfr.md b/Docs/SECURITY-FAQfr.md index 877a95ab..1d10fd68 100644 --- a/Docs/SECURITY-FAQfr.md +++ b/Docs/SECURITY-FAQfr.md @@ -1,4 +1,4 @@ -Lisez ceci dans d'autres langues : [English](SECURITY-FAQ.md) +Lisez ceci dans d'autres langues : [English](SECURITY-FAQ.md), [русский](SECURITY-FAQru.md), [Türkçe](SECURITY-FAQtr.md) # Sécurité diff --git a/Docs/SECURITY-FAQru.md b/Docs/SECURITY-FAQru.md index 34526993..be486e50 100644 --- a/Docs/SECURITY-FAQru.md +++ b/Docs/SECURITY-FAQru.md @@ -1,4 +1,4 @@ -Прочитать на других языках: [English](SECURITY-FAQ.md) +Прочитать на других языках: [English](SECURITY-FAQ.md), [Français](SECURITY-FAQfr.md), [Türkçe](SECURITY-FAQtr.md) # Безопасность diff --git a/Docs/SECURITY-FAQtr.md b/Docs/SECURITY-FAQtr.md new file mode 100644 index 00000000..5ae14c72 --- /dev/null +++ b/Docs/SECURITY-FAQtr.md @@ -0,0 +1,31 @@ +Read this in other languages: [English](SECURITY-FAQ.md), [русский](SECURITY-FAQru.md), [Français](SECURITY-FAQfr.md) + +# Güvenlik + +### İzleme geçmişimi takip ediyor musunuz? + +Hayır. Uzantının kodu herkese açıktır ve kendiniz görebilirsiniz. Gönderilen tek bilgi, videolar için dislike sayısını almak için gereken video kimliğidir. Gönderilen başka bir ek header yoktur. İletişim katmanı üzerinden, genel IP'niz sunucuya ve isteğin yapıldığı zamana maruz kalacaktır. Ancak, bunların hiçbiri sizi hiçbir şekilde benzersiz bir şekilde tanımlamıyor. Sıfır güven ortamını varsayarsak, elde edebileceğimizin en iyisi dinamik bir IP'dir. Ki, bu IP bugün sizin, yarın komşunuzun olabilir. IP'nizin izlenmesinden gerçekten endişeleniyorsanız, muhtemelen zaten bir VPN kullanıyorsunuzdur. + +### Bir videoya dislike atarsam, beni benzersiz bir şekilde tanımlayabilir misiniz? + +Evet. Bir videoya dislike attığınızda, sizin için Google hesabınızla bağlantılı olmayan rastgele oluşturulmuş benzersiz bir kimlik oluştururuz. Bu, bot kullanılmasını önlemek için yapılır. Ancak bu rastgele kimliği, size veya kişisel YouTube hesabınıza bağlamanın bir yolu yoktur. + +### Tam olarak hangi bilgilere sahipsiniz, gerçekten? + +Sadece video ID'si. Yorumlarınızı değil, kullanıcı adınızı değil, videoyu kiminle paylaştığınız değil, ek meta verilerinden hiçbiri değil. Hiç bir şey. Sadece video ID'si. + +### IP adresim nasıl saklanıyor? + +Backend, karma olmayan IP adreslerini yalnızca geçici bellekte (RAM'de) tutar. Bu adresler, bir sabit sürücüde depolanmaz ve bu nedenle günlüğe kaydedilmez. IP adreslerini hash ederiz ve bunun yerine depolanır. Bu, veri tabanı vandalizmini önlemek için yapılır. + +### OAuth üzerinden YouTube hesabıma erişmek konusunda bazı tartışmalar duydum! + +Bu özellik isteğe bağlı olacak ve çok fazla tercih edilecek. Bir YouTube içerik üreticisiyseniz ve dislike istatistiklerinizi bizimle paylaşmak istiyorsanız, bunu yapabilirsiniz. [OAuth](https://en.wikipedia.org/wiki/OAuth#:~:text=but%20without%20giving%20them%20the%20passwords.) yapılandırılma şekli, aslında çok güvenlidir. Hesabınıza erişimi istediğiniz zaman iptal edebilir ve bize çok özel izinler verebilirsiniz. Gerekli olmayan herhangi bir izini istemeyeceğiz. Yalnızca video istatistiklerinizi görüntülemek için izin isteyeceğiz. + +### Bu dislike sayısına nasıl güvenebilirim? + +Bot saldırılarını önlemek için önlemler aldık ve bot önleme sisteminin etkinliğini arttırmak için çalışmaya devam edeceğiz: bu, dislike sayısını gerçek sayının iyi bir temsilcisi olarak tutmamıza yardımcı olacaktır. Tabii ki hiçbir zaman %100 doğru olmayacaktır, bu yüzden sayıma güvenip güvenmemek size kalmıştır. + +### Neden backend kodunu paylaşmıyorsunuz? + +Bir noktada paylaşacağız - ama şu anda paylaşmak için ortada gerçekten gerçek bir sebep yok. Yanlış bir güvenlik hissi verebilir - çünkü sıfır güvenli bir sistemde, bir sürümü ifşa edebilir, ancak bir başkasını devreye alabiliriz. Özellikle spam ile nasıl mücadele ettiğimiz gibi, kodu gizli tutmak için birçok neden vardır. İstenmeyen posta işleme kodunu örtmek/gizlemek oldukça standart bir uygulamadır. diff --git a/Docs/readme.md b/Docs/readme.md index b6949e05..4eac3b4a 100644 --- a/Docs/readme.md +++ b/Docs/readme.md @@ -1,4 +1,4 @@ -Read this in other languages: [Français](readmefr.md) +Read this in other languages: [Français](readmefr.md), [Türkçe](READMEtr.md) **Contents** diff --git a/Docs/readmefr.md b/Docs/readmefr.md index de9280e2..bfb868dd 100644 --- a/Docs/readmefr.md +++ b/Docs/readmefr.md @@ -1,4 +1,4 @@ -Lisez ceci dans d'autres langues : [English](readme.md) +Lisez ceci dans d'autres langues : [English](readme.md), [Türkçe](READMEtr.md) **Contenu** diff --git a/Docs/readmetr.md b/Docs/readmetr.md new file mode 100644 index 00000000..6ddf91e2 --- /dev/null +++ b/Docs/readmetr.md @@ -0,0 +1,39 @@ +Read this in other languages: [English](readme.md), [Français](readmefr.md) + +**İçerikler** + +- [Rehberler](#rehberler) +- [SSS'ler](#sss'ler) + + +
+ +## Rehberler + +- [İndirme, Yükleme ve Kullanma](https://github.com/Anarios/return-youtube-dislike/wiki/Downloading,-Installing-&-Using) +- [Sorun Giderme](https://github.com/Anarios/return-youtube-dislike/wiki/Troubleshooting-Guide) + + + +
+ +## SSS'ler + +- [Genel](https://github.com/Anarios/return-youtube-dislike/blob/main/Guides/FAQtr.md) +- [Güvenlik](https://github.com/Anarios/return-youtube-dislike/blob/main/Guides/SECURITY-FAQtr.md) + + diff --git a/Extensions/combined/_locales/tr/messages.json b/Extensions/combined/_locales/tr/messages.json index d2b2f899..c7204a76 100644 --- a/Extensions/combined/_locales/tr/messages.json +++ b/Extensions/combined/_locales/tr/messages.json @@ -23,6 +23,9 @@ "linkHelp": { "message": "Yardım" }, + "linkChangelog": { + "message": "Değişim Günlüğü" + }, "legendSettings": { "message": "Ayarlar" }, @@ -30,16 +33,55 @@ "message": "Like/dislike gönderimini devre dışı bırak" }, "textLikesDisabled": { - "message": "sahibi tarafından devre dışı bırakıldı" + "message": "Sahibi tarafından devre dışı bırakıldı" }, "textSettingsHover": { - "message": "Like'larınızı ve dislike'larınızı saymayı bırakır." + "message": "Like ve dislike'larınızı saymayı bırakır." + }, + "textRoundingNumbers": { + "message": "Like/dislike istatisliklerini aşağıya yuvarlar (varsayılan YouTube davranışı)" + }, + "textRoundingNumbersHover": { + "message": "Yuvarlatılmış istatistikleri göster." + }, + "textConsistentFormat": { + "message": "Like ve dislike tarzını tutarlı hâle getirir" + }, + "textConsistentFormatHover": { + "message": "Like sayılarının tarzını yenileştir." + }, + "textNumberFormat": { + "message": "Sayı tarzı:" + }, + "textColorizeRatioBar": { + "message": "Beğeni oranı çubuğunu renklendir" + }, + "textColorizeRatioBarHover": { + "message": "Oran çubuğu için özel renkler kullanın." + }, + "textColorizeThumbs": { + "message": "Butonları renklendir" + }, + "textColorizeThumbsHover": { + "message": "Buton simgeleri için özel renkler kullanın." + }, + "textColorTheme": { + "message": "Renk teması:" + }, + "textColorTheme1": { + "message": "Klasik" + }, + "textColorTheme2": { + "message": "Anlaşılır" + }, + "textColorTheme3": { + "message": "Neon" }, "textTempUnavailable": { - "message": "geçici olarak kullanım dışı" + "message": "Geçici Olarak Kullanım Dışı" }, "textUpdate": { - "message": "şu sürüme güncelle" + "message": "Şu sürüme güncelle" }, "version30installed": { "message": "Sürüm 3.0.0.1 yüklendi" @@ -58,5 +100,35 @@ }, "considerDonating": { "message": "Uzantının var olmasını sağlayan tek şey bağışlarınızdır, lütfen projeyi desteklemeyi düşünün." + }, + "roundNumbers": { + "message": "Aşağı yuvarlanmış sayıları gösterir" + }, + "roundNumbersHover": { + "message": "Sayıları aşağıya yuvarla (varsayılan YouTube davranışı)." + }, + "reformatLikes": { + "message": "Like sayılarının tarzını yenileştir" + }, + "reformatLikesHover": { + "message": "Like ve dislike tarzını tutarlı hâle getirir." + }, + "numberFormat": { + "message": "Sayı tarzı:" + }, + "colorizeRatio": { + "message": "Beğeni oranı çubuğunu renklendir" + }, + "colorizeRatioHover": { + "message": "Beğeni oranı çubuğu için özel renkler kullanın." + }, + "colorizeThumbs": { + "message": "Butonları renklendir" + }, + "colorizeThumbsHover": { + "message": "Buton simgeleri için özel renkler kullan." + }, + "colorTheme": { + "message": "Renk teması:" } } diff --git a/READMEes.md b/READMEes.md index 63704b04..57950c06 100644 --- a/READMEes.md +++ b/READMEes.md @@ -7,7 +7,7 @@ [![Discord](https://img.shields.io/discord/909435648170160229?label=Discord&style=flat&logo=discord)](https://discord.gg/UMxyMmCgfF) [![License](https://img.shields.io/badge/License-GPLv3-blue.svg?style=flat)](https://github.com/Anarios/return-youtube-dislike/blob/main/LICENSE) -Leer en otros idiomas: [English](README.md), [русский](READMEru.md), [Français](READMEfr.md) [日本語](READMEja.md), [Türkçe](READMEtr.md) +Leer en otros idiomas: [English](README.md), [русский](READMEru.md), [Français](READMEfr.md), [日本語](READMEja.md), [Türkçe](READMEtr.md) # Return YouTube Dislike diff --git a/READMEfr.md b/READMEfr.md index 6915d88c..63a7ee80 100644 --- a/READMEfr.md +++ b/READMEfr.md @@ -7,9 +7,9 @@ [![Discord](https://img.shields.io/discord/909435648170160229?label=Discord&style=flat&logo=discord)](https://discord.gg/UMxyMmCgfF) [![License](https://img.shields.io/badge/License-GPLv3-blue.svg?style=flat)](LICENSE) -# Return YouTube Dislike +Lisez ceci dans d'autres langues : [English](README.md), [Español](READMEes.md), [русский](READMEru.md), [日本語](READMEja.md), [Türkçe](READMEtr.md) -Lisez ceci dans d'autres langues : [English](README.md), [Español](READMEes.md), [русский](READMEru.md), [Türkçe](READMEtr.md) +# Return YouTube Dislike

Return YouTube Dislike est une extension open-source qui ré-affiche les dislikes (pouces rouges) sur YouTube.
diff --git a/READMEja.md b/READMEja.md index 2aba04b7..7b298613 100644 --- a/READMEja.md +++ b/READMEja.md @@ -7,7 +7,7 @@ [![Discord](https://img.shields.io/discord/909435648170160229?label=Discord&style=flat&logo=discord)](https://discord.gg/UMxyMmCgfF) [![License](https://img.shields.io/badge/License-GPLv3-blue.svg?style=flat)](https://github.com/Anarios/return-youtube-dislike/blob/main/LICENSE) -別の言語: [English](README.md), [Español](READMEes.md), [русский](READMEru.md), [Türkçe](READMEtr.md) +別の言語: [English](README.md), [Español](READMEes.md), [русский](READMEru.md), [Français](READMEfr.md), [Türkçe](READMEtr.md) # Return YouTube Dislike diff --git a/READMEtr.md b/READMEtr.md index 6376d843..a1191238 100644 --- a/READMEtr.md +++ b/READMEtr.md @@ -3,7 +3,7 @@ [![Mozilla oylaması](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 indirmeleri](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 sayısı](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) -[![Issue'ler](https://img.shields.io/github/issues/Anarios/return-youtube-dislike?style=flat&label=Issues)](https://github.com/Anarios/return-youtube-dislike/issues) +[![Issue'lar](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) [![Lisans](https://img.shields.io/badge/License-GPLv3-blue.svg?style=flat)](https://github.com/Anarios/return-youtube-dislike/blob/main/LICENSE) @@ -22,13 +22,13 @@ Bunu diğer dillerde okuyun: [English](README.md), [Español](READMEes.md), [Fra 10 Kasım 2021 tarihinde Google, YouTube dislike sayısının kaldırılacağını [duyurdu](https://blog.youtube/news-and-events/update-to-youtube/). -Ek olarak, YouTube API'sindeki "dislike" alanı 13 Aralık 2021 tarihinde [kaldırıldı](https://support.google.com/youtube/thread/134791097/update-to-youtube-dislike-counts) ve içeriğin kalitesini izlemeden önce yargılayabilme olanağı ortadan kaldırıldı. +Ek olarak, YouTube API'sindeki `dislike` alanı 13 Aralık 2021 tarihinde [kaldırıldı](https://support.google.com/youtube/thread/134791097/update-to-youtube-dislike-counts) ve içeriğin kalitesini izlemeden önce yargılayabilme olanağı ortadan kaldırıldı. ## Ne İşe Yarar YouTube API'sinden dislike istatistiklerinin kaldırılmasıyla, backend'imiz, uzantı kullanıcı verilerinden tahmin edilen, toplanmış dislike istatistiklerinin bir birleşimini kullanmaya başladı. -[SSS](https://github.com/Anarios/return-youtube-dislike/blob/main/Docs/FAQ.md) +[SSS](https://github.com/Anarios/return-youtube-dislike/blob/main/Docs/FAQtr.md) ## Neden Önemlidir @@ -39,12 +39,12 @@ Sitemizden daha fazla bilgi edinebilirsiniz: [returnyoutubedislike.com](https:// Bu açık API'nin üçüncü taraflarca kullanımına, aşağıdaki kısıtlamalarla izin verilir: - **Atfetme**: Bu proje, açık bir biçimde [returnyoutubedislike.com](https://returnyoutubedislike.com/) adresine yönlendirilmelidir. -- **Hız Sınırlaması**: Kullanıcı başına dakikada 100 ve günde 10.000 hız sınırlaması vardır. Bu, uygulamanızın geri çekilmesi gerektiğini belirten 429 durum kodunu döndürür +- **Hız Sınırlaması**: Kullanıcı başına dakikada 100 ve günde 10.000 hız sınırlaması vardır. Bu, uygulamanızın geri çekilmesi gerektiğini belirten _429_ durum kodunu döndürür. API'ye aşağıdaki temel URL üzerinden erişilebilir: https://returnyoutubedislikeapi.com -Kullanılabilir endpoint'lerin listesi burada mevcuttur: +Kullanılabilir endpoint'lerin bir listesi burada mevcuttur: https://returnyoutubedislikeapi.com/swagger/index.html ### Oylamaları Elde Etme @@ -75,13 +75,13 @@ Tüm belgelemeleri sitemizden inceleyebilirsiniz. ## Katkıda Bulunma -Lütfen [katkı kılavuzu](https://github.com/Anarios/return-youtube-dislike/blob/main/CONTRIBUTING.md)nu okuyun. +Lütfen [katkı kılavuzu](https://github.com/Anarios/return-youtube-dislike/blob/main/CONTRIBUTINGtr.md)nu okuyun. ## Bu Projeyi Destekle! Aşağıdaki bağlantıdan bize bağış yapabilir ve bu projeye destek olabilirsiniz: -[Bağış Yapın](https://returnyoutubedislike.com/donate) +[Bağış Yap](https://returnyoutubedislike.com/donate) ## Sponsorlar diff --git a/Website/_locales/tr.ts b/Website/_locales/tr.ts index 25f695ba..e01b4634 100644 --- a/Website/_locales/tr.ts +++ b/Website/_locales/tr.ts @@ -5,8 +5,7 @@ export default { home: { name: "Ana Sayfa", title: "YouTube Dislike Sayısını Geri Getir", - subtitle: - "Tarayıcı uzantısı ve bir API, YouTube'daki dislike sayınızı geri getirir", + subtitle: "YouTube'daki dislike sayılarınızı geri getiren bir tarayıcı uzantısı ve API", ukraine: "Ukrayna'ya Destek Ol", sponsors: "Sponsorlar", }, @@ -15,11 +14,9 @@ export default { title: "Platformunuzu Seçin", subtitle: "Firefox ve bütün Chromium tabanlı tarayıcılarda kullanılabilir", title2: "Diğer Platformlar", - subtitle2: - "Tarayıcınız henüz desteklenmiyorsa UserScript yöntemini deneyin", + subtitle2: "Tarayıcınız henüz desteklenmiyorsa UserScript yöntemini deneyin", title3: "Üçüncü Parti Uygulamalar", - subtitle3: - "Riski tamamen size aittir, bizim tarafımızda sorumluluk kabul edilmemektedir", + subtitle3: "Riski tamamen size aittir, bizim tarafımızda sorumluluk kabul edilmemektedir", }, api: { name: "API", @@ -31,10 +28,10 @@ export default { "Herkese açık API'nin üçüncü parti kişilerin kullanımında aşağıdaki kısıtlamalara izin verir:", bullet1: "Atıf: ", bullet1text: - "Bu proje, bu depoya ya da returnyoutubedislike.com sitesine bir bağlantı ile açıkça atfedilmelidir", + "Bu proje, bu depoya ya da returnyoutubedislike.com sitesine bir bağlantı ile açıkça atfedilmelidir.", bullet2: "Hız Sınırlaması: ", bullet2text: - "Kullanıcı başına dakikada 100 ve günde 10.000 hız sınırlaması vardır. Bu, uygulamanızın geri çekilmesi gerektiğini belirten 429 durum kodunu döndürür", + "Kullanıcı başına dakikada 100 ve günde 10.000 hız sınırlaması vardır. Bu, uygulamanızın geri çekilmesi gerektiğini belirten 429 durum kodunu döndürür.", }, url: { title: "URL Bilgisi", @@ -46,16 +43,15 @@ export default { }, fetching: { title: "Temel Veri Alma Eğitimi", - subtitle: - "Belirli bir YouTube ID'sinin oylamalarını elde etmek için bir örnek: ", + subtitle: "Belirli bir YouTube ID'sinin oylamalarını elde etmek için bir örnek: ", title2: "Örnek İstek: ", url: "İstek URL'si: ", method: "İstek Yöntemi: ", headers: "Header'lar: ", response: "Sonuç: ", - error1: 'Geçersiz bir YouTube ID\'si, 404 "Not Found" olarak döndürülür', + error1: 'Geçersiz bir YouTube ID\'si, 404 "Not Found" olarak döndürülür.', error2: - 'Yanlış biçimlendirilmiş bir YouTube ID\'si, 400 "Bad Request" olarak döndürülür', + 'Yanlış biçimlendirilmiş bir YouTube ID\'si, 400 "Bad Request" olarak döndürülür.', }, }, help: { @@ -68,13 +64,11 @@ export default { bullet3: "Şu bağlantıyı açtığınızdan emin olun: ", bullet31: "şöyle bir düz metin görmelisiniz: ", bullet4: "Yukarıdakiler yardımcı olmadıysa - Discord sunucumuzdaki ", - bullet41: - " kanalından problemi bildirin (İngilizce bir şekilde) Discord sunucumuz: ", - bullet4a: - "Bize İşletim Sisteminizi, Tarayıcı Adınızı ve Tarayıcı Sürümünüzü söyleyin", - bullet4b: "Konsol açıkken (açmak için ", - bullet4b1: - " tuşuna basın) sorunu yaşadığınız sayfanın ekran görüntüsünü alın (yani YouTube watch sayfasının) - Ekran görüntüsü örneği aşağıdadır.", + bullet41: " kanalından problemi bildirin (İngilizce bir şekilde) Discord sunucumuz: ", + bullet4a: "Bize İşletim Sisteminizi, Tarayıcı Adınızı ve Tarayıcı Sürümünüzü söyleyin", + bullet4b: + "Konsol açıkken (açmak için ", + bullet4b1: " tuşuna basın) sorunu yaşadığınız sayfanın ekran görüntüsünü alın (yani YouTube watch sayfasının) - Ekran görüntüsü örneği aşağıdadır.", bullet4c: "Uzantı yüklüyken tarayıcınızın uzantılar sayfasının ekran görüntüsünü alın.", bullet4c1: "Uzantıları görmek için şu linki adres çubuğuna yapıştırın: ", @@ -84,8 +78,7 @@ export default { faq: { name: "SSS", title: "Sıkça Sorulan Sorular", - subtitle: - "Hâlâ sorun mu yaşıyorsunuz? Discord sunucumuza katılmaktan çekinmeyin! (İngilizce)", + subtitle: "Hâlâ sorun mu yaşıyorsunuz? Discord sunucumuza katılmaktan çekinmeyin! (İngilizce)", bullet1: "Uzantı, verileri nereden alıyor?", bullet1text: "Resmî YouTube dislike sayısı API'si kapatılmadan önceki arşivlenmiş verilerden ve tahmin edilen uzantı kullanıcısı davranışının bir birleşimiyle.", @@ -101,13 +94,12 @@ export default { bullet5: "Hangi verileri topluyorsunuz ve bunlar nasıl işleniyor?", bullet5text: "Uzantı, yalnızca izlediğiniz videonun IP adresi veya videonun ID'si gibi düzgün çalışması için kesinlikle gerekli olan verileri toplar. Verileriniz asla 3. taraflara satılmayacaktır. Güvenliği ve gizliliği nasıl ele aldığımız hakkında daha fazla bilgi için security FAQ'ya gidin.", - bullet6: "API/Yazılım(Backend) nasıl çalışıyor?", + bullet6: "API/Backend nasıl çalışıyor?", bullet6text: "Yazılım, YouTube API'sinin dislike sayısını ve uzantı kullanıcılarının like/dislike sayısı sonuçların genişletilmesinin döndürmeye devam ettiği zamana ait arşivlenmiş verileri kullanır. Yakın zamanda içerik üreticilerin dislike sayısını kolay ve güvenli bir şekilde göndermelerine izin vereceğiz ve ArchiveTeam'in arşivlenmiş verilerini (4,56 milyar video) veri tabanımıza ekleyeceğiz. Ayrıca konu ile ilgili videoyu da izleyebilirsiniz.", - bullet7: - "Dislike sayısı neden 'DISLIKES DISABLED'(DISLIKE'LAR AKTİF DEĞİL) olarak gözüküyor?", + bullet7: "Dislike sayısı neden 'DISLIKE'LAR KAPALI' olarak gözüküyor?", bullet7text: - "Yazma sırasında like ve dislike sayısını devre dışı bırakan videoların dislike sayılarını göstermiyoruz. Uzantı, bu videolar için 'DISLIKES DISABLED'(DISLIKE'LAR AKTİF DEĞİL) mesajını görüntüler. Yakında tüm videolarda dislike sayısını göstereceğiz. Bu, yalnızca geçici bir çözümdür. Bu nedenle insanlar uzantının bozuk olduğunu düşünmez (zaten iyi çalışmıyor). Bazen yakın zamanda yüklenen bir videoda, içerik üreticisi onu devre dışı bırakmamış olsa bile 'DISLIKES DISABLED' olarak gözükebilir. Bunun nedeni, dislike sayısını devre dışı bırakıp bırakmadığını tespit etmemizdir. Birkaç saat içinde videoyu like ya da dislike atarsanız veya sayfayı yenilerseniz kaybolması gerekir (umarız).", + "Yazma sırasında like ve dislike sayısını devre dışı bırakan videoların dislike sayılarını göstermiyoruz. Uzantı, bu videolar için 'DISLIKE'LAR KAPALI' mesajını görüntüler. Yakında tüm videolarda dislike sayısını göstereceğiz. Bu, yalnızca geçici bir çözümdür. Bu nedenle insanlar uzantının bozuk olduğunu düşünmez (zaten iyi çalışmıyor). Bazen yakın zamanda yüklenen bir videoda, içerik üreticisi onu devre dışı bırakmamış olsa bile 'DISLIKE'LAR KAPALI' olarak gözükebilir. Bunun nedeni, dislike sayısını devre dışı bırakıp bırakmadığını tespit etmemizdir. Birkaç saat içinde videoyu like ya da dislike atarsanız veya sayfayı yenilerseniz kaybolması gerekir (umarız).", }, donate: { name: "Bağış Yap", From 88154c182ec22e996a7d895e00d502d690545ddc Mon Sep 17 00:00:00 2001 From: ilyas zan <71350431+ilbailba@users.noreply.github.com> Date: Fri, 5 Aug 2022 20:45:02 +0300 Subject: [PATCH 08/12] Turkish translation additions --- Website/README.md | 2 + Website/READMEtr.md | 89 +++++++++++++++++++++++++++++++++++++++ Website/_locales/tr.ts | 2 +- Website/store/README.md | 2 + Website/store/READMEtr.md | 12 ++++++ 5 files changed, 106 insertions(+), 1 deletion(-) create mode 100644 Website/READMEtr.md create mode 100644 Website/store/READMEtr.md diff --git a/Website/README.md b/Website/README.md index 05e18612..ee432826 100644 --- a/Website/README.md +++ b/Website/README.md @@ -1,3 +1,5 @@ +Read this in other languages: [Türkçe](READMEtr.md) + # return-youtube-dislike-site ## Build Setup diff --git a/Website/READMEtr.md b/Website/READMEtr.md new file mode 100644 index 00000000..76c86b4b --- /dev/null +++ b/Website/READMEtr.md @@ -0,0 +1,89 @@ +Bunu diğer dillerde okuyun: [English](README.md) + +# youtube-dislike-sayısını-geri-getir-site + +## Yapı Kurulumu + +```bash +# bağımlılıkları yükle +$ npm install + +# localhost:3000'de sıcak yeniden yükleme ile çalıştır +$ npm run dev + +# değişikliklerine lint'i uygula +$ npm run lint + +# üretim için yapıyı oluştur ve sunucuyu başlat +$ npm run build +$ npm run start + +# statik proje oluştur +$ npm run generate +``` + +İşlerin nasıl yürüdüğüyle ilgili daha fazla bilgi için [belgeleme](https://nuxtjs.org)ye göz atın. + +## Önerilen VSCode Kurulumu + +- [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) `ext install dbaeumer.vscode-eslint` +- [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) `ext install esbenp.prettier-vscode` +- [Vetur](https://marketplace.visualstudio.com/items?itemName=octref.vetur) + +> `Ctrl(Cmd)` + `Shift` + `P` > Varsayılan Ayarları Aç (JSON) + +``` +"editor.formatOnSave": true, +"editor.codeActionsOnSave": { + "source.fixAll.eslint": true +} +"vetur.validation.template": false, +``` + +## Özel Dizinler + +You can create the following extra directories, some of which have special behaviors. Only `pages` is required; you can delete them if you don't want to use their functionality. + +### `assets` + +Assets dizini, Stylus veya Sass dosyaları, resimler veya yazı tipleri gibi derlenmemiş varlıklarınızı içerir. + +Bu dizinin kullanımı ile ilgili daha fazla bilgi için [belgeleme](https://nuxtjs.org/docs/2.x/directory-structure/assets)ye göz atın. + +### `components` + +Components dizini, Vue.js bileşenlerinizi içerir. Component'ler, sayfanızın farklı bölümlerini oluşturur ve yeniden kullanılabilir. Ayrıca sayfalarınıza, mizanpajlarınıza ve hatta diğer component'lerinize de aktarılabilir. + +Bu dizinin kullanımı ile ilgili daha fazla bilgi için [belgeleme](https://nuxtjs.org/docs/2.x/directory-structure/components)ye göz atın. + +### `layouts` + +Layouts dizini, Nuxt uygulamanızın görünümünü ve verdiği hissi değiştirmek istediğinizde, bir kenar çubuğu eklemek istediğinizde veya mobil ve masaüstü için farklı düzenlere sahip olmak istediğinizde çok yardımcı olabilir. + +Bu dizinin kullanımı ile ilgili daha fazla bilgi için [belgeleme](https://nuxtjs.org/docs/2.x/directory-structure/layouts)ye göz atın. + +### `pages` + +Bu dizin, uygulama görünümlerinizi ve rotalarınızı içerir. Nuxt, bu dizindeki tüm `*.vue` dosyalarını okuyacak ve Vue Router'ı otomatik olarak kuracaktır. + +Bu dizinin kullanımı ile ilgili daha fazla bilgi için [belgeleme](https://nuxtjs.org/docs/2.x/get-started/routing)ye göz atın. + +### `plugins` + +Plugins dizini, kök Vue.js Uygulamasını başlatmadan önce çalıştırmak istediğiniz JavaScript eklentilerini içerir. Burası Vue eklentileri eklemek ve işlevler veya sabitler enjekte etmek için kullanılan yerdir. `Vue.use()`u her kullanmanız gerektiğinde, `plugins/` içinde bir dosya oluşturmalı ve yolunu `nuxt.config.js` içinde eklentilere eklemelisiniz. + +Bu dizinin kullanımı ile ilgili daha fazla bilgi için [belgeleme](https://nuxtjs.org/docs/2.x/directory-structure/plugins)ye göz atın. + +### `static` + +Bu dizin statik dosyalarınızı içerir. Bu dizindeki her dosya `/` ile eşlenir. + +Örnek: `/static/robots.txt`, `/robots.txt` olarak eşlenir. + +Bu dizinin kullanımı ile ilgili daha fazla bilgi için [belgeleme](https://nuxtjs.org/docs/2.x/directory-structure/static)ye göz atın. + +### `store` + +Bu dizin, Vuex mağaza dosyalarınızı içerir. Bu dizinde bir dosya oluşturmak, Vuex'i otomatik olarak etkinleştirecektir. + +Bu dizinin kullanımı ile ilgili daha fazla bilgi için [belgeleme](https://nuxtjs.org/docs/2.x/directory-structure/store)ye göz atın. diff --git a/Website/_locales/tr.ts b/Website/_locales/tr.ts index e01b4634..4fc64f2e 100644 --- a/Website/_locales/tr.ts +++ b/Website/_locales/tr.ts @@ -112,7 +112,7 @@ export default { subtitle: "Projeye ve geliştiricilerine bağlantılar", contact: "Bana Ulaşın", translators: "Çevirmenler", - coolProjects: "Hoş Projeler", + coolProjects: "Havalı Projeler", sponsorBlockDescription: "Videolara gömülü reklamları pas geçer", filmotDescription: "YouTube videolarını alt yazılara göre aramanızı sağlar", }, diff --git a/Website/store/README.md b/Website/store/README.md index 1972d277..02733b86 100644 --- a/Website/store/README.md +++ b/Website/store/README.md @@ -1,3 +1,5 @@ +Read this in other languages: [Türkçe](READMEtr.md) + # STORE **This directory is not required, you can delete it if you don't want to use it.** diff --git a/Website/store/READMEtr.md b/Website/store/READMEtr.md new file mode 100644 index 00000000..034a67fc --- /dev/null +++ b/Website/store/READMEtr.md @@ -0,0 +1,12 @@ +Bunu diğer dillerde okuyun: [English](README.md) + +# MAĞAZA + +**Bu dizin gerekli değildir, kullanmak istemiyorsanız silebilirsiniz.** + +Bu dizin, Vuex Store dosyalarınızı içerir. +Vuex Store seçeneği Nuxt.js çerçevesinde uygulanmaktadır. + +Bu dizinde bir dosya oluşturmak, çerçevedeki seçeneği otomatik olarak etkinleştirecektir. + +Bu dizinin kullanımı ile ilgili daha fazla bilgi için [belgeleme](https://nuxtjs.org/guide/vuex-store)ye göz atın. From 63673f308910d52e470884e318cc6931c773c315 Mon Sep 17 00:00:00 2001 From: Anarios Date: Fri, 5 Aug 2022 21:24:05 +0200 Subject: [PATCH 09/12] Prettier reformat --- Extensions/combined/manifest-chrome.json | 4 +- Extensions/combined/manifest-firefox.json | 16 +- Website/_locales/ja.ts | 210 ++++++++++++---------- Website/pages/index.vue | 12 +- 4 files changed, 127 insertions(+), 115 deletions(-) diff --git a/Extensions/combined/manifest-chrome.json b/Extensions/combined/manifest-chrome.json index da2e082e..95fe7e9d 100644 --- a/Extensions/combined/manifest-chrome.json +++ b/Extensions/combined/manifest-chrome.json @@ -1,8 +1,8 @@ { - "name": "__MSG_extensionNameBeta__", + "name": "__MSG_extensionName__", "description": "__MSG_extensionDesc__", "default_locale": "en", - "version": "3.0.0.2", + "version": "3.0.0.4", "manifest_version": 3, "background": { "service_worker": "ryd.background.js" diff --git a/Extensions/combined/manifest-firefox.json b/Extensions/combined/manifest-firefox.json index 4f7ba040..04f51628 100644 --- a/Extensions/combined/manifest-firefox.json +++ b/Extensions/combined/manifest-firefox.json @@ -2,7 +2,7 @@ "name": "__MSG_extensionName__", "description": "__MSG_extensionDesc__", "default_locale": "en", - "version": "3.0.0.3", + "version": "3.0.0.4", "manifest_version": 2, "background": { "scripts": ["ryd.background.js"] @@ -28,12 +28,12 @@ "css": ["content-style.css"], "js": ["ryd.content-script.js"] } - ], + ] // uncomment this section for local storage to work in firefox locally - "browser_specific_settings": { - "gecko": { - "id": "addon@example.com", - "strict_min_version": "42.0" - } - } +// "browser_specific_settings": { +// "gecko": { +// "id": "addon@example.com", +// "strict_min_version": "42.0" +// } +// } } diff --git a/Website/_locales/ja.ts b/Website/_locales/ja.ts index d68c6065..45029660 100644 --- a/Website/_locales/ja.ts +++ b/Website/_locales/ja.ts @@ -1,101 +1,121 @@ -import { en } from 'vuetify/src/locale' +import { ja } from "vuetify/src/locale"; export default { - ...ja, - home: { - name: 'z[', - title: 'Return YouTube Dislike', - subtitle: 'YouTube̒]̕\𕜌uEUg@\API', - ukraine: 'ENCiT|[g', - sponsors: 'X|T[', + ...ja, + home: { + name: "ホーム", + title: "Return YouTube Dislike", + subtitle: "YouTubeの低評価数の表示を復元するブラウザ拡張機能とAPI", + ukraine: "ウクライナをサポート", + sponsors: "スポンサー", + }, + install: { + name: "インストール", + title: "プラットフォームの選択", + subtitle: "FirefoxとすべてのChromiumブラウザに対応しています。", + title2: "その他のプラットフォーム", + subtitle2: + "未対応のブラウザをお使いの場合は、以下のUserScriptをお試しください。", + title3: "サードパーティーによる実装", + subtitle3: + "開発者では責任を負いかねますので、ご自身の判断にてご利用ください。", + }, + api: { + name: "API", + title: "RYD公式ドキュメントへようこそ!", + subtitle: "まず、メニューからセクションを選択してください。", + rights: { + title: "使用権", + subtitle: + "このオープンAPIを第三者が使用することは、以下の制限付きで許可されています:", + bullet1: "属性:", + bullet1text: + "このレポ、もしくは returnyoutubedislike.com へのリンクのどちらかによって、明確に帰属させる必要があります。", + bullet2: "通信量制限:", + bullet2text: + "クライアントごとに、1分あたり100・1日あたり10,000という通信量制限が設けられています。これを超えた場合には、アプリケーションに通信を控えるよう促すステータスコード 429 を返します。", }, - install: { - name: 'CXg[', - title: 'vbgtH[̑I', - subtitle: 'FirefoxƂׂĂChromiumuEUɑΉĂ܂B', - title2: '̑̃vbgtH[', - subtitle2: 'Ή̃uEUg̏ꍇ́AȉUserScriptB', - title3: 'T[hp[eB[ɂ', - subtitle3: 'J҂ł͐ӔC𕉂˂܂̂ŁAg̔fɂĂpB', + url: { + title: "URL情報", + subtitle: "APIへのアクセスは、以下のベースURLから可能です:", }, - api: { - name: 'API', - title: 'RYDhLgւ悤!', - subtitle: '܂Aj[ZNVIĂB, - rights: { - title: 'gp', - subtitle: '̃I[vAPIO҂gp邱Ƃ́Aȉ̐tŋ‚Ă܂F', - bullet1: 'F', - bullet1text: '̃|A returnyoutubedislike.com ւ̃N̂ǂ炩ɂāAmɋAKv܂B', - bullet2: 'ʐMʐF', - bullet2text: 'NCAgƂɁA1100E110,000ƂʐMʐ݂Ă܂B𒴂ꍇɂ́AAvP[VɒʐMT悤Xe[^XR[h 429 Ԃ܂B', - }, - url: { - title: 'URL', - subtitle: 'APIւ̃ANZX́Aȉ̃x[XURL”\łF', - }, - endpoints: { - title: 'p”\ȃGh|Cg', - subtitle: 'p”\ȃGh|Cg̈ꗗ͂ł܂F', - }, - fetching: { - title: '{IȃtFb`̃`[gA', - subtitle: 'ȉYouTube ID]oꍇ̗łF', - title2: 'NGXgF', - url: 'NGXgURLF', - method: 'NGXg@F', - headers: 'wb_[F', - response: 'X|XF', - error1: 'YouTube IDȏꍇAXe[^XR[h 404 "Not Found" Ԃ܂B', - error2: 'YouTube ID̃tH[}bgȂꍇAXe[^XR[h 400 "Bad Request" Ԃ܂B' - }, + endpoints: { + title: "利用可能なエンドポイント", + subtitle: "利用可能なエンドポイントの一覧はこちらでご覧いただけます:", }, - help: { - name: 'wv', - title: 'guV[eBO', - bullet1: 'ŐVo[W̊g@\', - bullet11: 'CXg[Ă邱ƂmFĂB', - bullet2: 'g@\폜čăCXg[AׂẴEBhE‚ŃuEUċNĂB', - bullet3: 'ȉ̃NJƂmFĂF', - bullet31: 'ȉ̃v[eLXg\܂F', - bullet4: 'LŖ肪ȂꍇAȉ̃`lɂĖ񍐂ĂB', - bullet41: 'QƁF', - bullet4a: 'gOSAuEUƃo[WĂB', - bullet4b: 'R\[Ji', - bullet4b1: 'L[jÂy[WiFYouTube̓y[Wj̃XN[VbgBe܂B', - bullet4c: 'g@\CXg[ĂuEŮg@\y[W̃XN[VbgBe܂B', - bullet4c1: 'g@\y[W\ɂ́Aȉ̂悤ɓ͂ĂF', - firefox: 'FFirefox', - chrome: 'FChrome, Edge, Brave, Opera, Vivaldi', + fetching: { + title: "基本的なフェッチ操作のチュートリアル", + subtitle: "以下のYouTube IDから評価数を取り出した場合の例です:", + title2: "リクエスト例:", + url: "リクエストURL:", + method: "リクエスト方法:", + headers: "ヘッダー:", + response: "レスポンス:", + error1: + 'YouTube IDが無効な場合、ステータスコード 404 "Not Found" が返されます。', + error2: + 'YouTube IDのフォーマットが正しくない場合、ステータスコード 400 "Bad Request" が返されます。', }, - faq: { - name: 'Q&A', - title: '悭鎿', - subtitle: 'ɂ₪܂HXDiscordɂCyɂQB', - bullet1: 'g@\̃f[^͂ǂ擾Ă̂łH', - bullet1text: 'YouTube̒]API~Oɕۑf[^ƁAg@\[U[̍]/]ɂlgݍ킹Ď擾Ă܂B', - bullet2: ']XVȂ̂͂ȂłH', - bullet2text: '݁A]̓f[^x[XĂ邽߁A܂pɂɍXV܂B̍ĐɂĈقȂ܂AXVɂ͐Ԃ琔邱Ƃ܂B', - bullet3: 'ǂ̂悤Ȏdg݂œ삵Ă܂H', - bullet3text: '܂A̓ID WAAPI gpĒ]AĐA]Ȃǂ̍ڂ擾܂BɁAy[Wɒ]Ɣ䗦\܂Bɍ]]ƁAꂪL^ăf[^x[Xɒ~ς邽߁AmȒ]𐄒肷邱Ƃł܂B', - bullet4: ']L邱Ƃ͂ł܂H', - bullet4text: 'ߓɌJ\łB@\̎̂߂ɁAOauth ܂͔͈͂肵ʂ̓ǂݎpAPIgp邱ƂĂ܂B', - bullet5: 'ǂ̂悤ȃf[^WAǂ̂悤Ɏ舵Ă܂H', - bullet5text: '{g@\ł́AIPAhX⎋Ă铮IDȂǁA@\邽߂ɕKvȃf[^݂̂WĂ܂BȂ̃f[^́AO҂ɔ̔邱Ƃ͌Ă܂BZLeBƃvCoV[̎舵ɂ‚Ăƒm肽ꍇɂ́A ZLeBFAQ QƂB ', - bullet6: 'API/obNGh͂ǂ̂悤Ȏdg݂œ삵Ă܂H', - bullet6text: 'obNGh́AYouTube̒]API~Oɕۑf[^Ɗg@\[U[̍]/]ɂlgݍ킹Ď擾Ă܂B߂ARec҂ȒPˆSɒ]񋟂ł悤ɂAArchive Team ̃A[JCuf[^i456000j݂̃f[^x[Xɒlj\łB܂ÃgsbNɊւrfI܂B', - bullet7: ']Ɂue҂ɂ薳vƕ\̂͂ȂłH', - bullet7text: 'ŋߓeꂽł́Ae҂ɂĖɂĂȂĂue҂ɂ薳vƕ\邱Ƃ܂B́A]̕\ɂȂĂ邩ǂoVXeɂ镛pŁAԌA܂͓ɍ]Ȃ]ăy[WXVƏ̂Ǝv܂B', - }, - donate: { - name: 't', - subtitle: 'C^[lbg̎R邽߂̉X̊AtɂĉĂI', - }, - links: { - name: 'N', - title: 'vWFNgNW', - subtitle: 'vWFNgъJ҂ւ̃N', - contact: '₢킹', - translators: '|', - }, -} \ No newline at end of file + }, + help: { + name: "ヘルプ", + title: "トラブルシューティング", + bullet1: "最新バージョンの拡張機能", + bullet11: "がインストールされていることを確認してください。", + bullet2: + "拡張機能を削除して再インストールし、すべてのウィンドウを閉じた上でブラウザを再起動してください。", + bullet3: "以下のリンクが開くことを確認してください:", + bullet31: "以下のプレーンテキストが表示されます:", + bullet4: + "上記で問題が解決しない場合、以下のチャンネルにて問題を報告してください。", + bullet41: "参照:", + bullet4a: "お使いのOS、ブラウザ名とバージョンを教えてください。", + bullet4b: "コンソールを開き(", + bullet4b1: + "キー)、問題のあるページ(例:YouTubeの動画ページ)のスクリーンショットを撮影します。", + bullet4c: + "拡張機能がインストールされているブラウザの拡張機能ページのスクリーンショットを撮影します。", + bullet4c1: "拡張機能ページを表示するには、以下のように入力してください:", + firefox: ":Firefox", + chrome: ":Chrome, Edge, Brave, Opera, Vivaldi", + }, + faq: { + name: "Q&A", + title: "よくある質問", + subtitle: + "他にも何か質問がありますか?我々のDiscordにお気軽にご参加ください。", + bullet1: "拡張機能のデータはどこから取得しているのですか?", + bullet1text: + "YouTube公式の低評価APIが停止する前に保存したデータと、拡張機能ユーザーの高評価/低評価数を元にした推定値を組み合わせて取得しています。", + bullet2: "低評価数が更新されないのはなぜですか?", + bullet2text: + "現在、低評価数はデータベース化されているため、あまり頻繁に更新されません。動画の再生数によって異なりますが、更新には数時間から数日かかることがあります。", + bullet3: "どのような仕組みで動作していますか?", + bullet3text: + "まず、視聴中の動画のID を収集し、API を使用して低評価数、再生数、高評価などの項目を取得します。次に、ページ上に低評価数と比率を表示します。動画に高評価や低評価があると、それが記録されてデータベースに蓄積されるため、正確な低評価数を推定することができます。", + bullet4: "低評価数を共有することはできますか?", + bullet4text: + "近日中に公開予定です。機能の実装のために、Oauth または範囲を限定した別の読み取り専用APIを使用することを検討しています。", + bullet5: "どのようなデータを収集し、どのように取り扱っていますか?", + bullet5text: + '本拡張機能では、IPアドレスや視聴している動画のIDなど、正しく機能するために必要なデータのみを収集しています。あなたのデータは、第三者に販売されることは決してありません。セキュリティとプライバシーの取り扱いについてもっと知りたい場合には、 セキュリティFAQ をご参照ください。 ', + bullet6: "API/バックエンドはどのような仕組みで動作していますか?", + bullet6text: + "バックエンドは、YouTube公式の低評価APIが停止する前に保存したデータと拡張機能ユーザーの高評価/低評価数を元にした推定値を組み合わせて取得しています。近い将来、コンテンツ制作者が簡単かつ安全に低評価数を提供できるようにし、Archive Team のアーカイブデータ(45億6000万動画)も現在のデータベースに追加する予定です。また、このトピックに関するビデオもご覧いただけます。", + bullet7: "低評価数に「投稿者により無効化」と表示されるのはなぜですか?", + bullet7text: + "最近投稿された動画では、投稿者によって無効にされていなくても「投稿者により無効化」と表示されることがあります。これは、評価数の表示が無効になっているかどうかを検出するシステムによる副作用で、数時間後、または動画に高評価ないし低評価をしてページを更新すると消えるものだと思われます。", + }, + donate: { + name: "寄付", + subtitle: + "インターネットの自由を守るための我々の活動を、寄付によって応援してください!", + }, + links: { + name: "リンク", + title: "プロジェクトリンク集", + subtitle: "プロジェクトおよび開発者へのリンク", + contact: "お問い合わせ先", + translators: "翻訳者", + }, +}; diff --git a/Website/pages/index.vue b/Website/pages/index.vue index 3b21ceef..745631fa 100644 --- a/Website/pages/index.vue +++ b/Website/pages/index.vue @@ -63,13 +63,13 @@

-
+

mdi-heart {{ $vuetify.lang.t("$vuetify.home.sponsors") }} @@ -109,14 +109,6 @@ export default { discordLink: "https://discord.gg/mYnESY4Md5", sponsors: [ { name: "Piepacker", link: "https://piepacker.com/" }, - { - name: "Seed4.Me VPN", - link: "https://www.seed4.me/users/register?gift=ReturnYoutubeDislike", - }, - { - name: "PocketTube", - link: "https://yousub.info/?utm_source=returnyoutubedislike", - }, { name: "Become our sponsor", link: "https://www.patreon.com/join/returnyoutubedislike/checkout?rid=8008601", From 2d9809ad3189a286e6d3c5335794435151f601c4 Mon Sep 17 00:00:00 2001 From: Anarios Date: Fri, 5 Aug 2022 22:57:27 +0200 Subject: [PATCH 10/12] New layout fix --- Extensions/combined/manifest-chrome.json | 2 +- Extensions/combined/manifest-firefox.json | 2 +- Extensions/combined/src/buttons.js | 23 ++++++++++++++++++----- Extensions/combined/src/events.js | 11 +++++------ Extensions/combined/src/state.js | 22 ++++++++++++++-------- 5 files changed, 39 insertions(+), 21 deletions(-) diff --git a/Extensions/combined/manifest-chrome.json b/Extensions/combined/manifest-chrome.json index 95fe7e9d..3e396a0c 100644 --- a/Extensions/combined/manifest-chrome.json +++ b/Extensions/combined/manifest-chrome.json @@ -2,7 +2,7 @@ "name": "__MSG_extensionName__", "description": "__MSG_extensionDesc__", "default_locale": "en", - "version": "3.0.0.4", + "version": "3.0.0.5", "manifest_version": 3, "background": { "service_worker": "ryd.background.js" diff --git a/Extensions/combined/manifest-firefox.json b/Extensions/combined/manifest-firefox.json index 04f51628..efb42a49 100644 --- a/Extensions/combined/manifest-firefox.json +++ b/Extensions/combined/manifest-firefox.json @@ -2,7 +2,7 @@ "name": "__MSG_extensionName__", "description": "__MSG_extensionDesc__", "default_locale": "en", - "version": "3.0.0.4", + "version": "3.0.0.5", "manifest_version": 2, "background": { "scripts": ["ryd.background.js"] diff --git a/Extensions/combined/src/buttons.js b/Extensions/combined/src/buttons.js index 3b8cab4f..6b344d99 100644 --- a/Extensions/combined/src/buttons.js +++ b/Extensions/combined/src/buttons.js @@ -33,7 +33,10 @@ function getButtons() { } function getLikeButton() { - return getButtons().children[0]; + return getButtons().children[0].tagName === + "YTD-SEGMENTED-LIKE-DISLIKE-BUTTON-RENDERER" + ? getButtons().children[0].children[0] + : getButtons().children[0]; } function getLikeTextContainer() { @@ -44,14 +47,24 @@ function getLikeTextContainer() { } function getDislikeButton() { - return getButtons().children[1]; + return getButtons().children[0].tagName === + "YTD-SEGMENTED-LIKE-DISLIKE-BUTTON-RENDERER" + ? getButtons().children[0].children[1] + : getButtons().children[1]; } function getDislikeTextContainer() { - return ( + let result = getDislikeButton().querySelector("#text") ?? - getDislikeButton().getElementsByTagName("yt-formatted-string")[0] - ); + getDislikeButton().getElementsByTagName("yt-formatted-string")[0]; + if (result == null) { + let textSpan = document.createElement("span"); + textSpan.id = "text"; + getDislikeButton().querySelector("button").appendChild(textSpan); + getDislikeButton().querySelector("button").style.width = "auto"; + result = getDislikeButton().querySelector("#text"); + } + return result; } function checkForSignInButton() { diff --git a/Extensions/combined/src/events.js b/Extensions/combined/src/events.js index 47d0bce8..a7638dc5 100644 --- a/Extensions/combined/src/events.js +++ b/Extensions/combined/src/events.js @@ -1,5 +1,5 @@ import { getBrowser, getVideoId, numberFormat, cLog } from "./utils"; -import { checkForSignInButton, getButtons } from "./buttons"; +import { checkForSignInButton, getButtons, getDislikeButton, getLikeButton } from './buttons'; import { NEUTRAL_STATE, LIKED_STATE, @@ -83,12 +83,11 @@ function dislikeClicked() { } function addLikeDislikeEventListener() { - const buttons = getButtons(); if (!window.returnDislikeButtonlistenersSet) { - buttons.children[0].addEventListener("click", likeClicked); - buttons.children[1].addEventListener("click", dislikeClicked); - buttons.children[0].addEventListener("touchstart", likeClicked); - buttons.children[1].addEventListener("touchstart", dislikeClicked); + getLikeButton().addEventListener("click", likeClicked); + getDislikeButton().addEventListener("click", dislikeClicked); + getLikeButton().addEventListener("touchstart", likeClicked); + getLikeButton().addEventListener("touchstart", dislikeClicked); window.returnDislikeButtonlistenersSet = true; } } diff --git a/Extensions/combined/src/state.js b/Extensions/combined/src/state.js index 24fa4356..cda281b4 100644 --- a/Extensions/combined/src/state.js +++ b/Extensions/combined/src/state.js @@ -97,7 +97,7 @@ function isLikesDisabled() { ); } return /^\D*$/.test( - getButtons().children[0].querySelector("#text").innerText + getButtons().children[0].innerText ); } @@ -158,16 +158,22 @@ function setDislikes(dislikesCount) { } function getLikeCountFromButton() { - if (isShorts()) { - //Youtube Shorts don't work with this query. It's not nessecary; we can skip it and still see the results. - //It should be possible to fix this function, but it's not critical to showing the dislike count. - return false; - } - let likesStr = getLikeButton() + try { + if (isShorts()) { + //Youtube Shorts don't work with this query. It's not nessecary; we can skip it and still see the results. + //It should be possible to fix this function, but it's not critical to showing the dislike count. + return false; + } + let likesStr = getLikeButton() .querySelector("yt-formatted-string#text") .getAttribute("aria-label") .replace(/\D/g, ""); - return likesStr.length > 0 ? parseInt(likesStr) : false; + return likesStr.length > 0 ? parseInt(likesStr) : false; + } + catch { + return false; + } + } function processResponse(response, storedData) { From 6be44d9eb94f6dcbb2b5547a5d83d24d1544067d Mon Sep 17 00:00:00 2001 From: Anarios Date: Fri, 5 Aug 2022 23:03:36 +0200 Subject: [PATCH 11/12] New layout fix - bar. --- Extensions/combined/src/bar.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Extensions/combined/src/bar.js b/Extensions/combined/src/bar.js index 55f21ed7..930f0f52 100644 --- a/Extensions/combined/src/bar.js +++ b/Extensions/combined/src/bar.js @@ -1,4 +1,4 @@ -import { getButtons } from "./buttons"; +import { getButtons, getDislikeButton, getLikeButton } from './buttons'; import { extConfig, isMobile, @@ -13,8 +13,8 @@ function createRateBar(likes, dislikes) { let rateBar = document.getElementById("ryd-bar-container"); const widthPx = - getButtons().children[0].clientWidth + - getButtons().children[1].clientWidth + + getLikeButton().clientWidth + + getDislikeButton().clientWidth + 8; const widthPercent = From 6277868ac7d8749df8c8305979dfcb72e2394264 Mon Sep 17 00:00:00 2001 From: Anarios Date: Fri, 5 Aug 2022 23:34:09 +0200 Subject: [PATCH 12/12] Decreased manifest version to prevent "Update your extension" warnings --- Extensions/combined/manifest-chrome.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Extensions/combined/manifest-chrome.json b/Extensions/combined/manifest-chrome.json index 3e396a0c..95fe7e9d 100644 --- a/Extensions/combined/manifest-chrome.json +++ b/Extensions/combined/manifest-chrome.json @@ -2,7 +2,7 @@ "name": "__MSG_extensionName__", "description": "__MSG_extensionDesc__", "default_locale": "en", - "version": "3.0.0.5", + "version": "3.0.0.4", "manifest_version": 3, "background": { "service_worker": "ryd.background.js"