Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Anarios/return-youtube-dislike.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnarios <selivano.d@gmail.com>2022-07-26 01:05:20 +0300
committerAnarios <selivano.d@gmail.com>2022-07-26 01:05:20 +0300
commitb0cb173830d2ea30954cdc3eb75c24c95b156dcf (patch)
treed57c459a417429775654d5354664e0f5b9623ee0
parent58161ac123a3e4d2a277d646bdab7b8a48277c95 (diff)
Fixes after merges, prettier globally applieddevelop
-rw-r--r--.github/ISSUE_TEMPLATE/bug.yml122
-rw-r--r--.github/ISSUE_TEMPLATE/feature-request.yml67
-rw-r--r--.github/workflows/commentCommands.yml5
-rw-r--r--.github/workflows/weblint.yml15
-rw-r--r--CONTRIBUTING.md9
-rw-r--r--CONTRIBUTINGfr.md12
-rw-r--r--CONTRIBUTINGru.md127
-rw-r--r--Docs/FAQ.md6
-rw-r--r--Docs/FAQfr.md8
-rw-r--r--Docs/Guide__Installing.md648
-rw-r--r--Docs/Guide__Troubleshooting.md371
-rw-r--r--Docs/SECURITY-FAQ.md7
-rw-r--r--Docs/SECURITY-FAQfr.md62
-rw-r--r--Docs/SECURITY-FAQru.md62
-rw-r--r--Docs/readme.md79
-rw-r--r--Docs/readmefr.md3
-rw-r--r--Extensions/UserScript/Return Youtube Dislike.user.js114
-rw-r--r--Extensions/combined/_locales/es/messages.json2
-rw-r--r--Extensions/combined/_locales/ja/messages.json36
-rw-r--r--Extensions/combined/_locales/pt_BR/messages.json2
-rw-r--r--Extensions/combined/manifest-chrome.json4
-rw-r--r--Extensions/combined/popup.css30
-rw-r--r--Extensions/combined/popup.html371
-rw-r--r--Extensions/combined/popup.js46
-rw-r--r--Extensions/combined/ryd.background.js12
-rw-r--r--Extensions/combined/src/bar.js62
-rw-r--r--Extensions/combined/src/events.js4
-rw-r--r--Extensions/combined/src/starRating.js205
-rw-r--r--Extensions/combined/src/state.js3
-rw-r--r--Extensions/combined/src/utils.js17
-rw-r--r--README.md33
-rw-r--r--READMEes.md35
-rw-r--r--READMEfr.md32
-rw-r--r--READMEja.md41
-rw-r--r--READMEru.md35
-rw-r--r--READMEtr.md24
-rw-r--r--Website/README.md10
-rw-r--r--Website/_locales/cs.ts217
-rw-r--r--Website/_locales/en.ts211
-rw-r--r--Website/_locales/es.ts220
-rw-r--r--Website/_locales/fr.ts235
-rw-r--r--Website/_locales/ru.ts218
-rw-r--r--Website/_locales/tr.ts219
-rw-r--r--Website/nuxt.config.js3
-rw-r--r--Website/pages/index.vue40
-rw-r--r--Website/pages/links.vue24
-rw-r--r--webpack.config.js17
47 files changed, 2183 insertions, 1942 deletions
diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml
index 177632e..efacc6d 100644
--- a/.github/ISSUE_TEMPLATE/bug.yml
+++ b/.github/ISSUE_TEMPLATE/bug.yml
@@ -3,65 +3,63 @@ description: File a bug report!
# title: "(Bug): "
labels: ["bug"]
body:
-- type: input
- attributes:
- label: Browser
- description: Which browser are you using?
- placeholder: "Example: Google Chrome"
- validations:
- required: true
-- type: input
- attributes:
- label: Browser Version
- description: Which browser version are you using?
- placeholder: "Example: Chromium v95"
- validations:
- required: true
-- type: dropdown
- attributes:
- label: "Extension or Userscript?"
- options:
- - Extension
- - Userscript
- validations:
- required: true
-- type: input
- attributes:
- label: Extension/Userscript Version
- description: Which extension/userscript version are you using?
- placeholder: "Example: Version 0.0.0.1"
- validations:
- required: true
-- type: input
- attributes:
- label: Video link where you see the problem
- description: Video link where you see the problem
- placeholder: "Example: https://www.youtube.com/watch?v=s4-gMgdsnHQ"
- validations:
- required: true
-- type: textarea
- attributes:
- label: What happened?
- description: Also tell us, what did you expect to happen?
- placeholder: Tell us what you see!
- value: "A bug happened!"
- validations:
- required: true
-- type: textarea
- attributes:
- label: How to reproduce/recreate?
- description: Detailed steps to reproduce/recreate it.
- placeholder: "We need to be able to reproduce/recreate that bug/event in order to fix it. Please write the steps in detail."
- value: "Tell us how it happened with detailed steps for us."
- validations:
- required: true
-- type: dropdown
- attributes:
- label: "Will you be available for follow-up questions to help developers diagnose & fix the issue?"
- options:
- - "Yes"
- - "No"
- validations:
- required: true
-
-
+ - type: input
+ attributes:
+ label: Browser
+ description: Which browser are you using?
+ placeholder: "Example: Google Chrome"
+ validations:
+ required: true
+ - type: input
+ attributes:
+ label: Browser Version
+ description: Which browser version are you using?
+ placeholder: "Example: Chromium v95"
+ validations:
+ required: true
+ - type: dropdown
+ attributes:
+ label: "Extension or Userscript?"
+ options:
+ - Extension
+ - Userscript
+ validations:
+ required: true
+ - type: input
+ attributes:
+ label: Extension/Userscript Version
+ description: Which extension/userscript version are you using?
+ placeholder: "Example: Version 0.0.0.1"
+ validations:
+ required: true
+ - type: input
+ attributes:
+ label: Video link where you see the problem
+ description: Video link where you see the problem
+ placeholder: "Example: https://www.youtube.com/watch?v=s4-gMgdsnHQ"
+ validations:
+ required: true
+ - type: textarea
+ attributes:
+ label: What happened?
+ description: Also tell us, what did you expect to happen?
+ placeholder: Tell us what you see!
+ value: "A bug happened!"
+ validations:
+ required: true
+ - type: textarea
+ attributes:
+ label: How to reproduce/recreate?
+ description: Detailed steps to reproduce/recreate it.
+ placeholder: "We need to be able to reproduce/recreate that bug/event in order to fix it. Please write the steps in detail."
+ value: "Tell us how it happened with detailed steps for us."
+ validations:
+ required: true
+ - type: dropdown
+ attributes:
+ label: "Will you be available for follow-up questions to help developers diagnose & fix the issue?"
+ options:
+ - "Yes"
+ - "No"
+ validations:
+ required: true
diff --git a/.github/ISSUE_TEMPLATE/feature-request.yml b/.github/ISSUE_TEMPLATE/feature-request.yml
index 123d9d0..1328e56 100644
--- a/.github/ISSUE_TEMPLATE/feature-request.yml
+++ b/.github/ISSUE_TEMPLATE/feature-request.yml
@@ -3,37 +3,36 @@ description: Request or suggest a new feature!
# title: "(Feature Request): "
labels: ["enhancement"]
body:
-- type: dropdown
- attributes:
- label: Extension or Userscript?
- options:
- - Extension
- - Userscript
- - Both
- validations:
- required: true
-- type: textarea
- attributes:
- label: Request or suggest a new feature!
- placeholder: I want to suggest...
- validations:
- required: true
-- type: textarea
- attributes:
- label: Ways to implement this!
- placeholder: We can implement it by...
-- type: checkboxes
- attributes:
- label: Can you work on this?
- options:
- - label: "Yes"
- - label: "No"
-- type: dropdown
- attributes:
- label: "Will you be available for follow-up questions to help developers implement this?"
- options:
- - "Yes"
- - "No"
- validations:
- required: true
-
+ - type: dropdown
+ attributes:
+ label: Extension or Userscript?
+ options:
+ - Extension
+ - Userscript
+ - Both
+ validations:
+ required: true
+ - type: textarea
+ attributes:
+ label: Request or suggest a new feature!
+ placeholder: I want to suggest...
+ validations:
+ required: true
+ - type: textarea
+ attributes:
+ label: Ways to implement this!
+ placeholder: We can implement it by...
+ - type: checkboxes
+ attributes:
+ label: Can you work on this?
+ options:
+ - label: "Yes"
+ - label: "No"
+ - type: dropdown
+ attributes:
+ label: "Will you be available for follow-up questions to help developers implement this?"
+ options:
+ - "Yes"
+ - "No"
+ validations:
+ required: true
diff --git a/.github/workflows/commentCommands.yml b/.github/workflows/commentCommands.yml
index fbf4aad..1d9b47c 100644
--- a/.github/workflows/commentCommands.yml
+++ b/.github/workflows/commentCommands.yml
@@ -3,9 +3,8 @@ name: commentCommands
on:
issue_comment:
types: created
-
-jobs:
+jobs:
assign-commenter:
runs-on: ubuntu-latest
if: |
@@ -35,7 +34,7 @@ jobs:
-H "Accept: application/vnd.github+json" \
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
https://api.github.com/repos/${{ github.repository }}/issues/${{ github.event.issue.number }}/comments \
- -d '{"body":"This issue is put on hold due to low quality. No reviews or fixes will be performed at this time. Eventually, it will be closed. While we appreciate your effort writing, we are not able to further investigate it. Please improve it by writing a better title or providing more details, and you may re-open it."}'
+ -d '{"body":"This issue is put on hold due to low quality. No reviews or fixes will be performed at this time. Eventually, it will be closed. While we appreciate your effort writing, we are not able to further investigate it. Please improve it by writing a better title or providing more details, and you may re-open it."}'
add-label-duplicate:
runs-on: ubuntu-latest
if: |
diff --git a/.github/workflows/weblint.yml b/.github/workflows/weblint.yml
index 84fd10c..3ca18a3 100644
--- a/.github/workflows/weblint.yml
+++ b/.github/workflows/weblint.yml
@@ -4,23 +4,22 @@ name: Website Lint
on:
push:
- branches: [ main ]
+ branches: [main]
paths:
- Website/**
pull_request:
- branches: [ main ]
+ branches: [main]
paths:
- Website/**
jobs:
weblint:
-
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@main
- - run: npm install
- working-directory: Website
- - run: npm run lint
- working-directory: Website
+ - uses: actions/checkout@main
+ - run: npm install
+ working-directory: Website
+ - run: npm run lint
+ working-directory: Website
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index b185db8..2a65ac1 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -5,6 +5,7 @@ Read this in other languages: [Français](CONTRIBUTINGfr.md)
Thank you for investing your time in contributing to our project! All your changes will be reflected in the next version of the extension (or the [website](https://www.returnyoutubedislike.com/)).
## Getting Started
+
Please use Prettier with default settings for formatting.
#### Prerequisites
@@ -38,22 +39,28 @@ Congratulations, You are now ready to develop!
If you are new to developing Chrome extensions, or need extra help, please see [this YouTube tutorial](https://www.youtube.com/watch?v=mdOj6HYE3_0)
-
### Issues
+
#### Opening a new issue
+
If you have any issues with the extension, please search to make sure the issue isn't already reported. If it isn't, open an issue, using the issue form is highly recommended but not mandatory.
#### Solving an issue
+
If you found an issue that you feel you might be able to solve, don't be shy. Open a PR with the fix and make sure to mention the issue you are fixing.
### Feature Request
+
#### Opening a new feature request
+
If you have an idea for the extension, feel free to open a feature request, but please search it before to make sure the feature isn't already suggested. Using the feature form is highly recommended but not mandatory
#### Implementing a feature request
+
If you found a feature that you feel you might be able to implement, don't be shy. Open a PR with the fix and make sure to mention the feature you are implementing.
### What PRs do we accept?
+
- Issue fixes.
- Feature implementation.
- Typos or better and easier words to use.
diff --git a/CONTRIBUTINGfr.md b/CONTRIBUTINGfr.md
index 5a8f07a..95ece72 100644
--- a/CONTRIBUTINGfr.md
+++ b/CONTRIBUTINGfr.md
@@ -5,9 +5,11 @@ Lisez ceci dans d'autres langues : [English](CONTRIBUTING.md)
Merci d'investir votre temps pour contribuer à notre projet ! Toutes vos modifications seront prises en compte dans la prochaine version de l'extension (ou du site web).
## Pour commencer
+
Veuillez utiliser [Prettier](https://prettier.io/) avec les paramètres par défaut pour le formatage du code.
#### Prérequis
+
Vous devez avoir installé node et npm pour créer la version bundle depuis le code source.
Versions utilisées lors de la mise en place :
@@ -37,23 +39,29 @@ Félicitations, vous êtes maintenant prêt·e à développer !
Si vous n'avez jamais développé d'extensions pour Chrome ou si vous avez besoin d'une aide supplémentaire, consultez [ce tutoriel YouTube](https://www.youtube.com/watch?v=mdOj6HYE3_0) (en anglais).
-
### Problèmes (aussi appelé issues en anglais)
+
#### Signaler un problème
+
Si vous rencontrez des problèmes avec l'extension, vérifiez que le problème n'a pas déjà été signalé. Si ce n'est pas le cas, [signalez le problème](https://github.com/Anarios/return-youtube-dislike/issues/new?assignees=&labels=bug&template=bug.yml&title=%28Bug%29%3A+), en utilisant le formulaire qui est fortement recommandé mais pas obligatoire.
#### Résoudre un problème
+
Si vous avez trouvé un problème que vous pensez pouvoir résoudre, ne soyez pas timide. Ouvrez une [PR](https://github.com/Anarios/return-youtube-dislike/pulls) [(C'est quoi ?)](https://blog.zenika.com/2017/01/24/pull-request-demystifie/) avec la solution et assurez-vous de mentionner le problème que vous résolvez (écrivez # puis le numéro de l'issue).
### Demande de fonctionnalité (aussi appelé feature request en anglais)
+
#### Ouverture d'une nouvelle demande de fonctionnalité
+
Si vous avez une idée pour l'extension, n'hésitez pas à [ouvrir une demande de fonctionnalité](https://github.com/Anarios/return-youtube-dislike/issues/new?assignees=&labels=enhancement&template=feature-request.yml&title=%28Feature+Request%29%3A+), mais veuillez effectuer une recherche préalable pour vous assurer que la fonctionnalité n'est pas déjà proposée. L'utilisation du formulaire de demande de fonctionnalité est fortement recommandée mais pas obligatoire.
#### Implémenter une demande de fonctionnalité
+
Si vous avez trouvé une fonctionnalité que vous pensez pouvoir mettre en œuvre, ne soyez pas timide. Ouvrez une [PR](https://github.com/Anarios/return-youtube-dislike/pulls) [(C'est quoi ?)](https://blog.zenika.com/2017/01/24/pull-request-demystifie/) avec le correctif et assurez-vous de mentionner la fonctionnalité que vous implémentez (écrivez # puis le numéro de l'issue).
### Quels PR acceptons-nous ?
+
- Correction de problèmes.
- Implémentation de fonctionnalités.
- Fautes de frappe ou utilisation de mots plus simples et plus efficaces.
-- Contributions au site web. \ No newline at end of file
+- Contributions au site web.
diff --git a/CONTRIBUTINGru.md b/CONTRIBUTINGru.md
index e217046..82b7bc1 100644
--- a/CONTRIBUTINGru.md
+++ b/CONTRIBUTINGru.md
@@ -1,60 +1,67 @@
-Прочитать на других языках: [English](CONTRIBUTING.md)
-
-# Добро пожаловать в руководство по внесению вклада Return YouTube Dislikes
-
-Благодарим вас за то, что вы потратили своё время на участие в нашем проекте! Все ваши изменения будут отражены в следующей версии расширения (или на [сайте](https://www.returnyoutubedislike.com/)).
-
-## Приступая к работе
-Пожалуйста, используйте Prettier с настройками по умолчанию для форматирования кода.
-
-#### Необходимое
-
-Вам необходимо иметь установленные node и npm, чтобы создать bundled-версию источника.
-
-Версии, используемые при настройке:
-
-- node: 12.18.4
-- npm: 6.14.6
-
-Для создания `bundled-content-script.js` который содержит большую часть бизнес-логики этого расширения, вы должны сначала установить все зависимости.
-
-1. Перейдите в корень репозитория и выполните следующее:
-
-```
-npm install
-```
-
-2. Выполните следующую команду, чтобы создать `bundled-content-script.js`, который используется в `manifest.json`
-
-```
-npm start // для создания файла(ов) сборки и запуска наблюдателя за файлами, который выполняет hot-reload при сохранении
-
-// или
-
-npm run build // для создания файла(ов) сборки один раз
-```
-
-Поздравляем, теперь вы готовы к разработке!
-
-Если вы новичок в разработке расширений Chrome или вам нужна дополнительная помощь, посмотрите [это руководство на YouTube (англ.)](https://www.youtube.com/watch?v=mdOj6HYE3_0)
-
-
-### Вопросы
-#### Открытие нового вопроса/проблемы
-Если у вас возникли проблемы с расширением, пожалуйста, поищите, чтобы убедиться, что о проблеме ещё не сообщалось. Если это не так, откройте вопрос(issue), использование формы проблемы настоятельно рекомендуется, но не является обязательным.
-
-#### Решение вопроса
-Если вы нашли проблему, которую, как вам кажется, вы можете решить, не стесняйтесь. Откройте запрос на извлечение(pull request) с исправлением и обязательно укажите вопрос, который вы устраняете.
-
-### Запрос функции
-#### Открытие запроса на новую функцию
-Если у вас есть идея для расширения, не стесняйтесь открыть запрос на функцию, но, пожалуйста, прежде поищите другие запросы, чтобы убедиться, что функция уже не предложена. Использование формы запроса функции настоятельно рекомендуется, но не является обязательным
-
-#### Внедрение запроса на функцию
-Если вы нашли функцию, которую, как вам кажется, вы могли бы реализовать, не стесняйтесь. Откройте запрос на извлечение(pull request) с исправлением и обязательно укажите функцию, которую вы реализуете.
-
-### Какие запросы на извлечение(pull request) мы принимаем?
-- Исправления проблем.
-- Внедрения новых функций.
-- Исправления опечаток и упрощение текста.
-- Улучшения сайта. \ No newline at end of file
+Прочитать на других языках: [English](CONTRIBUTING.md)
+
+# Добро пожаловать в руководство по внесению вклада Return YouTube Dislikes
+
+Благодарим вас за то, что вы потратили своё время на участие в нашем проекте! Все ваши изменения будут отражены в следующей версии расширения (или на [сайте](https://www.returnyoutubedislike.com/)).
+
+## Приступая к работе
+
+Пожалуйста, используйте Prettier с настройками по умолчанию для форматирования кода.
+
+#### Необходимое
+
+Вам необходимо иметь установленные node и npm, чтобы создать bundled-версию источника.
+
+Версии, используемые при настройке:
+
+- node: 12.18.4
+- npm: 6.14.6
+
+Для создания `bundled-content-script.js` который содержит большую часть бизнес-логики этого расширения, вы должны сначала установить все зависимости.
+
+1. Перейдите в корень репозитория и выполните следующее:
+
+```
+npm install
+```
+
+2. Выполните следующую команду, чтобы создать `bundled-content-script.js`, который используется в `manifest.json`
+
+```
+npm start // для создания файла(ов) сборки и запуска наблюдателя за файлами, который выполняет hot-reload при сохранении
+
+// или
+
+npm run build // для создания файла(ов) сборки один раз
+```
+
+Поздравляем, теперь вы готовы к разработке!
+
+Если вы новичок в разработке расширений Chrome или вам нужна дополнительная помощь, посмотрите [это руководство на YouTube (англ.)](https://www.youtube.com/watch?v=mdOj6HYE3_0)
+
+### Вопросы
+
+#### Открытие нового вопроса/проблемы
+
+Если у вас возникли проблемы с расширением, пожалуйста, поищите, чтобы убедиться, что о проблеме ещё не сообщалось. Если это не так, откройте вопрос(issue), использование формы проблемы настоятельно рекомендуется, но не является обязательным.
+
+#### Решение вопроса
+
+Если вы нашли проблему, которую, как вам кажется, вы можете решить, не стесняйтесь. Откройте запрос на извлечение(pull request) с исправлением и обязательно укажите вопрос, который вы устраняете.
+
+### Запрос функции
+
+#### Открытие запроса на новую функцию
+
+Если у вас есть идея для расширения, не стесняйтесь открыть запрос на функцию, но, пожалуйста, прежде поищите другие запросы, чтобы убедиться, что функция уже не предложена. Использование формы запроса функции настоятельно рекомендуется, но не является обязательным
+
+#### Внедрение запроса на функцию
+
+Если вы нашли функцию, которую, как вам кажется, вы могли бы реализовать, не стесняйтесь. Откройте запрос на извлечение(pull request) с исправлением и обязательно укажите функцию, которую вы реализуете.
+
+### Какие запросы на извлечение(pull request) мы принимаем?
+
+- Исправления проблем.
+- Внедрения новых функций.
+- Исправления опечаток и упрощение текста.
+- Улучшения сайта.
diff --git a/Docs/FAQ.md b/Docs/FAQ.md
index 8efc8c9..d539b4f 100644
--- a/Docs/FAQ.md
+++ b/Docs/FAQ.md
@@ -1,11 +1,13 @@
Read this in other languages: [Français](FAQfr.md)
# Frequently Asked Questions
+
## Before asking a question on GitHub or Discord, please refer to this.
<br>
### **1. Where does this extension get the data?**
+
A Combination of Google APIs and scraped data.
We save all available data to our DB for it to be available after Google shuts down dislike counts in their API.
@@ -13,6 +15,7 @@ We save all available data to our DB for it to be available after Google shuts d
<br>
### **2. Video dislike count doesn't update**
+
Right now video dislikes are cached, and aren't updated very frequenly. Once every 2-3 days, not more often.
Yeah, it's not ideal, but it is what it is. Working on improving how often we can update them.
@@ -20,11 +23,13 @@ Yeah, it's not ideal, but it is what it is. Working on improving how often we ca
<br>
### **3. How does this work?**
+
The extension collects the video id of the video you are watching, fetches the dislike (and other fields like views, likes etc) using our API, if this is the first time the video was fetched by our API, it will use the YouTube API to get the data, then stores the data in a database for caching (cached for around 2-3 days) and archiving purposes and returns it to you. The extension then displays the dislikes to you.
<br>
### **4. What will happen after the YouTube API stops returning the dislike count?**
+
The backend will switch to using a combination of archived dislike stats, estimates extrapolated from extension user data and estimates based on view/like ratios for videos whose dislikes weren't archived and for outdated dislike archives.
<br>
@@ -52,4 +57,5 @@ This in video form
<br>
## I have security / privacy concerns
+
See [this page](SECURITY-FAQ.md) for more info.
diff --git a/Docs/FAQfr.md b/Docs/FAQfr.md
index c6c702e..76b481e 100644
--- a/Docs/FAQfr.md
+++ b/Docs/FAQfr.md
@@ -1,23 +1,29 @@
Lisez ceci dans d'autres langues : [English](FAQ.md)
# Foire Aux Questions
+
## Avant de poser une question sur GitHub ou Discord, veuillez vous référer à ceci.
### **1. Où cette extension obtient-elle les données ?**
+
Une combinaison d'API de Google et de données scrapées.
Nous sauvegardons toutes les données disponibles dans notre base de données pour qu'elles soient disponibles après que Google ait supprimé le compteur de dislikes dans son API.
### **2. Le nombre de dislikes sur les vidéos n'est pas mis à jour**
+
Actuellement, les dislike sont mis en cache et ne sont pas mis à jour très fréquemment. Une fois tous les 2-3 jours, pas plus souvent.
Oui, ce n'est pas idéal, mais c'est ce que c'est. Nous travaillons à améliorer la fréquence des mises à jour.
### **3. Comment cela fonctionne-t-il ?**
+
L'extension collecte l'ID de la vidéo que vous regardez, récupère les dislikes (et d'autres champs comme les vues, les likes etc.) en utilisant notre API, si c'est la première fois que la vidéo a été récupérée par notre API, elle utilisera l'API YouTube pour obtenir les données, puis stocke les données dans une base de données pour la mise en cache (mise en cache pendant environ 2-3 jours) et à des fins d'archivage et vous les renvoie. L'extension vous affiche ensuite les dislikes.
### **4. Que se passera-t-il lorsque l'API YouTube ne renverra plus le nombre de dislikes ?**
+
Le backend utilisera une combinaison de statistiques du nombre de dislikes archivées, d'estimations extrapolées à partir des données d'extension des utilisateurs et d'estimations basées sur les ratios vues/likes pour les vidéos dont les dislikes n'ont pas été archivées et pour les archives dont le nombre de dislikes est obsolète.
## Je suis préoccupé par la sécurité / la confidentialité
-Voir [cette page](SECURITY-FAQfr.md) pour plus d'informations. \ No newline at end of file
+
+Voir [cette page](SECURITY-FAQfr.md) pour plus d'informations.
diff --git a/Docs/Guide__Installing.md b/Docs/Guide__Installing.md
index bd03fcd..e38338b 100644
--- a/Docs/Guide__Installing.md
+++ b/Docs/Guide__Installing.md
@@ -1,328 +1,320 @@
-
-
-**Contents**
-
-- [Downloading](#downloading)
- - [Desktop (all OS supported by these browsers)](#desktop-all-os-supported-by-these-browsers)
- - [Chromium Based Browsers](#chromium-based-browsers)
- - [Firefox Based Browsers](#firefox-based-browsers)
- - [Mobile](#mobile)
- - [Android](#android)
- - [iOS](#ios)
- - [Userscript](#userscript)
-- [Installation](#installation)
- - [Desktop](#desktop)
- - [**Chromium based browsers**](#chromium-based-browsers-1)
- - [From Chrome Webstore](#from-chrome-webstore)
- - [From crx/zip file](#from-crxzip-file)
- - [From unzipped folder](#from-unzipped-folder)
- - [**Firefox Based Browsers**](#firefox-based-browsers-1)
- - [From addon store](#from-addon-store)
- - [From xpi/jar/zip file](#from-xpijarzip-file)
- - [Mobile](#mobile-1)
- - [Android](#android-1)
- - [App from Play Store](#app-from-play-store)
- - [On Firefox](#on-firefox)
- - [iOS](#ios-1)
-- [Using](#using)
-- [Updating](#updating)
- - [Extension / Addon](#extension--addon)
-- [Miscellaneous](#miscellaneous)
- - [Using YouTube website as an app with an extension](#using-youtube-website-as-an-app-with-an-extension)
- - [Desktop](#desktop-1)
- - [Chromium Based Browsers](#chromium-based-browsers-2)
- - [Firefox Based Browsers](#firefox-based-browsers-2)
- - [Mobile](#mobile-2)
- - [Firefox Based Browsers](#firefox-based-browsers-3)
- - [Chromium Based Browsers](#chromium-based-browsers-3)
-
-<br>
-
-<br>
-
-## Downloading
-
-### Desktop (all OS supported by these browsers)
-
-<br>
-
-#### [Chromium Based Browsers][4]
-
-This extension has been tested to work on these browsers.
-
-- [Google Chrome][1]
-- [Microsoft Edge][1]
-- [Brave][1]
-- [Opera][1]
-
-It should be able to work on [all Chromium-based browsers (list here)][4]. But that isn't guaranteed.
-
-<br>
-
-#### [Firefox Based Browsers][5]
-
-- [Firefox][2]
-- This addon should be able to run on most of the [Firefox-based browsers][5]. But isn't guaranteed.
-
-<br>
-
-### Mobile
-
-#### Android
-
-1. **F-Droid Store**
-
-- [Show Youtube Dislikes](https://f-droid.org/en/packages/com.jesperh.showyoutubedislikes/)
-
- [Download from here (Click here)](https://f-droid.org/en/packages/com.jesperh.showyoutubedislikes/)
-
- The source code is available at [github.com/jesperbakhandskemager/view-youtube-dislike](https://github.com/jesperbakhandskemager/view-youtube-dislike)
-
- You can download the apk file from
- [https://github.com/jesperbakhandskemager/view-youtube-dislike/releases/](https://github.com/jesperbakhandskemager/view-youtube-dislike/releases/)
-
- **Note: This app is NOT made by the original author of the extension**.
-
-2. [**Firefox Nightly**][2]
-
-- This addon should be able to run on most of the [Firefox-based browsers][5]. But isn't guaranteed.
-
-3. [**Chromium Based browsers**][4]
-
-Most [**Chromium Based browsers**][4] **don't support extensions on Android or iOS**
-
-However, [Kiwi Browser](https://kiwibrowser.com/) does. You can refer to this video - [Google Chrome Extensions on Android with Kiwi Browser!](https://youtu.be/T6J0T_-oim4)
-
-<br>
-
-#### iOS
-
-No Support on Firefox
-
-You can have a look at these pages for more information (the reason why it's not available on Firefox):
-
-- [https://support.mozilla.org/en-US/kb/add-ons-firefox-ios]
-- [https://support.mozilla.org/en-US/questions/1101350]
-
-For now, you can try this
-
-- [For Jailbroken iOS - **WE TAKE NO RESPONSIBILITY. USE AT YOUR OWN RISK**](https://chariz.com/get/return-youtube-dislike)
-
- This is an iOS port [**developed by a separate team**](https://github.com/PoomSmart/Return-YouTube-Dislikes) not related to the owner of github.com/Anarios/return-youtube-dislike
-
-#### Userscript
-
-[Download from here](https://returnyoutubedislike.com/install)
-
-<br>
-
-<br>
-
-## Installation
-
-### Desktop
-
-<br>
-
-#### [**Chromium based browsers**][4]
-
-<br>
-
-##### From Chrome Webstore
-
-1. [Go to website (click here)][1]
-2. Click install
-3. Wait for the extension to download and
-4. 🙂 Installed !!
-
-<br>
-
-##### From crx/zip file
-
-1. Download the crx/zip file.
-2. Type [`chrome://extensions`][6] in address bar
-3. Search for the "Developer Mode" switch and turn it on.
-4. Open the folder and the browser side by side.
-5. Drag and drop the crx/zip file in [chrome://extensions][6] tab
-6. Click on "Add extension"
-7. Installation Completed 🎉
-8. Remember to **turn off the "developer mode"** if not needed
-
-<br>
-
-##### From unzipped folder
-
-1. Download the crx/zip file.
-2. Go to [`chrome://extensions`][6]
-3. Search for the "Developer Mode" switch and turn it on.
-4. Click on "Load Unpacked"
-5. Navigate to the folder & select it
-6. The extension should be installed 🎉
-7. Remember to **turn off the "developer mode"** if not needed
-
-<br>
-
-#### [**Firefox Based Browsers**][5]
-
-##### From addon store
-
-1. Go to the addon store and find the extension or [click here][2].
-2. Click on `Add to Firefox`
-3. Done 🎉 The extension should be installed.
-
-<br>
-
-##### From xpi/jar/zip file
-
-1. Type `about:addons` in the address bar and press "Enter". Alternatively, You can use
- `Ctrl` + `Shift` + `A` on Windows and
- `Cmd` + `Shift` + `A` on Mac and
-2. Click on the Setting Gear icon `⚙`.
-3. Click on `Install Add-on From File...`
-4. Locate and click on the .xpi/.jar/.zip file.
-5. Select and click to open it.
-6. Done 🎉 The extension should be installed.
-
-<br>
-
-### Mobile
-
-#### Android
-
-##### App from Play Store
-
-- Although app(s) which use this API exist, they aren't official.
-
-
-##### On Firefox
-
-1. Install Firefox Nightly. Refer to this blog post for the procedure: [Expanded extension support in Firefox for Android Nightly](https://blog.mozilla.org/addons/2020/09/29/expanded-extension-support-in-firefox-for-android-nightly/)
-2. Install the extension in it from [addon store][2]
-3. If you want - install the site as an app. For that procedure [go here](#firefox-based-browsers-3).
-
-#### iOS
-
-- [For iOS click here](#ios)
-- Only available on Firefox-based browsers because Chromium-based browsers for the Android platform don't support installing extensions.
-
-<br>
-
-<br>
-
-## Using
-
-No more steps are required, it should start working right away.
-
-If required you can restart your browser.
-
-**🎉 🎊 Congratulations** 🥳 🎊
-
-<br>
-
-<br>
-
-## Updating
-
-### Extension / Addon
-
-On [Chromium based browsers][4]
-
-- [from webstore][1]
-- sideloading from [crx/zip file](#from-crxzip-file) or [unzipped folder](#from-unzipped-folder)
-
-On [Firefox based browsers][5]
-
-- [from addon store][2]
-- [sideloading from xpi/jar/zip file](#from-xpijarzip-file)
-
-On [Firefox based browsers][5] for mobile
-
-- [from addon store][2]
-
-<br>
-
-<br>
-
-## Miscellaneous
-
-### Using YouTube website as an app with an extension
-
-#### Desktop
-
-##### Chromium Based Browsers
-
-0. Go to YouTube
-1. Tap on menu button (`☰` / `⋯` / `⋮`)
-2. Click on "Install YouTube"
-3. 🎉Done!
-
-<br>
-
-##### Firefox Based Browsers
-
-**⚠ Doesn't work on newer versions.**
-
-1. Type [`about:config`](about:config) in address bar & press `Enter` key.
-2. When warned `Proceed with Caution` click on `Accept the Risk and Continue`
-3. Locate and click on the search bar on the page.
-4. Type `browser.ssb.enable`.
-5. click on `⇋` and make sure the state is set to `true`.
-6. Restart the browser and Open YouTube.
-7. Click on `⋮` located in the upper right corner
-8. Click `Install this website as an app` or `Install this website as an app` which depends on the version you are using.
-9. Done! 🎉 You should be able to see the site's app in the start menu.
-
-You can also refer here (for pictures):
-
-[How to Enable the Site-Specific Browser (SSB) in Firefox - Make Tech Easier](https://www.maketecheasier.com/enable-site-specific-browser-firefox)
-
-<br>
-
-#### Mobile
-
-##### Firefox Based Browsers
-
-0. Install the extension
-1. Go to YouTube
-2. Tap on the three dots `⋮` located at the bottom right corner of the screen.
-3. Turn on "Desktop Site".
-4. Refresh the page.
-5. Wait for it to completely load.
-6. Tap again on the three dots `⋮` located at the bottom right corner of the screen.
-7. You will see an option as `Install`. Tap on it.
-8. Tap - `Add` when asked `Add to Home screen?`
-9. Enjoy the YT site as a Firefox nightly app !!
-
-<br>
-
-##### [Chromium Based Browsers][4]
-
-But still - here are the steps:
-
-1. Go to YouTube
-2. Tap on the three dots `⋮` located at the bottom right corner of the screen.
-3. Turn on "Desktop Site".
-4. Refresh the page and wait for it to completely load.
-5. Tap again on the three dots `⋮` located at the bottom right corner of the screen.
-6. You will see an option as `Install`. Tap on it.
-7. When asked `Install App` tap on `Yes`
-8. Tap - `Add` when asked `Add to Home screen?`
-9. Enjoy the YT site as an app !!
-
-<br>
-
-<br>
-
-<!-- links -->
-
-[1]: https://chrome.google.com/webstore/detail/return-youtube-dislike/gebbhagfogifgggkldgodflihgfeippi
-
-[2]: https://addons.mozilla.org/en-US/firefox/addon/return-youtube-dislikes/
-
-[3]: https://github.com/Anarios/return-youtube-dislike/raw/main/Extensions/UserScript/Return%20Youtube%20Dislike.user.js
-
-[4]: https://en.wikipedia.org/wiki/Chromium_(web_browser)#Browsers_based_on_Chromium
-
-[5]: https://en.wikipedia.org/wiki/Category:Web_browsers_based_on_Firefox
-
-[6]: chrome://extensions
+**Contents**
+
+- [Downloading](#downloading)
+ - [Desktop (all OS supported by these browsers)](#desktop-all-os-supported-by-these-browsers)
+ - [Chromium Based Browsers](#chromium-based-browsers)
+ - [Firefox Based Browsers](#firefox-based-browsers)
+ - [Mobile](#mobile)
+ - [Android](#android)
+ - [iOS](#ios)
+ - [Userscript](#userscript)
+- [Installation](#installation)
+ - [Desktop](#desktop)
+ - [**Chromium based browsers**](#chromium-based-browsers-1)
+ - [From Chrome Webstore](#from-chrome-webstore)
+ - [From crx/zip file](#from-crxzip-file)
+ - [From unzipped folder](#from-unzipped-folder)
+ - [**Firefox Based Browsers**](#firefox-based-browsers-1)
+ - [From addon store](#from-addon-store)
+ - [From xpi/jar/zip file](#from-xpijarzip-file)
+ - [Mobile](#mobile-1)
+ - [Android](#android-1)
+ - [App from Play Store](#app-from-play-store)
+ - [On Firefox](#on-firefox)
+ - [iOS](#ios-1)
+- [Using](#using)
+- [Updating](#updating)
+ - [Extension / Addon](#extension--addon)
+- [Miscellaneous](#miscellaneous)
+ - [Using YouTube website as an app with an extension](#using-youtube-website-as-an-app-with-an-extension)
+ - [Desktop](#desktop-1)
+ - [Chromium Based Browsers](#chromium-based-browsers-2)
+ - [Firefox Based Browsers](#firefox-based-browsers-2)
+ - [Mobile](#mobile-2)
+ - [Firefox Based Browsers](#firefox-based-browsers-3)
+ - [Chromium Based Browsers](#chromium-based-browsers-3)
+
+<br>
+
+<br>
+
+## Downloading
+
+### Desktop (all OS supported by these browsers)
+
+<br>
+
+#### [Chromium Based Browsers][4]
+
+This extension has been tested to work on these browsers.
+
+- [Google Chrome][1]
+- [Microsoft Edge][1]
+- [Brave][1]
+- [Opera][1]
+
+It should be able to work on [all Chromium-based browsers (list here)][4]. But that isn't guaranteed.
+
+<br>
+
+#### [Firefox Based Browsers][5]
+
+- [Firefox][2]
+- This addon should be able to run on most of the [Firefox-based browsers][5]. But isn't guaranteed.
+
+<br>
+
+### Mobile
+
+#### Android
+
+1. **F-Droid Store**
+
+- [Show Youtube Dislikes](https://f-droid.org/en/packages/com.jesperh.showyoutubedislikes/)
+
+ [Download from here (Click here)](https://f-droid.org/en/packages/com.jesperh.showyoutubedislikes/)
+
+ The source code is available at [github.com/jesperbakhandskemager/view-youtube-dislike](https://github.com/jesperbakhandskemager/view-youtube-dislike)
+
+ You can download the apk file from
+ [https://github.com/jesperbakhandskemager/view-youtube-dislike/releases/](https://github.com/jesperbakhandskemager/view-youtube-dislike/releases/)
+
+ **Note: This app is NOT made by the original author of the extension**.
+
+2. [**Firefox Nightly**][2]
+
+- This addon should be able to run on most of the [Firefox-based browsers][5]. But isn't guaranteed.
+
+3. [**Chromium Based browsers**][4]
+
+Most [**Chromium Based browsers**][4] **don't support extensions on Android or iOS**
+
+However, [Kiwi Browser](https://kiwibrowser.com/) does. You can refer to this video - [Google Chrome Extensions on Android with Kiwi Browser!](https://youtu.be/T6J0T_-oim4)
+
+<br>
+
+#### iOS
+
+No Support on Firefox
+
+You can have a look at these pages for more information (the reason why it's not available on Firefox):
+
+- [https://support.mozilla.org/en-US/kb/add-ons-firefox-ios]
+- [https://support.mozilla.org/en-US/questions/1101350]
+
+For now, you can try this
+
+- [For Jailbroken iOS - **WE TAKE NO RESPONSIBILITY. USE AT YOUR OWN RISK**](https://chariz.com/get/return-youtube-dislike)
+
+ This is an iOS port [**developed by a separate team**](https://github.com/PoomSmart/Return-YouTube-Dislikes) not related to the owner of github.com/Anarios/return-youtube-dislike
+
+#### Userscript
+
+[Download from here](https://returnyoutubedislike.com/install)
+
+<br>
+
+<br>
+
+## Installation
+
+### Desktop
+
+<br>
+
+#### [**Chromium based browsers**][4]
+
+<br>
+
+##### From Chrome Webstore
+
+1. [Go to website (click here)][1]
+2. Click install
+3. Wait for the extension to download and
+4. 🙂 Installed !!
+
+<br>
+
+##### From crx/zip file
+
+1. Download the crx/zip file.
+2. Type [`chrome://extensions`][6] in address bar
+3. Search for the "Developer Mode" switch and turn it on.
+4. Open the folder and the browser side by side.
+5. Drag and drop the crx/zip file in [chrome://extensions][6] tab
+6. Click on "Add extension"
+7. Installation Completed 🎉
+8. Remember to **turn off the "developer mode"** if not needed
+
+<br>
+
+##### From unzipped folder
+
+1. Download the crx/zip file.
+2. Go to [`chrome://extensions`][6]
+3. Search for the "Developer Mode" switch and turn it on.
+4. Click on "Load Unpacked"
+5. Navigate to the folder & select it
+6. The extension should be installed 🎉
+7. Remember to **turn off the "developer mode"** if not needed
+
+<br>
+
+#### [**Firefox Based Browsers**][5]
+
+##### From addon store
+
+1. Go to the addon store and find the extension or [click here][2].
+2. Click on `Add to Firefox`
+3. Done 🎉 The extension should be installed.
+
+<br>
+
+##### From xpi/jar/zip file
+
+1. Type `about:addons` in the address bar and press "Enter". Alternatively, You can use
+ `Ctrl` + `Shift` + `A` on Windows and
+ `Cmd` + `Shift` + `A` on Mac and
+2. Click on the Setting Gear icon `⚙`.
+3. Click on `Install Add-on From File...`
+4. Locate and click on the .xpi/.jar/.zip file.
+5. Select and click to open it.
+6. Done 🎉 The extension should be installed.
+
+<br>
+
+### Mobile
+
+#### Android
+
+##### App from Play Store
+
+- Although app(s) which use this API exist, they aren't official.
+
+##### On Firefox
+
+1. Install Firefox Nightly. Refer to this blog post for the procedure: [Expanded extension support in Firefox for Android Nightly](https://blog.mozilla.org/addons/2020/09/29/expanded-extension-support-in-firefox-for-android-nightly/)
+2. Install the extension in it from [addon store][2]
+3. If you want - install the site as an app. For that procedure [go here](#firefox-based-browsers-3).
+
+#### iOS
+
+- [For iOS click here](#ios)
+- Only available on Firefox-based browsers because Chromium-based browsers for the Android platform don't support installing extensions.
+
+<br>
+
+<br>
+
+## Using
+
+No more steps are required, it should start working right away.
+
+If required you can restart your browser.
+
+**🎉 🎊 Congratulations** 🥳 🎊
+
+<br>
+
+<br>
+
+## Updating
+
+### Extension / Addon
+
+On [Chromium based browsers][4]
+
+- [from webstore][1]
+- sideloading from [crx/zip file](#from-crxzip-file) or [unzipped folder](#from-unzipped-folder)
+
+On [Firefox based browsers][5]
+
+- [from addon store][2]
+- [sideloading from xpi/jar/zip file](#from-xpijarzip-file)
+
+On [Firefox based browsers][5] for mobile
+
+- [from addon store][2]
+
+<br>
+
+<br>
+
+## Miscellaneous
+
+### Using YouTube website as an app with an extension
+
+#### Desktop
+
+##### Chromium Based Browsers
+
+0. Go to YouTube
+1. Tap on menu button (`☰` / `⋯` / `⋮`)
+2. Click on "Install YouTube"
+3. 🎉Done!
+
+<br>
+
+##### Firefox Based Browsers
+
+**⚠ Doesn't work on newer versions.**
+
+1. Type [`about:config`](about:config) in address bar & press `Enter` key.
+2. When warned `Proceed with Caution` click on `Accept the Risk and Continue`
+3. Locate and click on the search bar on the page.
+4. Type `browser.ssb.enable`.
+5. click on `⇋` and make sure the state is set to `true`.
+6. Restart the browser and Open YouTube.
+7. Click on `⋮` located in the upper right corner
+8. Click `Install this website as an app` or `Install this website as an app` which depends on the version you are using.
+9. Done! 🎉 You should be able to see the site's app in the start menu.
+
+You can also refer here (for pictures):
+
+[How to Enable the Site-Specific Browser (SSB) in Firefox - Make Tech Easier](https://www.maketecheasier.com/enable-site-specific-browser-firefox)
+
+<br>
+
+#### Mobile
+
+##### Firefox Based Browsers
+
+0. Install the extension
+1. Go to YouTube
+2. Tap on the three dots `⋮` located at the bottom right corner of the screen.
+3. Turn on "Desktop Site".
+4. Refresh the page.
+5. Wait for it to completely load.
+6. Tap again on the three dots `⋮` located at the bottom right corner of the screen.
+7. You will see an option as `Install`. Tap on it.
+8. Tap - `Add` when asked `Add to Home screen?`
+9. Enjoy the YT site as a Firefox nightly app !!
+
+<br>
+
+##### [Chromium Based Browsers][4]
+
+But still - here are the steps:
+
+1. Go to YouTube
+2. Tap on the three dots `⋮` located at the bottom right corner of the screen.
+3. Turn on "Desktop Site".
+4. Refresh the page and wait for it to completely load.
+5. Tap again on the three dots `⋮` located at the bottom right corner of the screen.
+6. You will see an option as `Install`. Tap on it.
+7. When asked `Install App` tap on `Yes`
+8. Tap - `Add` when asked `Add to Home screen?`
+9. Enjoy the YT site as an app !!
+
+<br>
+
+<br>
+
+<!-- links -->
+
+[1]: https://chrome.google.com/webstore/detail/return-youtube-dislike/gebbhagfogifgggkldgodflihgfeippi
+[2]: https://addons.mozilla.org/en-US/firefox/addon/return-youtube-dislikes/
+[3]: https://github.com/Anarios/return-youtube-dislike/raw/main/Extensions/UserScript/Return%20Youtube%20Dislike.user.js
+[4]: https://en.wikipedia.org/wiki/Chromium_(web_browser)#Browsers_based_on_Chromium
+[5]: https://en.wikipedia.org/wiki/Category:Web_browsers_based_on_Firefox
+[6]: chrome://extensions
diff --git a/Docs/Guide__Troubleshooting.md b/Docs/Guide__Troubleshooting.md
index 9409d49..e461194 100644
--- a/Docs/Guide__Troubleshooting.md
+++ b/Docs/Guide__Troubleshooting.md
@@ -1,187 +1,184 @@
-Troubleshooting Guide
-
-**Index**
-
-- [Extension](#extension)
- - [Basic checks](#basic-checks)
- - [Check API status](#check-api-status)
- - [Install certificates](#install-certificates)
- - [Check for logs in the console](#check-for-logs-in-the-console)
- - [In Chromium Based browsers](#in-chromium-based-browsers)
- - [In Firefox Based Browsers](#in-firefox-based-browsers)
- - [Check for conflicting extensions](#check-for-conflicting-extensions)
- - [Known conflicts](#known-conflicts)
-- [iOS app](#ios-app)
-- [YouTube Vanced app](#youtube-vanced--app)
-- [Contact in Discord Server](#contact-in-discord-server)
-- [Useful Links](#useful-links)
-
-<br>
-
-## Extension
-
-(for Windows & Macs)
-
-### Basic checks
-
-1. Make sure you have the latest version of the extension installed. ([Click Here to check](https://chrome.google.com/webstore/detail/return-youtube-dislike/gebbhagfogifgggkldgodflihgfeippi#:~:text=Report%20abuse-,Version,-2.0.0.3))
-2. Close all the tabs & restart your browser
-3. Reinstall the extension.
-4. [Check API status](#check-api-status)
-5. [Check Cloudflare status](https://www.cloudflarestatus.com/)
-6. [If you are on Windows 7 read this](#install-certificates)
-
-<br>
-
-### Check API status
-
-If the basic checks didn't resolve anything
-
-[See if you get any response from this link (click here)](https://returnyoutubedislikeapi.com/votes?videoId=QOFEgexls14)
-
-- If you **don't see something like** this, then the **API is down** and **everything is fine on your side**.
- `{"id":"QOFEgexls14","dateCreated":"2021-12-28T02:53:20.995329Z","likes":2968,"dislikes":204,"rating":4.725047080979285,"viewCount":29157,"deleted":false}`
-- If you see some responses but not in the above format (with likes and dislikes) then probably you are being rate-limited. It is done to prevent bot attacks and database vandalization. It depends on IP (its hash - which is never stored in non-volatile storage) for its countermeasures. If many people are accessing the server from the same IP (as in the case of public/institutional Wi-Fi) then it's possible that the IP is being rate-limited. If that's the case, there's no way for us to differentiate you from a bot/attacker.
-
-**If you see "Certificate error" and [if you are on Windows 7 (or earlier) read this](#install-certificates)**
-
-<br><br>
-
-### Install certificates
-
-**Applies for Windows 7 (and earlier) only**
-
-and only for [Chromium Based Browsers][1]
-
-- [Chromium-based browsers][1] don't have their own certificate manager.
-- They use Windows' certificates manager.
-- Microsoft has officially dropped the support for Windows 7
-
-You will have to install the latest certificates for that.
-
-You can follow this guide:
-
-[Fix error NET::ERR CERT DATE INVALID - Your connection is not private - Windows 7 - 2021](https://youtu.be/JYZLxP2Z8G4)
-
-If you don't want to install the certificate from Google Drive
-
-- Here is the official link to the certificate [**x1.i.lencr.org**](http://x1.i.lencr.org/).
-- **You will have to close all the tabs** before downloading this certificate.
-
-**The thumbprint of real certificate is `cabd2a79a1076a31f21d253635cb039d4329a5e8`**
-
-**To make sure that you have installed the correct certificate, you should consider checking if the thumbprints match.** To do this you can follow this guide: [How to check a certificate's thumbprint](https://knowledge.digicert.com/solution/SO9840.html)
-
-<br>
-
-### Check for logs in the console
-
-#### [In Chromium Based browsers][1]
-
-1. In Developer tools, go to [`console` panel](https://developer.chrome.com/docs/devtools/open/#console).
- - For Windows press `Ctrl` + `Shift` + `J` all at once
- - For Mac press `Cmd` + `Option` + `J` all at once
-2. Find `filter` box in the newly appeared window.
-3. Type `Return`.
-4. Check the [Check API Status](#check-api-status) and see if you get similar responses.
-5. If you see any errors in red [please contact us][4] and report them in our [discord server][3]
-
-<!-- If ever needed
- - For Android refer to this article: [Remote debug Android devices](https://developer.chrome.com/docs/devtools/remote-debugging/) -->
-
-<br>
-
-#### [In Firefox Based Browsers][2]
-
-1. Open Browser Console
- - For standard keyboard layout press `Ctrl` + `Shift` + `K` all at once
- - For Mac keyboard layout press `Cmd` + `Option` + `K` all at once
- - For Android refer to this article: [Remotely debugging Firefox <36 for Android](https://developer.mozilla.org/en-US/docs/Tools/Remote_Debugging/Firefox_for_Android)
-2. Find `Filter Output` box in the newly appeared window.
-3. Type `Return`.
-4. If you see any errors in red [please contact us][4] and report them in our [discord server][3]
-
-<br>
-
-### Check for conflicting extensions
-
-Some privacy and/or security-focused extensions such as ad- or script-blockers, as well as YouTube customization plugins might prevent the extension from working correctly.
-Try to disable all other extensions and test whether the extension works.
-If it does, find the extension(s) preventing RYD from working correctly and re-configure them in a way that'd stop them from interfering.
-
-<br>
-
-### Known conflicts
-
->### scriptSafe
->
-> **Solution:** Trust `returnyoutubedislikeapi.com` manually
->
-> ![trust returnyoutubedislikeapi.com manually](https://cdn.discordapp.com/attachments/821116437720334397/929814357708247060/unknown.png)
-
-<br>
-
-> ### uMatrix
->
-> **Solution:** Allow XHR for `returnyoutubedislikeapi.com` manually
->
-> ![Allow XHR for `returnyoutubedislikeapi.com` manually](https://media.discordapp.net/attachments/821116437720334397/929813724238336141/unknown.png)
-
-<br>
-
-<br>
-
-## iOS app
-
-Coming soon. Please have patience.
-
-<br>
-
-<br>
-
-## YouTube Vanced app
-
-Coming soon. Please have patience.
-
-<br>
-
-<br>
-
-## Contact in Discord Server
-
-**Only if nothing mentioned above helped and you still have a problem.**
-
-[Discord server link: https://discord.gg/mYnESY4Md5][3]
-
-0. Join the discord server if you haven't already
-1. Go to the #Bugs-and-problems channel
-2. There, thoroughly describe:
- - your problem
- - what you have tried and what didn't work
- - results of the troubleshooting steps
-
-<!-- {
- "update_frequency" : "low"
-} -->
-
-<br>
-
-<br>
-
-## Useful Links
-
-[List of Chromium Based Browsers][1]
-
-[List of Firefox Based Browsers][2]
-
-[Return-YouTube-Dislike Discord Server][3]
-
-<!-- links -->
-
-[1]: https://en.wikipedia.org/wiki/Chromium_(web_browser)#Browsers_based_on_Chromium
-
-[2]: https://en.wikipedia.org/wiki/Category:Web_browsers_based_on_Firefox
-
-[3]: https://discord.gg/mYnESY4Md5
-
-[4]: #contact-in-discord-server
+Troubleshooting Guide
+
+**Index**
+
+- [Extension](#extension)
+ - [Basic checks](#basic-checks)
+ - [Check API status](#check-api-status)
+ - [Install certificates](#install-certificates)
+ - [Check for logs in the console](#check-for-logs-in-the-console)
+ - [In Chromium Based browsers](#in-chromium-based-browsers)
+ - [In Firefox Based Browsers](#in-firefox-based-browsers)
+ - [Check for conflicting extensions](#check-for-conflicting-extensions)
+ - [Known conflicts](#known-conflicts)
+- [iOS app](#ios-app)
+- [YouTube Vanced app](#youtube-vanced--app)
+- [Contact in Discord Server](#contact-in-discord-server)
+- [Useful Links](#useful-links)
+
+<br>
+
+## Extension
+
+(for Windows & Macs)
+
+### Basic checks
+
+1. Make sure you have the latest version of the extension installed. ([Click Here to check](https://chrome.google.com/webstore/detail/return-youtube-dislike/gebbhagfogifgggkldgodflihgfeippi#:~:text=Report%20abuse-,Version,-2.0.0.3))
+2. Close all the tabs & restart your browser
+3. Reinstall the extension.
+4. [Check API status](#check-api-status)
+5. [Check Cloudflare status](https://www.cloudflarestatus.com/)
+6. [If you are on Windows 7 read this](#install-certificates)
+
+<br>
+
+### Check API status
+
+If the basic checks didn't resolve anything
+
+[See if you get any response from this link (click here)](https://returnyoutubedislikeapi.com/votes?videoId=QOFEgexls14)
+
+- If you **don't see something like** this, then the **API is down** and **everything is fine on your side**.
+ `{"id":"QOFEgexls14","dateCreated":"2021-12-28T02:53:20.995329Z","likes":2968,"dislikes":204,"rating":4.725047080979285,"viewCount":29157,"deleted":false}`
+- If you see some responses but not in the above format (with likes and dislikes) then probably you are being rate-limited. It is done to prevent bot attacks and database vandalization. It depends on IP (its hash - which is never stored in non-volatile storage) for its countermeasures. If many people are accessing the server from the same IP (as in the case of public/institutional Wi-Fi) then it's possible that the IP is being rate-limited. If that's the case, there's no way for us to differentiate you from a bot/attacker.
+
+**If you see "Certificate error" and [if you are on Windows 7 (or earlier) read this](#install-certificates)**
+
+<br><br>
+
+### Install certificates
+
+**Applies for Windows 7 (and earlier) only**
+
+and only for [Chromium Based Browsers][1]
+
+- [Chromium-based browsers][1] don't have their own certificate manager.
+- They use Windows' certificates manager.
+- Microsoft has officially dropped the support for Windows 7
+
+You will have to install the latest certificates for that.
+
+You can follow this guide:
+
+[Fix error NET::ERR CERT DATE INVALID - Your connection is not private - Windows 7 - 2021](https://youtu.be/JYZLxP2Z8G4)
+
+If you don't want to install the certificate from Google Drive
+
+- Here is the official link to the certificate [**x1.i.lencr.org**](http://x1.i.lencr.org/).
+- **You will have to close all the tabs** before downloading this certificate.
+
+**The thumbprint of real certificate is `cabd2a79a1076a31f21d253635cb039d4329a5e8`**
+
+**To make sure that you have installed the correct certificate, you should consider checking if the thumbprints match.** To do this you can follow this guide: [How to check a certificate's thumbprint](https://knowledge.digicert.com/solution/SO9840.html)
+
+<br>
+
+### Check for logs in the console
+
+#### [In Chromium Based browsers][1]
+
+1. In Developer tools, go to [`console` panel](https://developer.chrome.com/docs/devtools/open/#console).
+ - For Windows press `Ctrl` + `Shift` + `J` all at once
+ - For Mac press `Cmd` + `Option` + `J` all at once
+2. Find `filter` box in the newly appeared window.
+3. Type `Return`.
+4. Check the [Check API Status](#check-api-status) and see if you get similar responses.
+5. If you see any errors in red [please contact us][4] and report them in our [discord server][3]
+
+<!-- If ever needed
+ - For Android refer to this article: [Remote debug Android devices](https://developer.chrome.com/docs/devtools/remote-debugging/) -->
+
+<br>
+
+#### [In Firefox Based Browsers][2]
+
+1. Open Browser Console
+ - For standard keyboard layout press `Ctrl` + `Shift` + `K` all at once
+ - For Mac keyboard layout press `Cmd` + `Option` + `K` all at once
+ - For Android refer to this article: [Remotely debugging Firefox <36 for Android](https://developer.mozilla.org/en-US/docs/Tools/Remote_Debugging/Firefox_for_Android)
+2. Find `Filter Output` box in the newly appeared window.
+3. Type `Return`.
+4. If you see any errors in red [please contact us][4] and report them in our [discord server][3]
+
+<br>
+
+### Check for conflicting extensions
+
+Some privacy and/or security-focused extensions such as ad- or script-blockers, as well as YouTube customization plugins might prevent the extension from working correctly.
+Try to disable all other extensions and test whether the extension works.
+If it does, find the extension(s) preventing RYD from working correctly and re-configure them in a way that'd stop them from interfering.
+
+<br>
+
+### Known conflicts
+
+> ### scriptSafe
+>
+> **Solution:** Trust `returnyoutubedislikeapi.com` manually
+>
+> ![trust returnyoutubedislikeapi.com manually](https://cdn.discordapp.com/attachments/821116437720334397/929814357708247060/unknown.png)
+
+<br>
+
+> ### uMatrix
+>
+> **Solution:** Allow XHR for `returnyoutubedislikeapi.com` manually
+>
+> ![Allow XHR for `returnyoutubedislikeapi.com` manually](https://media.discordapp.net/attachments/821116437720334397/929813724238336141/unknown.png)
+
+<br>
+
+<br>
+
+## iOS app
+
+Coming soon. Please have patience.
+
+<br>
+
+<br>
+
+## YouTube Vanced app
+
+Coming soon. Please have patience.
+
+<br>
+
+<br>
+
+## Contact in Discord Server
+
+**Only if nothing mentioned above helped and you still have a problem.**
+
+[Discord server link: https://discord.gg/mYnESY4Md5][3]
+
+0. Join the discord server if you haven't already
+1. Go to the #Bugs-and-problems channel
+2. There, thoroughly describe:
+ - your problem
+ - what you have tried and what didn't work
+ - results of the troubleshooting steps
+
+<!-- {
+ "update_frequency" : "low"
+} -->
+
+<br>
+
+<br>
+
+## Useful Links
+
+[List of Chromium Based Browsers][1]
+
+[List of Firefox Based Browsers][2]
+
+[Return-YouTube-Dislike Discord Server][3]
+
+<!-- links -->
+
+[1]: https://en.wikipedia.org/wiki/Chromium_(web_browser)#Browsers_based_on_Chromium
+[2]: https://en.wikipedia.org/wiki/Category:Web_browsers_based_on_Firefox
+[3]: https://discord.gg/mYnESY4Md5
+[4]: #contact-in-discord-server
diff --git a/Docs/SECURITY-FAQ.md b/Docs/SECURITY-FAQ.md
index d7f11a9..dfbbbca 100644
--- a/Docs/SECURITY-FAQ.md
+++ b/Docs/SECURITY-FAQ.md
@@ -12,7 +12,7 @@ Yes. When you dislike a video, we create a randomly generated unique ID for you
### What information do you have, exactly?
-Just the video ID. Not your comments, not your username, not who you've shared the video with, not any additional metadata. Nothing. Just the video ID.
+Just the video ID. Not your comments, not your username, not who you've shared the video with, not any additional metadata. Nothing. Just the video ID.
### How is my IP stored?
@@ -20,13 +20,12 @@ The backend keeps unhashed IP addresses in volatile memory (RAM) only. These add
### I heard some discussion over OAuth, and access to my YouTube account!
-This feature will be optional, and very much opt-in. If you are a YouTube creator, and would like to share your dislike stats with us, you can. The way [OAuth](https://en.wikipedia.org/wiki/OAuth#:~:text=but%20without%20giving%20them%20the%20passwords.) was structured, it's actually very secure. You can revoke access to your account at any time, and can give very specific permissions to us. We will not ask for any permissions that aren't required. We'll only ask for permissions to view your video stats.
+This feature will be optional, and very much opt-in. If you are a YouTube creator, and would like to share your dislike stats with us, you can. The way [OAuth](https://en.wikipedia.org/wiki/OAuth#:~:text=but%20without%20giving%20them%20the%20passwords.) was structured, it's actually very secure. You can revoke access to your account at any time, and can give very specific permissions to us. We will not ask for any permissions that aren't required. We'll only ask for permissions to view your video stats.
### How can I trust this dislike count?
We have implemented measures to prevent bot attacks and are gonna continue to work on improving the effectiveness of the bot prevention system: this will help us keep the dislike count as a good representative of the actual count. Of course it will never be 100% accurate so it's up to you to decide whether you trust the count or not.
-### Why don't you share the backend code?
+### Why don't you share the backend code?
We will share it at some point - but there's really no real reason to share it right now. It gives a false sense of security - because in a zero-trust system, we could just as well disclose one version but deploy another. There are plenty of reasons to keep the code hidden, specifically, how we battle spam. Hiding/Obfuscating the spam handling code is a fairly standard practice.
-
diff --git a/Docs/SECURITY-FAQfr.md b/Docs/SECURITY-FAQfr.md
index 633e4c7..877a95a 100644
--- a/Docs/SECURITY-FAQfr.md
+++ b/Docs/SECURITY-FAQfr.md
@@ -1,31 +1,31 @@
-Lisez ceci dans d'autres langues : [English](SECURITY-FAQ.md)
-
-# Sécurité
-
-### Est-ce que vous traquer l'historique des vidéos que je visionne ?
-
-Non. Le code de l'extension est public et vous pouvez le voir par vous-même. La seule information envoyée est l'ID de la vidéo, qui est nécessaire pour récupérer le nombre de dislikes des vidéos. Aucun en-tête (headers) supplémentaire n'est envoyé. Sur la [couche de communication](https://fr.wikipedia.org/wiki/Mod%C3%A8le_OSI#Caract%C3%A9risation_r%C3%A9sum%C3%A9e_des_couches), votre adresse IP publique sera exposée au serveur, ainsi que l'heure à laquelle la demande a été faite. Toutefois, aucun de ces éléments ne permet de vous identifier de manière unique. Dans un environnement où vous ne pouvez avoir confiance en personne (zero-trust environment), le mieux que l'on puisse obtenir est une IP dynamique. Qui, aujourd'hui est la vôtre, demain est celle de votre voisin. Si vous êtes vraiment inquiet que votre IP soit tracée, vous utilisez probablement déjà un VPN.
-
-### Pouvez-vous m'identifier de manière unique si je dislike ?
-
-Oui. Lorsque vous dislikez une vidéo, nous créons pour vous un identifiant unique généré de manière aléatoire et non lié à votre compte Google. Cette mesure vise à empêcher les robots. Mais il n'y a aucun moyen de lier cet identifiant aléatoire à vous ou à votre compte YouTube personnel.
-
-### Quelles sont les informations dont vous disposez, exactement ?
-
-Juste l'ID de la vidéo. Pas vos commentaires, pas votre nom d'utilisateur, pas les personnes avec qui vous avez partagé la vidéo, pas de métadonnées supplémentaires. Rien. Juste l'ID de la vidéo.
-
-### Comment mon IP est-elle stockée ?
-
-Le backend conserve les adresses IP non hachées uniquement dans la mémoire volatile (RAM). Ces adresses ne sont pas stockées sur un disque dur et ne sont donc pas enregistrées. Nous hachons les adresses IP et stockons ça à la place. Ceci est fait pour empêcher le vandalisme de la base de données.
-
-### J'ai entendu des discussions sur OAuth, et l'accès à mon compte YouTube !
-
-Cette fonctionnalité sera facultative et fera l'objet d'une demande d'adhésion. Si vous êtes un créateur YouTube et que vous souhaitez partager vos statistiques de dislikes avec nous, vous pouvez le faire. La façon dont [OAuth](https://fr.wikipedia.org/wiki/OAuth) a été structuré, c'est en fait très sûr. Vous pouvez révoquer l'accès à votre compte à tout moment et nous donner des autorisations très spécifiques. Nous ne demanderons pas d'autorisations qui ne sont pas nécessaires. Nous ne vous demanderons que l'autorisation de consulter les statistiques de vos vidéos.
-
-### Comment puis-je faire confiance à ce compte de dislikes ?
-
-Nous avons mis en place des mesures pour prévenir les attaques de robots et nous allons continuer à travailler pour améliorer l'efficacité du système de prévention des robots : cela nous aidera à faire en sorte que le nombre de dislikes soit une bonne représentation du nombre réel. Bien entendu, il ne sera jamais précis à 100 %, c'est donc à vous de décider si vous lui faites confiance ou non.
-
-### Pourquoi ne pas partager le code du backend ?
-
-Nous la partagerons à un moment donné - mais il n'y a pas vraiment de raison de la partager pour le moment. Cela donne un faux sentiment de sécurité, car dans un système zero-trust, nous pourrions tout aussi bien publier une version et en déployer une autre. Il y a de nombreuses raisons de garder le code caché, notamment pour lutter contre le spam. Cacher/dissimuler le code de traitement du spam est une pratique assez standard. \ No newline at end of file
+Lisez ceci dans d'autres langues : [English](SECURITY-FAQ.md)
+
+# Sécurité
+
+### Est-ce que vous traquer l'historique des vidéos que je visionne ?
+
+Non. Le code de l'extension est public et vous pouvez le voir par vous-même. La seule information envoyée est l'ID de la vidéo, qui est nécessaire pour récupérer le nombre de dislikes des vidéos. Aucun en-tête (headers) supplémentaire n'est envoyé. Sur la [couche de communication](https://fr.wikipedia.org/wiki/Mod%C3%A8le_OSI#Caract%C3%A9risation_r%C3%A9sum%C3%A9e_des_couches), votre adresse IP publique sera exposée au serveur, ainsi que l'heure à laquelle la demande a été faite. Toutefois, aucun de ces éléments ne permet de vous identifier de manière unique. Dans un environnement où vous ne pouvez avoir confiance en personne (zero-trust environment), le mieux que l'on puisse obtenir est une IP dynamique. Qui, aujourd'hui est la vôtre, demain est celle de votre voisin. Si vous êtes vraiment inquiet que votre IP soit tracée, vous utilisez probablement déjà un VPN.
+
+### Pouvez-vous m'identifier de manière unique si je dislike ?
+
+Oui. Lorsque vous dislikez une vidéo, nous créons pour vous un identifiant unique généré de manière aléatoire et non lié à votre compte Google. Cette mesure vise à empêcher les robots. Mais il n'y a aucun moyen de lier cet identifiant aléatoire à vous ou à votre compte YouTube personnel.
+
+### Quelles sont les informations dont vous disposez, exactement ?
+
+Juste l'ID de la vidéo. Pas vos commentaires, pas votre nom d'utilisateur, pas les personnes avec qui vous avez partagé la vidéo, pas de métadonnées supplémentaires. Rien. Juste l'ID de la vidéo.
+
+### Comment mon IP est-elle stockée ?
+
+Le backend conserve les adresses IP non hachées uniquement dans la mémoire volatile (RAM). Ces adresses ne sont pas stockées sur un disque dur et ne sont donc pas enregistrées. Nous hachons les adresses IP et stockons ça à la place. Ceci est fait pour empêcher le vandalisme de la base de données.
+
+### J'ai entendu des discussions sur OAuth, et l'accès à mon compte YouTube !
+
+Cette fonctionnalité sera facultative et fera l'objet d'une demande d'adhésion. Si vous êtes un créateur YouTube et que vous souhaitez partager vos statistiques de dislikes avec nous, vous pouvez le faire. La façon dont [OAuth](https://fr.wikipedia.org/wiki/OAuth) a été structuré, c'est en fait très sûr. Vous pouvez révoquer l'accès à votre compte à tout moment et nous donner des autorisations très spécifiques. Nous ne demanderons pas d'autorisations qui ne sont pas nécessaires. Nous ne vous demanderons que l'autorisation de consulter les statistiques de vos vidéos.
+
+### Comment puis-je faire confiance à ce compte de dislikes ?
+
+Nous avons mis en place des mesures pour prévenir les attaques de robots et nous allons continuer à travailler pour améliorer l'efficacité du système de prévention des robots : cela nous aidera à faire en sorte que le nombre de dislikes soit une bonne représentation du nombre réel. Bien entendu, il ne sera jamais précis à 100 %, c'est donc à vous de décider si vous lui faites confiance ou non.
+
+### Pourquoi ne pas partager le code du backend ?
+
+Nous la partagerons à un moment donné - mais il n'y a pas vraiment de raison de la partager pour le moment. Cela donne un faux sentiment de sécurité, car dans un système zero-trust, nous pourrions tout aussi bien publier une version et en déployer une autre. Il y a de nombreuses raisons de garder le code caché, notamment pour lutter contre le spam. Cacher/dissimuler le code de traitement du spam est une pratique assez standard.
diff --git a/Docs/SECURITY-FAQru.md b/Docs/SECURITY-FAQru.md
index f69257e..3452699 100644
--- a/Docs/SECURITY-FAQru.md
+++ b/Docs/SECURITY-FAQru.md
@@ -1,31 +1,31 @@
-Прочитать на других языках: [English](SECURITY-FAQ.md)
-
-# Безопасность
-
-### Вы отслеживаете мою историю просмотров?
-
-Нет. Код расширения находится в открытом доступе, и вы можете ознакомиться с ним самостоятельно. Единственная передаваемая информация - это идентификатор видео, который необходим для получения данных о количестве просмотров видео. Никаких дополнительных заголовков не передаётся. На коммуникационном уровне серверу будет передан ваш публичный IP-адрес, а также время, когда был сделан запрос. Однако ничто из этого не идентифицирует вас каким-либо образом. Предполагая среду с нулевым доверием, лучшее, что мы можем получить, это динамический IP. Который сегодня ваш, а завтра - вашего соседа. Если вы действительно беспокоитесь о том, что ваш IP может быть отслежен, вы, вероятно, уже используете какой-нибудь VPN.
-
-### Можете ли вы однозначно идентифицировать меня, если я оставил отметку «Не нравится»?
-
-Да. Когда вы оставляете видео отметку «Не нравится», мы создаём для вас случайно созданный уникальный идентификатор, который не привязан к вашему аккаунту Google. Это делается для избежания ботов. Но нет никакого способа привязать этот случайный идентификатор к вам или вашему личному аккаунту YouTube.
-
-### Какой именно информацией вы располагаете?
-
-Только идентификатор видео. Ни ваших комментариев, ни вашего имени пользователя, ни того, с кем вы поделились видео, ни каких-либо дополнительных метаданных. Ничего. Только идентификатор видео.
-
-### Как хранится мой IP-адрес?
-
-Внутренняя часть нашего сервера хранит нехешированные IP-адреса только в энергозависимой памяти (ОЗУ). Эти адреса не хранятся на жёстком диске и поэтому не регистрируются. Мы хэшируем IP-адреса, и оно хранится вместо них. Это сделано для предотвращения вандализма в базе данных.
-
-### Я слышал обсуждение OAuth и доступа к моему аккаунту на YouTube!
-
-Эта функция будет необязательной и очень нужной. Если вы являетесь создателем YouTube и хотите поделиться с нами статистикой отметок «Не нравится», вы можете это сделать. По своей структуре [OAuth](https://ru.wikipedia.org/wiki/OAuth#:~:text=%D0%B1%D0%B5%D0%B7%20%D0%BF%D0%B5%D1%80%D0%B5%D0%B4%D0%B0%D1%87%D0%B8%20%D0%B5%D0%B9%20(%D1%82%D1%80%D0%B5%D1%82%D1%8C%D0%B5%D0%B9%20%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D0%B5)%20%D0%BB%D0%BE%D0%B3%D0%B8%D0%BD%D0%B0%20%D0%B8%20%D0%BF%D0%B0%D1%80%D0%BE%D0%BB%D1%8F) очень безопасен. Вы можете отозвать доступ к своему аккаунту в любое время, и можете дать нам ограниченные разрешения. Мы не будем запрашивать никаких разрешений, которые не требуются. Мы будем запрашивать разрешения только для просмотра статистики ваших видео.
-
-### Как я могу доверять этому счётчику отметок «Не нравится»?
-
-Мы приняли меры по предотвращению атак ботов и собираемся продолжать работать над повышением эффективности системы предотвращения ботов: это поможет нам сохранить подсчёт отметок «Не нравится» как хороший представитель фактического количества. Конечно, он никогда не будет точным на 100%, поэтому вы сами решаете, доверять ему или нет.
-
-### Почему бы вам не поделиться кодом внутренней части своего сервера?
-
-Мы поделимся им в какой-то момент - но сейчас нет никаких реальных причин делиться ею. Это даёт ложное чувство безопасности - ведь в системе с нулевым доверием мы можем с таким же успехом раскрыть одну версию, но развернуть другую. Есть много причин держать код в тайне, в частности, как мы боремся со спамом. Скрытие и запутывание кода обработки спама - это довольно стандартная практика.
+Прочитать на других языках: [English](SECURITY-FAQ.md)
+
+# Безопасность
+
+### Вы отслеживаете мою историю просмотров?
+
+Нет. Код расширения находится в открытом доступе, и вы можете ознакомиться с ним самостоятельно. Единственная передаваемая информация - это идентификатор видео, который необходим для получения данных о количестве просмотров видео. Никаких дополнительных заголовков не передаётся. На коммуникационном уровне серверу будет передан ваш публичный IP-адрес, а также время, когда был сделан запрос. Однако ничто из этого не идентифицирует вас каким-либо образом. Предполагая среду с нулевым доверием, лучшее, что мы можем получить, это динамический IP. Который сегодня ваш, а завтра - вашего соседа. Если вы действительно беспокоитесь о том, что ваш IP может быть отслежен, вы, вероятно, уже используете какой-нибудь VPN.
+
+### Можете ли вы однозначно идентифицировать меня, если я оставил отметку «Не нравится»?
+
+Да. Когда вы оставляете видео отметку «Не нравится», мы создаём для вас случайно созданный уникальный идентификатор, который не привязан к вашему аккаунту Google. Это делается для избежания ботов. Но нет никакого способа привязать этот случайный идентификатор к вам или вашему личному аккаунту YouTube.
+
+### Какой именно информацией вы располагаете?
+
+Только идентификатор видео. Ни ваших комментариев, ни вашего имени пользователя, ни того, с кем вы поделились видео, ни каких-либо дополнительных метаданных. Ничего. Только идентификатор видео.
+
+### Как хранится мой IP-адрес?
+
+Внутренняя часть нашего сервера хранит нехешированные IP-адреса только в энергозависимой памяти (ОЗУ). Эти адреса не хранятся на жёстком диске и поэтому не регистрируются. Мы хэшируем IP-адреса, и оно хранится вместо них. Это сделано для предотвращения вандализма в базе данных.
+
+### Я слышал обсуждение OAuth и доступа к моему аккаунту на YouTube!
+
+Эта функция будет необязательной и очень нужной. Если вы являетесь создателем YouTube и хотите поделиться с нами статистикой отметок «Не нравится», вы можете это сделать. По своей структуре [OAuth](<https://ru.wikipedia.org/wiki/OAuth#:~:text=%D0%B1%D0%B5%D0%B7%20%D0%BF%D0%B5%D1%80%D0%B5%D0%B4%D0%B0%D1%87%D0%B8%20%D0%B5%D0%B9%20(%D1%82%D1%80%D0%B5%D1%82%D1%8C%D0%B5%D0%B9%20%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D0%B5)%20%D0%BB%D0%BE%D0%B3%D0%B8%D0%BD%D0%B0%20%D0%B8%20%D0%BF%D0%B0%D1%80%D0%BE%D0%BB%D1%8F>) очень безопасен. Вы можете отозвать доступ к своему аккаунту в любое время, и можете дать нам ограниченные разрешения. Мы не будем запрашивать никаких разрешений, которые не требуются. Мы будем запрашивать разрешения только для просмотра статистики ваших видео.
+
+### Как я могу доверять этому счётчику отметок «Не нравится»?
+
+Мы приняли меры по предотвращению атак ботов и собираемся продолжать работать над повышением эффективности системы предотвращения ботов: это поможет нам сохранить подсчёт отметок «Не нравится» как хороший представитель фактического количества. Конечно, он никогда не будет точным на 100%, поэтому вы сами решаете, доверять ему или нет.
+
+### Почему бы вам не поделиться кодом внутренней части своего сервера?
+
+Мы поделимся им в какой-то момент - но сейчас нет никаких реальных причин делиться ею. Это даёт ложное чувство безопасности - ведь в системе с нулевым доверием мы можем с таким же успехом раскрыть одну версию, но развернуть другую. Есть много причин держать код в тайне, в частности, как мы боремся со спамом. Скрытие и запутывание кода обработки спама - это довольно стандартная практика.
diff --git a/Docs/readme.md b/Docs/readme.md
index 5a802b2..b6949e0 100644
--- a/Docs/readme.md
+++ b/Docs/readme.md
@@ -1,40 +1,39 @@
-Read this in other languages: [Français](readmefr.md)
-
-**Contents**
-
-- [Guides](#guides)
-- [FAQs](#faqs)
-<!-- - [FAQs](#faqs)
-- [Other Lists](#other-lists) -->
-
-<br>
-
-## Guides
-
-- [Downloading, Installing & Using](https://github.com/Anarios/return-youtube-dislike/wiki/Downloading,-Installing-&-Using)
-- [Troubleshooting](https://github.com/Anarios/return-youtube-dislike/wiki/Troubleshooting-Guide)
-<!-- - [FAQ](FAQ.md)
-- [When & How to Report Bugs](Guide__Bug_Reporting.md)
-- [Contributing](https://github.com/Anarios/return-youtube-dislike/blob/main/CONTRIBUTING.md) -->
-<!-- - [How to update wiki](/) -->
-
-<br>
-
-
-## FAQs
-
-- [General](https://github.com/Anarios/return-youtube-dislike/blob/main/Guides/FAQ.md)
-- [Security](https://github.com/Anarios/return-youtube-dislike/blob/main/Guides/SECURITY-FAQ.md)
-
-<!-- - [Privacy](FAQ_Privacy.md)
-- [Technical](FAQ_Technical.md)
-- [Creators](FAQ_Creators.md)
-
-<br>
-
-## Other Lists
-
-- [Common Problems](Common_Problems.md)
-- [Repeated Questions](Repeated_Questions.md)
-- [Repeated Feature requests](Repeated_Feature_requests.md)
-- [Repeated Issues](Repeated_Issues.md) -->
+Read this in other languages: [Français](readmefr.md)
+
+**Contents**
+
+- [Guides](#guides)
+- [FAQs](#faqs)
+<!-- - [FAQs](#faqs)
+- [Other Lists](#other-lists) -->
+
+<br>
+
+## Guides
+
+- [Downloading, Installing & Using](https://github.com/Anarios/return-youtube-dislike/wiki/Downloading,-Installing-&-Using)
+- [Troubleshooting](https://github.com/Anarios/return-youtube-dislike/wiki/Troubleshooting-Guide)
+<!-- - [FAQ](FAQ.md)
+- [When & How to Report Bugs](Guide__Bug_Reporting.md)
+- [Contributing](https://github.com/Anarios/return-youtube-dislike/blob/main/CONTRIBUTING.md) -->
+<!-- - [How to update wiki](/) -->
+
+<br>
+
+## FAQs
+
+- [General](https://github.com/Anarios/return-youtube-dislike/blob/main/Guides/FAQ.md)
+- [Security](https://github.com/Anarios/return-youtube-dislike/blob/main/Guides/SECURITY-FAQ.md)
+
+<!-- - [Privacy](FAQ_Privacy.md)
+- [Technical](FAQ_Technical.md)
+- [Creators](FAQ_Creators.md)
+
+<br>
+
+## Other Lists
+
+- [Common Problems](Common_Problems.md)
+- [Repeated Questions](Repeated_Questions.md)
+- [Repeated Feature requests](Repeated_Feature_requests.md)
+- [Repeated Issues](Repeated_Issues.md) -->
diff --git a/Docs/readmefr.md b/Docs/readmefr.md
index 3d5dd5d..de9280e 100644
--- a/Docs/readmefr.md
+++ b/Docs/readmefr.md
@@ -19,7 +19,6 @@ Lisez ceci dans d'autres langues : [English](readme.md)
<br>
-
## FAQ
- [Général](FAQfr.md)
@@ -36,4 +35,4 @@ Lisez ceci dans d'autres langues : [English](readme.md)
- [Problèmes courants](Common_Problemsfr.md)
- [Questions répétitives](Repeated_Questionsfr.md)
- [Demandes répétitives de fonctionnalités](Repeated_Feature_requestsfr.md)
-- [Questions répétitives](Repeated_Issuesfr.md) --> \ No newline at end of file
+- [Questions répétitives](Repeated_Issuesfr.md) -->
diff --git a/Extensions/UserScript/Return Youtube Dislike.user.js b/Extensions/UserScript/Return Youtube Dislike.user.js
index 453c56e..253344c 100644
--- a/Extensions/UserScript/Return Youtube Dislike.user.js
+++ b/Extensions/UserScript/Return Youtube Dislike.user.js
@@ -24,8 +24,8 @@
// ==/UserScript==
const extConfig = {
-// BEGIN USER OPTIONS
-// You may change the following variables to allowed values listed in the corresponding brackets (* means default). Keep the style and keywords intact.
+ // BEGIN USER OPTIONS
+ // You may change the following variables to allowed values listed in the corresponding brackets (* means default). Keep the style and keywords intact.
showUpdatePopup: false, // [true, false*] Show a popup tab after extension update (See what's new)
disableVoteSubmission: false, // [true, false*] Disable like/dislike submission (Stops counting your likes and dislikes)
coloredThumbs: false, // [true, false*] Colorize thumbs (Use custom colors for thumb icons)
@@ -35,7 +35,7 @@ const extConfig = {
numberDisplayRoundDown: true, // [true*, false] Round down numbers (Show rounded down numbers)
tooltipPercentageMode: "none", // [none*, dash_like, dash_dislike, both, only_like, only_dislike] Mode of showing percentage in like/dislike bar tooltip.
numberDisplayReformatLikes: false, // [true, false*] Re-format like numbers (Make likes and dislikes format consistent)
-// END USER OPTIONS
+ // END USER OPTIONS
};
const LIKED_STATE = "LIKED_STATE";
@@ -101,29 +101,37 @@ function getDislikeButton() {
let mutationObserver = new Object();
if (isShorts() && mutationObserver.exists !== true) {
- cLog('initializing mutation observer')
+ cLog("initializing mutation observer");
mutationObserver.options = {
childList: false,
attributes: true,
- subtree: false
+ subtree: false,
};
mutationObserver.exists = true;
- mutationObserver.observer = new MutationObserver( function(mutationList, observer) {
- mutationList.forEach( (mutation) => {
- if (mutation.type === 'attributes' &&
- mutation.target.nodeName === 'TP-YT-PAPER-BUTTON' &&
- mutation.target.id === 'button') {
- cLog('Short thumb button status changed');
- if (mutation.target.getAttribute('aria-pressed') === 'true') {
+ mutationObserver.observer = new MutationObserver(function (
+ mutationList,
+ observer
+ ) {
+ mutationList.forEach((mutation) => {
+ if (
+ mutation.type === "attributes" &&
+ mutation.target.nodeName === "TP-YT-PAPER-BUTTON" &&
+ mutation.target.id === "button"
+ ) {
+ cLog("Short thumb button status changed");
+ if (mutation.target.getAttribute("aria-pressed") === "true") {
mutation.target.style.color =
- (mutation.target.parentElement.parentElement.id === 'like-button') ?
- getColorFromTheme(true) : getColorFromTheme(false);
+ mutation.target.parentElement.parentElement.id === "like-button"
+ ? getColorFromTheme(true)
+ : getColorFromTheme(false);
} else {
- mutation.target.style.color = 'unset';
+ mutation.target.style.color = "unset";
}
return;
}
- cLog('unexpected mutation observer event: ' + mutation.target + mutation.type);
+ cLog(
+ "unexpected mutation observer event: " + mutation.target + mutation.type
+ );
});
});
}
@@ -270,25 +278,24 @@ function createRateBar(likes, dislikes) {
var tooltipInnerHTML;
switch (extConfig.tooltipPercentageMode) {
case "dash_like":
- tooltipInnerHTML = `${likes.toLocaleString()}&nbsp;/&nbsp;${dislikes.toLocaleString()}&nbsp;&nbsp;-&nbsp;&nbsp;${likePercentage}%`
- break;
+ tooltipInnerHTML = `${likes.toLocaleString()}&nbsp;/&nbsp;${dislikes.toLocaleString()}&nbsp;&nbsp;-&nbsp;&nbsp;${likePercentage}%`;
+ break;
case "dash_dislike":
- tooltipInnerHTML = `${likes.toLocaleString()}&nbsp;/&nbsp;${dislikes.toLocaleString()}&nbsp;&nbsp;-&nbsp;&nbsp;${dislikePercentage}%`
- break;
+ tooltipInnerHTML = `${likes.toLocaleString()}&nbsp;/&nbsp;${dislikes.toLocaleString()}&nbsp;&nbsp;-&nbsp;&nbsp;${dislikePercentage}%`;
+ break;
case "both":
- tooltipInnerHTML = `${likePercentage}%&nbsp;/&nbsp;${dislikePercentage}%`
+ tooltipInnerHTML = `${likePercentage}%&nbsp;/&nbsp;${dislikePercentage}%`;
break;
case "only_like":
- tooltipInnerHTML = `${likePercentage}%`
+ tooltipInnerHTML = `${likePercentage}%`;
break;
case "only_dislike":
- tooltipInnerHTML = `${dislikePercentage}%`
+ tooltipInnerHTML = `${dislikePercentage}%`;
break;
default:
- tooltipInnerHTML = `${likes.toLocaleString()}&nbsp;/&nbsp;${dislikes.toLocaleString()}`
+ tooltipInnerHTML = `${likes.toLocaleString()}&nbsp;/&nbsp;${dislikes.toLocaleString()}`;
}
-
if (!rateBar && !isMobile) {
let colorLikeStyle = "";
let colorDislikeStyle = "";
@@ -325,15 +332,16 @@ function createRateBar(likes, dislikes) {
document.getElementById("return-youtube-dislike-bar").style.width =
widthPercent + "%";
- document.querySelector(
- "#ryd-dislike-tooltip > #tooltip"
- ).innerHTML = tooltipInnerHTML;
+ document.querySelector("#ryd-dislike-tooltip > #tooltip").innerHTML =
+ tooltipInnerHTML;
if (extConfig.coloredBar) {
- document.getElementById("return-youtube-dislike-bar-container").style.backgroundColor =
- getColorFromTheme(false);
- document.getElementById("return-youtube-dislike-bar").style.backgroundColor =
- getColorFromTheme(true);
+ document.getElementById(
+ "return-youtube-dislike-bar-container"
+ ).style.backgroundColor = getColorFromTheme(false);
+ document.getElementById(
+ "return-youtube-dislike-bar"
+ ).style.backgroundColor = getColorFromTheme(true);
}
}
}
@@ -360,17 +368,28 @@ function setState() {
}
createRateBar(likes, dislikes);
if (extConfig.coloredThumbs === true) {
- if (isShorts()) { // for shorts, leave deactived buttons in default color
- let shortLikeButton = getLikeButton().querySelector('tp-yt-paper-button#button');
- let shortDislikeButton = getDislikeButton().querySelector('tp-yt-paper-button#button');
- if (shortLikeButton.getAttribute('aria-pressed') === 'true') {
+ if (isShorts()) {
+ // for shorts, leave deactived buttons in default color
+ let shortLikeButton = getLikeButton().querySelector(
+ "tp-yt-paper-button#button"
+ );
+ let shortDislikeButton = getDislikeButton().querySelector(
+ "tp-yt-paper-button#button"
+ );
+ if (shortLikeButton.getAttribute("aria-pressed") === "true") {
shortLikeButton.style.color = getColorFromTheme(true);
}
- if (shortDislikeButton.getAttribute('aria-pressed') === 'true') {
+ if (shortDislikeButton.getAttribute("aria-pressed") === "true") {
shortDislikeButton.style.color = getColorFromTheme(false);
}
- mutationObserver.observer.observe(shortLikeButton, mutationObserver.options);
- mutationObserver.observer.observe(shortDislikeButton, mutationObserver.options);
+ mutationObserver.observer.observe(
+ shortLikeButton,
+ mutationObserver.options
+ );
+ mutationObserver.observer.observe(
+ shortDislikeButton,
+ mutationObserver.options
+ );
} else {
getLikeButton().style.color = getColorFromTheme(true);
getDislikeButton().style.color = getColorFromTheme(false);
@@ -498,8 +517,10 @@ function getNumberFormatter(optionSelect) {
?.getAttribute("href")
)?.searchParams?.get("locale");
} catch {
- cLog('Cannot find browser locale. Use en as default for number formatting.');
- userLocales = 'en';
+ cLog(
+ "Cannot find browser locale. Use en as default for number formatting."
+ );
+ userLocales = "en";
}
}
@@ -520,13 +541,10 @@ function getNumberFormatter(optionSelect) {
formatterCompactDisplay = "short";
}
- const formatter = Intl.NumberFormat(
- userLocales,
- {
- notation: formatterNotation,
- compactDisplay: formatterCompactDisplay,
- }
- );
+ const formatter = Intl.NumberFormat(userLocales, {
+ notation: formatterNotation,
+ compactDisplay: formatterCompactDisplay,
+ });
return formatter;
}
diff --git a/Extensions/combined/_locales/es/messages.json b/Extensions/combined/_locales/es/messages.json
index 121c0ee..3d1ffc4 100644
--- a/Extensions/combined/_locales/es/messages.json
+++ b/Extensions/combined/_locales/es/messages.json
@@ -96,7 +96,7 @@
"message": "Colores personalizados para la barra y los botones que no me gustan"
},
"customNumberFormats": {
- "message":"Formatos de números personalizados"
+ "message": "Formatos de números personalizados"
},
"considerDonating": {
"message": "Lo único que mantiene la extensión en funcionamiento son sus donaciones, considere apoyar el proyecto."
diff --git a/Extensions/combined/_locales/ja/messages.json b/Extensions/combined/_locales/ja/messages.json
index 9a84fae..6a587cc 100644
--- a/Extensions/combined/_locales/ja/messages.json
+++ b/Extensions/combined/_locales/ja/messages.json
@@ -59,34 +59,34 @@
"considerDonating": {
"message": "この拡張機能を存続させることができるのは,皆様からの寄付だけです。"
},
- "roundNumbers":{
- "message":"四捨五入された数値を表示"
+ "roundNumbers": {
+ "message": "四捨五入された数値を表示"
},
- "roundNumbersHover":{
+ "roundNumbersHover": {
"message": "カウント値を四捨五入します(これはYouTubeのデフォルトオプションです)。"
},
- "reformatLikes":{
- "message":"いいねの数をフォーマットする"
+ "reformatLikes": {
+ "message": "いいねの数をフォーマットする"
},
- "reformatLikesHover":{
- "message":"統計値の一貫性を高めます。"
+ "reformatLikesHover": {
+ "message": "統計値の一貫性を高めます。"
},
- "numberFormat":{
- "message":"数値形式"
+ "numberFormat": {
+ "message": "数値形式"
},
- "colorizeRatio":{
- "message":"嫌いなバーに色を付ける"
+ "colorizeRatio": {
+ "message": "嫌いなバーに色を付ける"
},
- "colorizeRatioHover":{
- "message":"嫌いなバーをカスタムカラーで色付けします。"
+ "colorizeRatioHover": {
+ "message": "嫌いなバーをカスタムカラーで色付けします。"
},
- "colorizeThumbs":{
- "message":"ボタンに色を付ける"
+ "colorizeThumbs": {
+ "message": "ボタンに色を付ける"
},
- "colorizeThumbsHover":{
- "message":"カスタムカラーのボタンの色が好きで嫌いです。"
+ "colorizeThumbsHover": {
+ "message": "カスタムカラーのボタンの色が好きで嫌いです。"
},
- "colorTheme":{
+ "colorTheme": {
"message": "配色:"
}
}
diff --git a/Extensions/combined/_locales/pt_BR/messages.json b/Extensions/combined/_locales/pt_BR/messages.json
index fa6c75a..fac12a2 100644
--- a/Extensions/combined/_locales/pt_BR/messages.json
+++ b/Extensions/combined/_locales/pt_BR/messages.json
@@ -59,4 +59,4 @@
"considerDonating": {
"message": "A única coisa que mantém a extensão funcionando são suas doações, considere apoiar o projeto."
}
-} \ No newline at end of file
+}
diff --git a/Extensions/combined/manifest-chrome.json b/Extensions/combined/manifest-chrome.json
index 82ea6ea..d881a75 100644
--- a/Extensions/combined/manifest-chrome.json
+++ b/Extensions/combined/manifest-chrome.json
@@ -12,9 +12,7 @@
"128": "icons/icon128.png"
},
"host_permissions": ["*://*.youtube.com/*"],
- "permissions": [
- "storage"
- ],
+ "permissions": ["storage"],
"action": {
"default_popup": "popup.html"
},
diff --git a/Extensions/combined/popup.css b/Extensions/combined/popup.css
index 2ff8516..a5cdb7b 100644
--- a/Extensions/combined/popup.css
+++ b/Extensions/combined/popup.css
@@ -69,8 +69,8 @@ button:hover {
border-radius: 0.25rem;
}
-
-.switch::before, .label-with-hover-tip::before {
+.switch::before,
+.label-with-hover-tip::before {
content: attr(data-hover);
visibility: hidden;
opacity: 0;
@@ -86,27 +86,27 @@ button:hover {
top: 160%;
}
-
-.switch:hover::before, .label-with-hover-tip:hover::before {
+.switch:hover::before,
+.label-with-hover-tip:hover::before {
visibility: visible;
opacity: 1;
}
.fade-in {
- opacity: 1;
- animation-name: fadeInOpacity;
- animation-iteration-count: 1;
- animation-timing-function: ease-in;
- animation-duration: 2s;
+ opacity: 1;
+ animation-name: fadeInOpacity;
+ animation-iteration-count: 1;
+ animation-timing-function: ease-in;
+ animation-duration: 2s;
}
@keyframes fadeInOpacity {
- 0% {
- opacity: 0;
- }
- 100% {
- opacity: 1;
- }
+ 0% {
+ opacity: 0;
+ }
+ 100% {
+ opacity: 1;
+ }
}
#advancedToggle {
diff --git a/Extensions/combined/popup.html b/Extensions/combined/popup.html
index 8318901..aa2e508 100644
--- a/Extensions/combined/popup.html
+++ b/Extensions/combined/popup.html
@@ -1,184 +1,223 @@
<!DOCTYPE html>
<html>
-<head>
- <meta content="text/html; charset=utf-8"/>
- <title title="__MSG_extensionName__">__MSG_extensionName__</title>
- <link rel="stylesheet" href="popup.css"/>
- <link rel="preconnect" href="https://fonts.googleapis.com"/>
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin/>
- <link
- href="https://fonts.googleapis.com/css2?family=Roboto:wght@100;300;400;500;700;900&display=swap"
- rel="stylesheet"
- />
-</head>
-<body>
- <center>
- <svg width="48" viewBox="0 0 24 24">
- <path
- d="M14.9 3H6c-.9 0-1.6.5-1.9 1.2l-3 7c-.1.3-.1.5-.1.7v2c0 1.1.9 2 2 2h6.3l-.9 4.5c-.1.5 0 1 .4 1.4l1.1 1.1 6.5-6.6c.4-.4.6-.9.6-1.4V5c-.1-1.1-1-2-2.1-2zm7.4 12.8h-2.9c-.4 0-.7-.3-.7-.7V3.9c0-.4.3-.7.7-.7h2.9c.4 0 .7.3.7.7V15c0 .4-.3.8-.7.8z"
- fill="red"
- />
- <path d="m8 12.5 5.1-2.9L8 6.7v5.8z" fill="#fff"/>
- </svg>
- <h1 style="margin-bottom: 0.75rem" title="__MSG_extensionName__">
- __MSG_extensionName__
- </h1>
- <p style="color: var(--lightGrey)" title="__MSG_textDeveloper__">
- __MSG_textDeveloper__
- </p>
-
- <button id="link_website" title="__MSG_linkWebsite__">
- __MSG_linkWebsite__
- </button>
- <button style="margin-top: 0.3em; background: #ff0000" id="link_donate" title="__MSG_linkDonate__">
- __MSG_linkDonate__
- </button>
- <button id="link_discord">Discord</button>
- <br/>
- <button style="margin-top: 0.3rem" id="link_faq" title="__MSG_linkFAQ__">
- __MSG_linkFAQ__
- </button>
- <button id="link_github">GitHub</button>
- <button style="margin-top: 0.3em" id="link_help" title="__MSG_linkHelp__">
- __MSG_linkHelp__
- </button>
- <br>
- <button style="margin-top: 0.3em" id="link_changelog" title="__MSG_linkChangelog__">
- __MSG_linkChangelog__
- </button>
-
- <br/>
- <br/>
- <p style="display: none">API Status: <b id="status"></b></p>
- <img
- id="server-status"
- style="display: none; width: 0.75rem; height: 0.75rem"
- src="./icons/server.svg"
- alt=""
+ <head>
+ <meta content="text/html; charset=utf-8" />
+ <title title="__MSG_extensionName__">__MSG_extensionName__</title>
+ <link rel="stylesheet" href="popup.css" />
+ <link rel="preconnect" href="https://fonts.googleapis.com" />
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
+ <link
+ href="https://fonts.googleapis.com/css2?family=Roboto:wght@100;300;400;500;700;900&display=swap"
+ rel="stylesheet"
/>
-
- <br/>
- <br/>
- </center>
+ </head>
+ <body>
+ <center>
+ <svg width="48" viewBox="0 0 24 24">
+ <path
+ d="M14.9 3H6c-.9 0-1.6.5-1.9 1.2l-3 7c-.1.3-.1.5-.1.7v2c0 1.1.9 2 2 2h6.3l-.9 4.5c-.1.5 0 1 .4 1.4l1.1 1.1 6.5-6.6c.4-.4.6-.9.6-1.4V5c-.1-1.1-1-2-2.1-2zm7.4 12.8h-2.9c-.4 0-.7-.3-.7-.7V3.9c0-.4.3-.7.7-.7h2.9c.4 0 .7.3.7.7V15c0 .4-.3.8-.7.8z"
+ fill="red"
+ />
+ <path d="m8 12.5 5.1-2.9L8 6.7v5.8z" fill="#fff" />
+ </svg>
+ <h1 style="margin-bottom: 0.75rem" title="__MSG_extensionName__">
+ __MSG_extensionName__
+ </h1>
+ <p style="color: var(--lightGrey)" title="__MSG_textDeveloper__">
+ __MSG_textDeveloper__
+ </p>
-<!-- top-right -->
-<button id="advancedToggle">
- <svg
- xmlns="http://www.w3.org/2000/svg"
- enable-background="new 0 0 24 24"
- height="24px"
- viewBox="0 0 24 24"
- width="24px"
- fill="currentColor"
- >
- <rect fill="none" height="24" width="24"/>
- <path
- d="M19.5,12c0-0.23-0.01-0.45-0.03-0.68l1.86-1.41c0.4-0.3,0.51-0.86,0.26-1.3l-1.87-3.23c-0.25-0.44-0.79-0.62-1.25-0.42 l-2.15,0.91c-0.37-0.26-0.76-0.49-1.17-0.68l-0.29-2.31C14.8,2.38,14.37,2,13.87,2h-3.73C9.63,2,9.2,2.38,9.14,2.88L8.85,5.19 c-0.41,0.19-0.8,0.42-1.17,0.68L5.53,4.96c-0.46-0.2-1-0.02-1.25,0.42L2.41,8.62c-0.25,0.44-0.14,0.99,0.26,1.3l1.86,1.41 C4.51,11.55,4.5,11.77,4.5,12s0.01,0.45,0.03,0.68l-1.86,1.41c-0.4,0.3-0.51,0.86-0.26,1.3l1.87,3.23c0.25,0.44,0.79,0.62,1.25,0.42 l2.15-0.91c0.37,0.26,0.76,0.49,1.17,0.68l0.29,2.31C9.2,21.62,9.63,22,10.13,22h3.73c0.5,0,0.93-0.38,0.99-0.88l0.29-2.31 c0.41-0.19,0.8-0.42,1.17-0.68l2.15,0.91c0.46,0.2,1,0.02,1.25-0.42l1.87-3.23c0.25-0.44,0.14-0.99-0.26-1.3l-1.86-1.41 C19.49,12.45,19.5,12.23,19.5,12z M12.04,15.5c-1.93,0-3.5-1.57-3.5-3.5s1.57-3.5,3.5-3.5s3.5,1.57,3.5,3.5S13.97,15.5,12.04,15.5z"
- />
- </svg>
-</button>
+ <button id="link_website" title="__MSG_linkWebsite__">
+ __MSG_linkWebsite__
+ </button>
+ <button
+ style="margin-top: 0.3em; background: #ff0000"
+ id="link_donate"
+ title="__MSG_linkDonate__"
+ >
+ __MSG_linkDonate__
+ </button>
+ <button id="link_discord">Discord</button>
+ <br />
+ <button style="margin-top: 0.3rem" id="link_faq" title="__MSG_linkFAQ__">
+ __MSG_linkFAQ__
+ </button>
+ <button id="link_github">GitHub</button>
+ <button style="margin-top: 0.3em" id="link_help" title="__MSG_linkHelp__">
+ __MSG_linkHelp__
+ </button>
+ <br />
+ <button
+ style="margin-top: 0.3em"
+ id="link_changelog"
+ title="__MSG_linkChangelog__"
+ >
+ __MSG_linkChangelog__
+ </button>
+
+ <br />
+ <br />
+ <p style="display: none">API Status: <b id="status"></b></p>
+ <img
+ id="server-status"
+ style="display: none; width: 0.75rem; height: 0.75rem"
+ src="./icons/server.svg"
+ alt=""
+ />
+
+ <br />
+ <br />
+ </center>
+
+ <!-- top-right -->
+ <button id="advancedToggle">
+ <svg
+ xmlns="http://www.w3.org/2000/svg"
+ enable-background="new 0 0 24 24"
+ height="24px"
+ viewBox="0 0 24 24"
+ width="24px"
+ fill="currentColor"
+ >
+ <rect fill="none" height="24" width="24" />
+ <path
+ d="M19.5,12c0-0.23-0.01-0.45-0.03-0.68l1.86-1.41c0.4-0.3,0.51-0.86,0.26-1.3l-1.87-3.23c-0.25-0.44-0.79-0.62-1.25-0.42 l-2.15,0.91c-0.37-0.26-0.76-0.49-1.17-0.68l-0.29-2.31C14.8,2.38,14.37,2,13.87,2h-3.73C9.63,2,9.2,2.38,9.14,2.88L8.85,5.19 c-0.41,0.19-0.8,0.42-1.17,0.68L5.53,4.96c-0.46-0.2-1-0.02-1.25,0.42L2.41,8.62c-0.25,0.44-0.14,0.99,0.26,1.3l1.86,1.41 C4.51,11.55,4.5,11.77,4.5,12s0.01,0.45,0.03,0.68l-1.86,1.41c-0.4,0.3-0.51,0.86-0.26,1.3l1.87,3.23c0.25,0.44,0.79,0.62,1.25,0.42 l2.15-0.91c0.37,0.26,0.76,0.49,1.17,0.68l0.29,2.31C9.2,21.62,9.63,22,10.13,22h3.73c0.5,0,0.93-0.38,0.99-0.88l0.29-2.31 c0.41-0.19,0.8-0.42,1.17-0.68l2.15,0.91c0.46,0.2,1,0.02,1.25-0.42l1.87-3.23c0.25-0.44,0.14-0.99-0.26-1.3l-1.86-1.41 C19.49,12.45,19.5,12.23,19.5,12z M12.04,15.5c-1.93,0-3.5-1.57-3.5-3.5s1.57-3.5,3.5-3.5s3.5,1.57,3.5,3.5S13.97,15.5,12.04,15.5z"
+ />
+ </svg>
+ </button>
-<!-- bottom-right -->
-<div id="ext">
- <a
- href="https://returnyoutubedislike.com/install"
- target="_blank"
- id="ext-update"
- ></a>
- <span id="ext-version"></span>
-</div>
+ <!-- bottom-right -->
+ <div id="ext">
+ <a
+ href="https://returnyoutubedislike.com/install"
+ target="_blank"
+ id="ext-update"
+ ></a>
+ <span id="ext-version"></span>
+ </div>
-<!-- dialog box -->
-<fieldset id="advancedSettings">
- <legend id="advancedLegend" title="__MSG_legendSettings__">
- __MSG_legendSettings__
- </legend>
+ <!-- dialog box -->
+ <fieldset id="advancedSettings">
+ <legend id="advancedLegend" title="__MSG_legendSettings__">
+ __MSG_legendSettings__
+ </legend>
- <label class="switch" data-hover="Stop counting your likes and dislikes">
- <input type="checkbox" id="disable_vote_submission"/>
- <span class="slider" />
- <span class="switchLabel" title="__MSG_textSettings__">
- __MSG_textSettings__
- </span>
- </label>
- <br/>
- <label class="switch" data-hover="__MSG_roundNumbersHover__">
- <input type="checkbox" id="number_round_down"/>
- <span class="slider" />
- <span class="switchLabel">__MSG_roundNumbers__</span>
- </label>
- <br/>
- <label class="switch" data-hover="__MSG_reformatLikesHover__">
- <input type="checkbox" id="number_reformat_likes"/>
- <span class="slider" />
- <span class="switchLabel">__MSG_reformatLikes__</span>
- </label>
- <br/>
- <div class="custom-select">
- <label for="number_format">__MSG_numberFormat__</label>
- <select name="number_format" id="number_format">
- <option value="compactShort" id="number_format_compactShort"></option>
- <option value="compactLong" id="number_format_compactLong"></option>
- <option value="standard" id="number_format_standard"></option>
- </select>
- </div>
- <br/>
- <div class="custom-select">
- <label class="switch" data-hover="__MSG_colorizeRatioHover__">
- <input type="checkbox" id="colored_bar"/>
- <span class="slider" />
- <span class="switchLabel">__MSG_colorizeRatio__</span>
- </label>
- </div>
- <label class="switch" data-hover="__MSG_colorizeThumbsHover__">
- <input type="checkbox" id="colored_thumbs"/>
- <span class="slider" />
- <span class="switchLabel">__MSG_colorizeThumbs__</span>
- </label>
- <br/>
- <div class="custom-select">
- <label for="color_theme">__MSG_colorTheme__</label>
- <select name="color_theme" id="color_theme">
- <option value="classic" id="color_theme_classic">"__MSG_textColorTheme1__"</option>
- <option value="accessible" id="color_theme_accessible">"__MSG_textColorTheme2__"</option>
- <option value="neon" id="color_theme_neon">"__MSG_textColorTheme3__"</option>
- </select>
- <span
- id="color_theme_example_like"
- style="
+ <label class="switch" data-hover="Stop counting your likes and dislikes">
+ <input type="checkbox" id="disable_vote_submission" />
+ <span class="slider" />
+ <span class="switchLabel" title="__MSG_textSettings__">
+ __MSG_textSettings__
+ </span>
+ </label>
+ <br />
+ <label class="switch" data-hover="__MSG_roundNumbersHover__">
+ <input type="checkbox" id="number_round_down" />
+ <span class="slider" />
+ <span class="switchLabel">__MSG_roundNumbers__</span>
+ </label>
+ <br />
+ <label class="switch" data-hover="__MSG_reformatLikesHover__">
+ <input type="checkbox" id="number_reformat_likes" />
+ <span class="slider" />
+ <span class="switchLabel">__MSG_reformatLikes__</span>
+ </label>
+ <br />
+ <div class="custom-select">
+ <label for="number_format">__MSG_numberFormat__</label>
+ <select name="number_format" id="number_format">
+ <option value="compactShort" id="number_format_compactShort"></option>
+ <option value="compactLong" id="number_format_compactLong"></option>
+ <option value="standard" id="number_format_standard"></option>
+ </select>
+ </div>
+ <br />
+ <div class="custom-select">
+ <label class="switch" data-hover="__MSG_colorizeRatioHover__">
+ <input type="checkbox" id="colored_bar" />
+ <span class="slider" />
+ <span class="switchLabel">__MSG_colorizeRatio__</span>
+ </label>
+ </div>
+ <label class="switch" data-hover="__MSG_colorizeThumbsHover__">
+ <input type="checkbox" id="colored_thumbs" />
+ <span class="slider" />
+ <span class="switchLabel">__MSG_colorizeThumbs__</span>
+ </label>
+ <br />
+ <div class="custom-select">
+ <label for="color_theme">__MSG_colorTheme__</label>
+ <select name="color_theme" id="color_theme">
+ <option value="classic" id="color_theme_classic">
+ "__MSG_textColorTheme1__"
+ </option>
+ <option value="accessible" id="color_theme_accessible">
+ "__MSG_textColorTheme2__"
+ </option>
+ <option value="neon" id="color_theme_neon">
+ "__MSG_textColorTheme3__"
+ </option>
+ </select>
+ <span
+ id="color_theme_example_like"
+ style="
display: inline-block;
vertical-align: text-top;
width: 1em;
height: 1em;
"
- >&nbsp;</span>
- <span
- id="color_theme_example_dislike"
- style="
+ >&nbsp;</span
+ >
+ <span
+ id="color_theme_example_dislike"
+ style="
display: inline-block;
vertical-align: text-top;
width: 1em;
height: 1em;
"
- >&nbsp;</span>
- </div>
- <br/>
- <label class="switch" data-hover="Display percentage in like/dislike bar tooltip.">
- <input type="checkbox" id="show_tooltip_percentage"/>
- <span class="slider"/>
- <span class="switchLabel">Percentage in like/dislike bar tooltip.</span>
- </label>
- <div class="custom-select">
- <label for="tooltip_percentage_mode" data-hover="Use custom percentage display on hover.">Percent mode:</label>
- <select name="tooltip_percentage_mode" id="tooltip_percentage_mode">
- <option value="dash_like" id="tooltip_percentage_mode_dash_like">190&nbsp;/&nbsp;10&nbsp;&nbsp;-&nbsp;&nbsp;95%</option>
- <option value="dash_dislike" id="tooltip_percentage_mode_dash_dislike">190&nbsp;/&nbsp;10&nbsp;&nbsp;-&nbsp;&nbsp;5%</option>
- <option value="both" id="tooltip_percentage_mode_both">95%&nbsp;/&nbsp;5%</option>
- <option value="only_like" id="tooltip_percentage_mode_only_like">95%</option>
- <option value="only_dislike" id="tooltip_percentage_mode_only_dislike">5%</option>
- </select>
- </div>
-</fieldset>
-</body>
-<script src="popup.js"></script>
+ >&nbsp;</span
+ >
+ </div>
+ <br />
+ <label
+ class="switch"
+ data-hover="Display percentage in like/dislike bar tooltip."
+ >
+ <input type="checkbox" id="show_tooltip_percentage" />
+ <span class="slider" />
+ <span class="switchLabel">Percentage in like/dislike bar tooltip.</span>
+ </label>
+ <div class="custom-select">
+ <label
+ for="tooltip_percentage_mode"
+ data-hover="Use custom percentage display on hover."
+ >Percent mode:</label
+ >
+ <select name="tooltip_percentage_mode" id="tooltip_percentage_mode">
+ <option value="dash_like" id="tooltip_percentage_mode_dash_like">
+ 190&nbsp;/&nbsp;10&nbsp;&nbsp;-&nbsp;&nbsp;95%
+ </option>
+ <option
+ value="dash_dislike"
+ id="tooltip_percentage_mode_dash_dislike"
+ >
+ 190&nbsp;/&nbsp;10&nbsp;&nbsp;-&nbsp;&nbsp;5%
+ </option>
+ <option value="both" id="tooltip_percentage_mode_both">
+ 95%&nbsp;/&nbsp;5%
+ </option>
+ <option value="only_like" id="tooltip_percentage_mode_only_like">
+ 95%
+ </option>
+ <option
+ value="only_dislike"
+ id="tooltip_percentage_mode_only_dislike"
+ >
+ 5%
+ </option>
+ </select>
+ </div>
+ </fieldset>
+ </body>
+ <script src="popup.js"></script>
</html>
diff --git a/Extensions/combined/popup.js b/Extensions/combined/popup.js
index 30741dd..cf72829 100644
--- a/Extensions/combined/popup.js
+++ b/Extensions/combined/popup.js
@@ -24,7 +24,7 @@ const config = {
donate: "https://returnyoutubedislike.com/donate",
faq: "https://returnyoutubedislike.com/faq",
help: "https://returnyoutubedislike.com/help",
- changelog: "/changelog/3/changelog_3.0.html"
+ changelog: "/changelog/3/changelog_3.0.html",
},
};
@@ -90,17 +90,23 @@ document.getElementById("number_format").addEventListener("change", (ev) => {
chrome.storage.sync.set({ numberDisplayFormat: ev.target.value });
});
-document.getElementById("show_tooltip_percentage").addEventListener("click", (ev) => {
- chrome.storage.sync.set({ showTooltipPercentage: ev.target.checked });
-});
+document
+ .getElementById("show_tooltip_percentage")
+ .addEventListener("click", (ev) => {
+ chrome.storage.sync.set({ showTooltipPercentage: ev.target.checked });
+ });
-document.getElementById("tooltip_percentage_mode").addEventListener("change", (ev) => {
- chrome.storage.sync.set({ tooltipPercentageMode: ev.target.value });
-});
+document
+ .getElementById("tooltip_percentage_mode")
+ .addEventListener("change", (ev) => {
+ chrome.storage.sync.set({ tooltipPercentageMode: ev.target.value });
+ });
-document.getElementById("number_reformat_likes").addEventListener("click", (ev) => {
- chrome.storage.sync.set({ numberDisplayReformatLikes: ev.target.checked });
-});
+document
+ .getElementById("number_reformat_likes")
+ .addEventListener("click", (ev) => {
+ chrome.storage.sync.set({ numberDisplayReformatLikes: ev.target.checked });
+ });
/* Advanced Toggle */
const advancedToggle = document.getElementById("advancedToggle");
@@ -146,7 +152,7 @@ function initializeVersionNumber() {
.then((json) => {
if (compareVersions(json.version, version)) {
document.getElementById("ext-update").innerHTML =
- chrome.i18n.getMessage("textUpdate") + " v" + json.version;
+ chrome.i18n.getMessage("textUpdate") + " v" + json.version;
document.getElementById("ext-update").style.padding = ".25rem .5rem";
}
});
@@ -203,17 +209,17 @@ function initializeNumberDisplayRoundDown() {
});
}
-function initializeTooltipPercentage(){
+function initializeTooltipPercentage() {
chrome.storage.sync.get(["showTooltipPercentage"], (res) => {
handleShowTooltipPercentageChangeEvent(res.showTooltipPercentage);
});
-};
+}
function initializeTooltipPercentageMode() {
chrome.storage.sync.get(["tooltipPercentageMode"], (res) => {
handleTooltipPercentageModeChangeEvent(res.tooltipPercentageMode);
});
-};
+}
function initializeNumberDisplayFormat() {
chrome.storage.sync.get(["numberDisplayFormat"], (res) => {
@@ -269,10 +275,14 @@ function storageChangeHandler(changes, area) {
handleNumberDisplayFormatChangeEvent(changes.numberDisplayFormat.newValue);
}
if (changes.showTooltipPercentage !== undefined) {
- handleShowTooltipPercentageChangeEvent(changes.showTooltipPercentage.newValue);
+ handleShowTooltipPercentageChangeEvent(
+ changes.showTooltipPercentage.newValue
+ );
}
if (changes.numberDisplayReformatLikes !== undefined) {
- handleNumberDisplayReformatLikesChangeEvent(changes.numberDisplayReformatLikes.newValue);
+ handleNumberDisplayReformatLikesChangeEvent(
+ changes.numberDisplayReformatLikes.newValue
+ );
}
}
@@ -324,7 +334,7 @@ function handleNumberDisplayFormatChangeEvent(value) {
function handleShowTooltipPercentageChangeEvent(value) {
config.showTooltipPercentage = value;
document.getElementById("show_tooltip_percentage").checked = value;
-};
+}
function handleTooltipPercentageModeChangeEvent(value) {
if (!value) {
@@ -335,7 +345,7 @@ function handleTooltipPercentageModeChangeEvent(value) {
document
.getElementById("tooltip_percentage_mode")
.querySelector('option[value="' + value + '"]').selected = true;
-};
+}
function handleNumberDisplayReformatLikesChangeEvent(value) {
config.numberDisplayReformatLikes = value;
diff --git a/Extensions/combined/ryd.background.js b/Extensions/combined/ryd.background.js
index b6b6b67..c416da9 100644
--- a/Extensions/combined/ryd.background.js
+++ b/Extensions/combined/ryd.background.js
@@ -280,10 +280,14 @@ function storageChangeHandler(changes, area) {
);
}
if (changes.showTooltipPercentage !== undefined) {
- handleShowTooltipPercentageChangeEvent(changes.showTooltipPercentage.newValue);
+ handleShowTooltipPercentageChangeEvent(
+ changes.showTooltipPercentage.newValue
+ );
}
if (changes.numberDisplayReformatLikes !== undefined) {
- handleNumberDisplayReformatLikesChangeEvent(changes.numberDisplayReformatLikes.newValue);
+ handleNumberDisplayReformatLikesChangeEvent(
+ changes.numberDisplayReformatLikes.newValue
+ );
}
}
@@ -302,14 +306,14 @@ function handleNumberDisplayFormatChangeEvent(value) {
function handleShowTooltipPercentageChangeEvent(value) {
extConfig.showTooltipPercentage = value;
-};
+}
function handleTooltipPercentageModeChangeEvent(value) {
if (!value) {
value = "dash_like";
}
extConfig.tooltipPercentageMode = value;
-};
+}
function handleNumberDisplayRoundDownChangeEvent(value) {
extConfig.numberDisplayRoundDown = value;
diff --git a/Extensions/combined/src/bar.js b/Extensions/combined/src/bar.js
index 745a797..55f21ed 100644
--- a/Extensions/combined/src/bar.js
+++ b/Extensions/combined/src/bar.js
@@ -1,5 +1,11 @@
import { getButtons } from "./buttons";
-import { extConfig, isMobile, isLikesDisabled, isNewDesign, isShorts } from "./state";
+import {
+ extConfig,
+ isMobile,
+ isLikesDisabled,
+ isNewDesign,
+ isShorts,
+} from "./state";
import { cLog, getColorFromTheme } from "./utils";
function createRateBar(likes, dislikes) {
@@ -18,29 +24,28 @@ function createRateBar(likes, dislikes) {
const dislikePercentage = (100 - likePercentage).toLocaleString();
likePercentage = likePercentage.toLocaleString();
-
if (extConfig.showTooltipPercentage) {
var tooltipInnerHTML;
- switch (extConfig.tooltipPercentageMode) {
+ switch (extConfig.tooltipPercentageMode) {
case "dash_dislike":
- tooltipInnerHTML = `${likes.toLocaleString()}&nbsp;/&nbsp;${dislikes.toLocaleString()}&nbsp;&nbsp;-&nbsp;&nbsp;${dislikePercentage}%`
- break;
+ tooltipInnerHTML = `${likes.toLocaleString()}&nbsp;/&nbsp;${dislikes.toLocaleString()}&nbsp;&nbsp;-&nbsp;&nbsp;${dislikePercentage}%`;
+ break;
case "both":
- tooltipInnerHTML = `${likePercentage}%&nbsp;/&nbsp;${dislikePercentage}%`
+ tooltipInnerHTML = `${likePercentage}%&nbsp;/&nbsp;${dislikePercentage}%`;
break;
case "only_like":
- tooltipInnerHTML = `${likePercentage}%`
+ tooltipInnerHTML = `${likePercentage}%`;
break;
case "only_dislike":
- tooltipInnerHTML = `${dislikePercentage}%`
+ tooltipInnerHTML = `${dislikePercentage}%`;
break;
default: // dash_like
- tooltipInnerHTML = `${likes.toLocaleString()}&nbsp;/&nbsp;${dislikes.toLocaleString()}&nbsp;&nbsp;-&nbsp;&nbsp;${likePercentage}%`
+ tooltipInnerHTML = `${likes.toLocaleString()}&nbsp;/&nbsp;${dislikes.toLocaleString()}&nbsp;&nbsp;-&nbsp;&nbsp;${likePercentage}%`;
}
} else {
- tooltipInnerHTML = `${likes.toLocaleString()}&nbsp;/&nbsp;${dislikes.toLocaleString()}`
- }
-
+ tooltipInnerHTML = `${likes.toLocaleString()}&nbsp;/&nbsp;${dislikes.toLocaleString()}`;
+ }
+
if (!isShorts()) {
if (!rateBar && !isMobile()) {
let colorLikeStyle = "";
@@ -51,12 +56,15 @@ function createRateBar(likes, dislikes) {
}
(
- document.getElementById(isNewDesign() ? "actions-inner" : "menu-container") ||
- document.querySelector("ytm-slim-video-action-bar-renderer")
+ document.getElementById(
+ isNewDesign() ? "actions-inner" : "menu-container"
+ ) || document.querySelector("ytm-slim-video-action-bar-renderer")
).insertAdjacentHTML(
"beforeend",
`
- <div class="ryd-tooltip" style="width: ${widthPx}px${isNewDesign() ? "; margin-bottom: -2px" : ""}">
+ <div class="ryd-tooltip" style="width: ${widthPx}px${
+ isNewDesign() ? "; margin-bottom: -2px" : ""
+ }">
<div class="ryd-tooltip-bar-container">
<div
id="ryd-bar-container"
@@ -74,18 +82,20 @@ function createRateBar(likes, dislikes) {
</div>
`
);
-
- // Add border between info and comments
- if (isNewDesign()) {
- let descriptionAndActionsElement = document.getElementById("top-row");
- descriptionAndActionsElement.style.borderBottom = "1px solid var(--yt-spec-10-percent-layer)";
- descriptionAndActionsElement.style.paddingBottom = "10px";
+
+ // Add border between info and comments
+ if (isNewDesign()) {
+ let descriptionAndActionsElement = document.getElementById("top-row");
+ descriptionAndActionsElement.style.borderBottom =
+ "1px solid var(--yt-spec-10-percent-layer)";
+ descriptionAndActionsElement.style.paddingBottom = "10px";
+ }
} else {
- document.getElementById("ryd-bar-container").style.width = widthPx + "px";
+ document.getElementById("ryd-bar-container").style.width =
+ widthPx + "px";
document.getElementById("ryd-bar").style.width = widthPercent + "%";
- document.querySelector(
- "#ryd-dislike-tooltip > #tooltip"
- ).innerHTML = tooltipInnerHTML;
+ document.querySelector("#ryd-dislike-tooltip > #tooltip").innerHTML =
+ tooltipInnerHTML;
if (extConfig.coloredBar) {
document.getElementById("ryd-bar-container").style.backgroundColor =
getColorFromTheme(false);
@@ -97,7 +107,7 @@ function createRateBar(likes, dislikes) {
} else {
cLog("removing bar");
let ratebar = document.getElementById("ryd-bar-container");
- if(ratebar) {
+ if (ratebar) {
ratebar.parentNode.removeChild(ratebar);
}
}
diff --git a/Extensions/combined/src/events.js b/Extensions/combined/src/events.js
index 019f166..9b0e78a 100644
--- a/Extensions/combined/src/events.js
+++ b/Extensions/combined/src/events.js
@@ -118,7 +118,9 @@ function storageChangeHandler(changes, area) {
handleNumberDisplayFormatChangeEvent(changes.numberDisplayFormat.newValue);
}
if (changes.numberDisplayReformatLikes !== undefined) {
- handleNumberDisplayReformatLikesChangeEvent(changes.numberDisplayReformatLikes.newValue);
+ handleNumberDisplayReformatLikesChangeEvent(
+ changes.numberDisplayReformatLikes.newValue
+ );
}
}
diff --git a/Extensions/combined/src/starRating.js b/Extensions/combined/src/starRating.js
index 5d98814..65cf18b 100644
--- a/Extensions/combined/src/starRating.js
+++ b/Extensions/combined/src/starRating.js
@@ -1,101 +1,104 @@
-import { cLog } from "./utils";
-
-function createStarRating(rating, isMobile) {
- let starRating = document.createElement('label');
-
- let starSlider = document.createElement("input");
- starSlider.setAttribute("class", "rating");
- starSlider.setAttribute("max", "5");
- starSlider.setAttribute("readonly", "");
- starSlider.setAttribute("style", `--fill:rgb(255, 215, 0);--value:${rating.toString()};};background-color: transparent;`);
- starSlider.setAttribute("type", "range");
-
- starRating.appendChild(starSlider);
-
- let YTLikeButton;
-
- if (isMobile){
- YTLikeButton = document.querySelector('#app > div.page-container > ytm-watch > ytm-single-column-watch-next-results-renderer > ytm-slim-video-metadata-section-renderer > ytm-slim-video-action-bar-renderer > div > ytm-slim-metadata-toggle-button-renderer:nth-child(1)');
- } else {
- YTLikeButton = document.querySelector('#top-level-buttons-computed > ytd-toggle-button-renderer:nth-child(1)');
- }
-
- YTLikeButton.insertAdjacentElement('afterend', starRating);
-
- try {
- let YTBar = document.querySelector('#ryd-bar-container');
- YTBar.setAttribute("style", "width: 190%; height: 2px;");
- }
- catch(err) {
- cLog("RateBar Not Present");
- }
-
-
-
- let style = `<style>
-
-.rating {
- --dir: right;
- --fill: gold;
- --fillbg: rgba(100, 100, 100, 0.15);
- --star: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 17.25l-6.188 3.75 1.641-7.031-5.438-4.734 7.172-0.609 2.813-6.609 2.813 6.609 7.172 0.609-5.438 4.734 1.641 7.031z"/></svg>');
- --stars: 5;
- --starSize: 2.8rem;
- --symbol: var(--star);
- --value: 1;
- --w: calc(var(--stars) * var(--starSize));
- --x: calc(100% * (var(--value) / var(--stars)));
- block-size: var(--starSize);
- inline-size: var(--w);
- position: relative;
- touch-action: manipulation;
- -webkit-appearance: none;
-}
-
-[dir="rtl"] .rating {
- --dir: left;
-}
-
-.rating::-moz-range-track {
- background: linear-gradient(to var(--dir), var(--fill) 0 var(--x), var(--fillbg) 0 var(--x));
- block-size: 100%;
- mask: repeat left center/var(--starSize) var(--symbol);
-}
-
-.rating::-webkit-slider-runnable-track {
- background: linear-gradient(to var(--dir), var(--fill) 0 var(--x), var(--fillbg) 0 var(--x));
- block-size: 100%;
- mask: repeat left center/var(--starSize) var(--symbol);
- -webkit-mask: repeat left center/var(--starSize) var(--symbol);
-}
-
-.rating::-moz-range-thumb {
- height: var(--starSize);
- opacity: 0;
- width: var(--starSize);
-}
-
-.rating::-webkit-slider-thumb {
- height: var(--starSize);
- opacity: 0;
- width: var(--starSize);
- -webkit-appearance: none;
-}
-
-.rating,
-.rating-label {
- display: block;
- font-family: ui-sans-serif, system-ui, sans-serif;
-}
-
-.rating-label {
- margin-block-end: 1rem;
-}
-
-</style>`;
-
-document.head.insertAdjacentHTML("beforeend", style);
-
- }
-
- export { createStarRating };
+import { cLog } from "./utils";
+
+function createStarRating(rating, isMobile) {
+ let starRating = document.createElement("label");
+
+ let starSlider = document.createElement("input");
+ starSlider.setAttribute("class", "rating");
+ starSlider.setAttribute("max", "5");
+ starSlider.setAttribute("readonly", "");
+ starSlider.setAttribute(
+ "style",
+ `--fill:rgb(255, 215, 0);--value:${rating.toString()};};background-color: transparent;`
+ );
+ starSlider.setAttribute("type", "range");
+
+ starRating.appendChild(starSlider);
+
+ let YTLikeButton;
+
+ if (isMobile) {
+ YTLikeButton = document.querySelector(
+ "#app > div.page-container > ytm-watch > ytm-single-column-watch-next-results-renderer > ytm-slim-video-metadata-section-renderer > ytm-slim-video-action-bar-renderer > div > ytm-slim-metadata-toggle-button-renderer:nth-child(1)"
+ );
+ } else {
+ YTLikeButton = document.querySelector(
+ "#top-level-buttons-computed > ytd-toggle-button-renderer:nth-child(1)"
+ );
+ }
+
+ YTLikeButton.insertAdjacentElement("afterend", starRating);
+
+ try {
+ let YTBar = document.querySelector("#ryd-bar-container");
+ YTBar.setAttribute("style", "width: 190%; height: 2px;");
+ } catch (err) {
+ cLog("RateBar Not Present");
+ }
+
+ let style = `<style>
+
+.rating {
+ --dir: right;
+ --fill: gold;
+ --fillbg: rgba(100, 100, 100, 0.15);
+ --star: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 17.25l-6.188 3.75 1.641-7.031-5.438-4.734 7.172-0.609 2.813-6.609 2.813 6.609 7.172 0.609-5.438 4.734 1.641 7.031z"/></svg>');
+ --stars: 5;
+ --starSize: 2.8rem;
+ --symbol: var(--star);
+ --value: 1;
+ --w: calc(var(--stars) * var(--starSize));
+ --x: calc(100% * (var(--value) / var(--stars)));
+ block-size: var(--starSize);
+ inline-size: var(--w);
+ position: relative;
+ touch-action: manipulation;
+ -webkit-appearance: none;
+}
+
+[dir="rtl"] .rating {
+ --dir: left;
+}
+
+.rating::-moz-range-track {
+ background: linear-gradient(to var(--dir), var(--fill) 0 var(--x), var(--fillbg) 0 var(--x));
+ block-size: 100%;
+ mask: repeat left center/var(--starSize) var(--symbol);
+}
+
+.rating::-webkit-slider-runnable-track {
+ background: linear-gradient(to var(--dir), var(--fill) 0 var(--x), var(--fillbg) 0 var(--x));
+ block-size: 100%;
+ mask: repeat left center/var(--starSize) var(--symbol);
+ -webkit-mask: repeat left center/var(--starSize) var(--symbol);
+}
+
+.rating::-moz-range-thumb {
+ height: var(--starSize);
+ opacity: 0;
+ width: var(--starSize);
+}
+
+.rating::-webkit-slider-thumb {
+ height: var(--starSize);
+ opacity: 0;
+ width: var(--starSize);
+ -webkit-appearance: none;
+}
+
+.rating,
+.rating-label {
+ display: block;
+ font-family: ui-sans-serif, system-ui, sans-serif;
+}
+
+.rating-label {
+ margin-block-end: 1rem;
+}
+
+</style>`;
+
+ document.head.insertAdjacentHTML("beforeend", style);
+}
+
+export { createStarRating };
diff --git a/Extensions/combined/src/state.js b/Extensions/combined/src/state.js
index 8b0c519..ec2125a 100644
--- a/Extensions/combined/src/state.js
+++ b/Extensions/combined/src/state.js
@@ -206,7 +206,8 @@ function processResponse(response, storedData) {
getDislikeButton().style.color = getColorFromTheme(false);
}
}
- createStarRating(response.rating, isMobile());
+ //Temporary disabling this - it breaks all places where getButtons()[1] is used
+ // createStarRating(response.rating, isMobile());
}
// Tells the user if the API is down
diff --git a/Extensions/combined/src/utils.js b/Extensions/combined/src/utils.js
index 53a84d0..05dafbf 100644
--- a/Extensions/combined/src/utils.js
+++ b/Extensions/combined/src/utils.js
@@ -34,8 +34,10 @@ function getNumberFormatter(optionSelect) {
?.getAttribute("href")
)?.searchParams?.get("locale");
} catch {
- cLog('Cannot find browser locale. Use en as default for number formatting.');
- userLocales = 'en';
+ cLog(
+ "Cannot find browser locale. Use en as default for number formatting."
+ );
+ userLocales = "en";
}
}
@@ -56,13 +58,10 @@ function getNumberFormatter(optionSelect) {
formatterCompactDisplay = "short";
}
- const formatter = Intl.NumberFormat(
- userLocales,
- {
- notation: formatterNotation,
- compactDisplay: formatterCompactDisplay,
- }
- );
+ const formatter = Intl.NumberFormat(userLocales, {
+ notation: formatterNotation,
+ compactDisplay: formatterCompactDisplay,
+ });
return formatter;
}
diff --git a/README.md b/README.md
index 418d2bc..b31aa56 100644
--- a/README.md
+++ b/README.md
@@ -20,8 +20,8 @@ Read this in other languages: [Español](READMEes.md), [русский](READMEru
## The Story
-On November 10th, 2021, Google [announced](https://blog.youtube/news-and-events/update-to-youtube/) that the YouTube dislike count would be removed.
-
+On November 10th, 2021, Google [announced](https://blog.youtube/news-and-events/update-to-youtube/) that the YouTube dislike count would be removed.
+
Additionally, the `dislike` field in the YouTube API was [removed](https://support.google.com/youtube/thread/134791097/update-to-youtube-dislike-counts) on December 13th, 2021, removing any ability to judge the quality of content before watching.
## What it Does
@@ -39,35 +39,33 @@ You can learn more at our website at: [returnyoutubedislike.com](https://www.ret
Third-party use of this open API is allowed with the following restrictions:
- **Attribution**: This project should be clearly attributed with a link to [returnyoutubedislike.com](https://returnyoutubedislike.com/).
-- **Rate Limiting**: There are per client rate limits in place of 100 per minute and 10'000 per day. This will return a *429* status code indicating that your application should back off.
+- **Rate Limiting**: There are per client rate limits in place of 100 per minute and 10'000 per day. This will return a _429_ status code indicating that your application should back off.
The API is accessible over the following base URL:
-https://returnyoutubedislikeapi.com
+https://returnyoutubedislikeapi.com
List of available endpoints is available here:
https://returnyoutubedislikeapi.com/swagger/index.html
### Get votes
+
Example to get votes of a given YouTube video ID:
`/votes?videoId=kxOuG8jMIgI`
```json
{
- "id": "kxOuG8jMIgI",
- "dateCreated": "2021-12-20T12:25:54.418014Z",
- "likes": 27326,
- "dislikes": 498153,
- "rating": 1.212014408444885,
- "viewCount": 3149885,
- "deleted": false
+ "id": "kxOuG8jMIgI",
+ "dateCreated": "2021-12-20T12:25:54.418014Z",
+ "likes": 27326,
+ "dislikes": 498153,
+ "rating": 1.212014408444885,
+ "viewCount": 3149885,
+ "deleted": false
}
```
-
-None existing YouTube ID will return status code *404* "Not Found".
-Wrong formed YouTube ID will return *400* "Bad Request".
-
-
+None existing YouTube ID will return status code _404_ "Not Found".
+Wrong formed YouTube ID will return _400_ "Bad Request".
<!---
## API documentation
@@ -75,7 +73,6 @@ Wrong formed YouTube ID will return *400* "Bad Request".
You can view all documentation on our website.
[https://returnyoutubedislike.com/documentation/](https://returnyoutubedislike.com/documentation/) -->
-
## Contributing
Please read the [contribution guide](https://github.com/Anarios/return-youtube-dislike/blob/main/CONTRIBUTING.md).
@@ -87,6 +84,7 @@ You can support this project by donating to us on the link below:
[Donate](https://returnyoutubedislike.com/donate)
## Sponsors
+
[Piepacker](https://piepacker.com)
[Seed4.Me VPN](https://www.seed4.me/users/register?gift=ReturnYoutubeDislike)
@@ -94,4 +92,3 @@ You can support this project by donating to us on the link below:
[PocketTube](https://yousub.info/?utm_source=returnyoutubedislike)
[Become our sponsor](https://www.patreon.com/join/returnyoutubedislike/checkout?rid=8008601)
-
diff --git a/READMEes.md b/READMEes.md
index e9fc6df..63704b0 100644
--- a/READMEes.md
+++ b/READMEes.md
@@ -7,7 +7,6 @@
[![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)
# Return YouTube Dislike
@@ -21,13 +20,13 @@ Leer en otros idiomas: [English](README.md), [русский](READMEru.md), [Fra
## La historia
-El 10 de noviembre de 2021, Google [anunció](https://blog.youtube/news-and-events/update-to-youtube/) que eliminarían el contador de *dislikes* de YouTube.
+El 10 de noviembre de 2021, Google [anunció](https://blog.youtube/news-and-events/update-to-youtube/) que eliminarían el contador de _dislikes_ de YouTube.
Adicionalmente, el campo `dislike` de la API de YouTube también fue [eliminado](https://support.google.com/youtube/thread/134791097/update-to-youtube-dislike-counts) el 13 de diciembre de 2021, acabando con la posibilidad de juzgar la calidad de un contenido antes de verlo.
## Qué hace
-Tras la retirada de las estadísticas de *dislikes* de la API de YouTube, nuestro *backend* pasó a usar una combinación de las estadísticas archivadas de *dislikes* y datos extrapolados de los usuarios de la extensión.
+Tras la retirada de las estadísticas de _dislikes_ de la API de YouTube, nuestro _backend_ pasó a usar una combinación de las estadísticas archivadas de _dislikes_ y datos extrapolados de los usuarios de la extensión.
[FAQ](https://github.com/Anarios/return-youtube-dislike/blob/main/Docs/FAQ.md)
@@ -40,35 +39,33 @@ Para más información, visita nuestro sitio web: [returnyoutubedislike.com](htt
Se permite el uso de terceros de esta API abierta bajo las siguientes restricciones:
- **Atribución**: Este proyecto debe estar claramente atribuido con un enlace a [returnyoutubedislike.com](https://returnyoutubedislike.com/).
-- **Límites de velocidad**: Hay límites de velocidad por cliente de 100 solicitudes por minuto y 10.000 al día. Al excederlos se mostrará un código de estado *429*, indicando que tu aplicación debe bajar la velocidad.
+- **Límites de velocidad**: Hay límites de velocidad por cliente de 100 solicitudes por minuto y 10.000 al día. Al excederlos se mostrará un código de estado _429_, indicando que tu aplicación debe bajar la velocidad.
La API es accesible a través de la siguiente URL base:
-https://returnyoutubedislikeapi.com
+https://returnyoutubedislikeapi.com
-La lista de los *endpoints* disponibles se puede consultar aquí:
+La lista de los _endpoints_ disponibles se puede consultar aquí:
https://returnyoutubedislikeapi.com/swagger/index.html
### Obtención de votos
+
Ejemplo para obtener los votos del ID de un vídeo de YouTube proporcionado:
`/votes?videoId=kxOuG8jMIgI`
```json
{
- "id": "kxOuG8jMIgI",
- "dateCreated": "2021-12-20T12:25:54.418014Z",
- "likes": 27326,
- "dislikes": 498153,
- "rating": 1.212014408444885,
- "viewCount": 3149885,
- "deleted": false
+ "id": "kxOuG8jMIgI",
+ "dateCreated": "2021-12-20T12:25:54.418014Z",
+ "likes": 27326,
+ "dislikes": 498153,
+ "rating": 1.212014408444885,
+ "viewCount": 3149885,
+ "deleted": false
}
```
-
-Un ID de YouTube no existente mostrará el código de estado *404* "Not Found" (no encontrado).
-Un ID de YouTube mal estructurado mostrará el código *400* "Bad Request" (solicitud incorrecta).
-
-
+Un ID de YouTube no existente mostrará el código de estado _404_ "Not Found" (no encontrado).
+Un ID de YouTube mal estructurado mostrará el código _400_ "Bad Request" (solicitud incorrecta).
<!---
## Documentación de la API
@@ -76,7 +73,6 @@ Un ID de YouTube mal estructurado mostrará el código *400* "Bad Request" (soli
Puedes ver toda la documentación en nuestra página web.
[https://returnyoutubedislike.com/documentation/](https://returnyoutubedislike.com/documentation/) -->
-
## Contribuciones
Rogamos que leas la [guía de contribución](https://github.com/Anarios/return-youtube-dislike/blob/main/CONTRIBUTING.md) antes de empezar.
@@ -88,6 +84,7 @@ Puedes apoyar este proyecto enviando un donativo a través del enlace inferior:
[Donar](https://returnyoutubedislike.com/donate)
## Patrocinadores
+
[Piepacker](https://piepacker.com)
[Seed4.Me VPN](https://www.seed4.me/users/register?gift=ReturnYoutubeDislike)
diff --git a/READMEfr.md b/READMEfr.md
index fc551cc..6915d88 100644
--- a/READMEfr.md
+++ b/READMEfr.md
@@ -20,8 +20,8 @@ Lisez ceci dans d'autres langues : [English](README.md), [Español](READMEes.md)
## Le récit des événements
-Le 10 novembre 2021, Google [a annoncé](https://blog.youtube/news-and-events/update-to-youtube/) que le compteur de dislike sur YouTube serait supprimé.
-
+Le 10 novembre 2021, Google [a annoncé](https://blog.youtube/news-and-events/update-to-youtube/) que le compteur de dislike sur YouTube serait supprimé.
+
En outre, le champ `dislike` de l'API YouTube a été [supprimé](https://support.google.com/youtube/thread/134791097/update-to-youtube-dislike-counts) le 13 décembre 2021, supprimant ainsi toute possibilité de juger de la qualité du contenu d'une vidéo avant de la regarder.
## Ce qu'il fait
@@ -39,35 +39,33 @@ Vous pouvez en savoir plus sur notre site web à l'adresse suivante : [returnyou
L'utilisation par des tiers de cette API ouverte est autorisée avec les restrictions suivantes :
- **Attribution**: Ce projet doit être clairement nommé avec un lien vers [returnyoutubedislike.com](https://returnyoutubedislike.com/).
-- **Limitation des requêtes**: Il y a des limites de requêtes par client en place qui sont de 100 requêtes par minute et 10 000 par jour. Nous renverrons un code d'erreur *429* indiquant que votre application devrait se calmer.
+- **Limitation des requêtes**: Il y a des limites de requêtes par client en place qui sont de 100 requêtes par minute et 10 000 par jour. Nous renverrons un code d'erreur _429_ indiquant que votre application devrait se calmer.
L'API est accessible via l'URL de base suivante:
-https://returnyoutubedislikeapi.com
+https://returnyoutubedislikeapi.com
La liste des endpoints est disponible ici:
https://returnyoutubedislikeapi.com/swagger/index.html
### Obtenir les likes
+
Exemple pour obtenir les likes d'une vidéo YouTube avec un ID donné:
`/votes?videoId=kxOuG8jMIgI`
```json
{
- "id": "kxOuG8jMIgI",
- "dateCreated": "2021-12-20T12:25:54.418014Z",
- "likes": 27326,
- "dislikes": 498153,
- "rating": 1.212014408444885,
- "viewCount": 3149885,
- "deleted": false
+ "id": "kxOuG8jMIgI",
+ "dateCreated": "2021-12-20T12:25:54.418014Z",
+ "likes": 27326,
+ "dislikes": 498153,
+ "rating": 1.212014408444885,
+ "viewCount": 3149885,
+ "deleted": false
}
```
-
-Si aucunne vidéo YouTube à cet ID, il sera retourner le code d'erreur *404* "Not Found".
-Un ID YouTube invilide renverra *400* "Bad Request".
-
-
+Si aucunne vidéo YouTube à cet ID, il sera retourner le code d'erreur _404_ "Not Found".
+Un ID YouTube invilide renverra _400_ "Bad Request".
<!---
## Documentation de l'API
@@ -75,7 +73,6 @@ Un ID YouTube invilide renverra *400* "Bad Request".
Vous pouvez consulter toute la documentation sur notre site web.
[https://returnyoutubedislike.com/docs](https://returnyoutubedislike.com/docs) -->
-
## Contribution
Veuillez lire le [guide des contributions](CONTRIBUTINGfr.md).
@@ -87,6 +84,7 @@ Vous pouvez soutenir ce projet en faisant un don grâce au lien ci-dessous :
[Donner](https://returnyoutubedislike.com/donate)
## Sponsors
+
[Piepacker](https://piepacker.com)
[Seed4.Me VPN](https://www.seed4.me/users/register?gift=ReturnYoutubeDislike)
diff --git a/READMEja.md b/READMEja.md
index f10b0fa..2aba04b 100644
--- a/READMEja.md
+++ b/READMEja.md
@@ -20,15 +20,15 @@
## これまでの経緯
-2021年10月10日、GoogleはYouTubeの低評価を非表示にすると[発表しました](https://blog.youtube/news-and-events/update-to-youtube/)。
+2021 年 10 月 10 日、Google は YouTube の低評価を非表示にすると[発表しました](https://blog.youtube/news-and-events/update-to-youtube/)。
-そして2021年12月13日、YouTube APIからも低評価が[削除]((https://support.google.com/youtube/thread/134791097/update-to-youtube-dislike-counts))され、動画のクオリティを判断する手段がなくなってしまいました。
+そして 2021 年 12 月 13 日、YouTube API からも低評価が[削除](<(https://support.google.com/youtube/thread/134791097/update-to-youtube-dislike-counts)>)され、動画のクオリティを判断する手段がなくなってしまいました。
## What it Does
<!-- この部分の翻訳が微妙? -->
-YouTube APIから低評価が削除されたことにより、バックエンドは拡張機能のユーザーをもとにスクレイピングされたデータと組み合わせて表示するように切り替わりました
+YouTube API から低評価が削除されたことにより、バックエンドは拡張機能のユーザーをもとにスクレイピングされたデータと組み合わせて表示するように切り替わりました
[FAQ](https://github.com/Anarios/return-youtube-dislike/blob/main/Docs/FAQ.md)
@@ -38,38 +38,36 @@ YouTube APIから低評価が削除されたことにより、バックエンド
## API ドキュメント
-サードパーティは以下の制限のもとでAPIを利用できます:
+サードパーティは以下の制限のもとで API を利用できます:
- **帰属**: [returnyoutubedislike.com](https://returnyoutubedislike.com/) へのリンクを明確に表記してください。
-- **レート制限**: クライアントごとに1分あたり100回、1日あたり10000回という制限があります。制限に達すると*429*コードが返されます。
+- **レート制限**: クライアントごとに 1 分あたり 100 回、1 日あたり 10000 回という制限があります。制限に達すると*429*コードが返されます。
-APIは以下のBase URLでアクセスできます:
-https://returnyoutubedislikeapi.com
+API は以下の Base URL でアクセスできます:
+https://returnyoutubedislikeapi.com
利用可能なエンドポイントはこちらを参照してください:
https://returnyoutubedislikeapi.com/swagger/index.html
### 評価を取得
-APIを利用してYouTube video IDから評価を取得する例です:
+
+API を利用して YouTube video ID から評価を取得する例です:
`/votes?videoId=kxOuG8jMIgI`
```json
{
- "id": "kxOuG8jMIgI",
- "dateCreated": "2021-12-20T12:25:54.418014Z",
- "likes": 27326,
- "dislikes": 498153,
- "rating": 1.212014408444885,
- "viewCount": 3149885,
- "deleted": false
+ "id": "kxOuG8jMIgI",
+ "dateCreated": "2021-12-20T12:25:54.418014Z",
+ "likes": 27326,
+ "dislikes": 498153,
+ "rating": 1.212014408444885,
+ "viewCount": 3149885,
+ "deleted": false
}
```
-
-存在しないYouTube IDの場合 *404* "Not Found" が返されます。
-不正なフォーマットのYouTube IDの場合 *400* "Bad Request"が返されます。
-
-
+存在しない YouTube ID の場合 _404_ "Not Found" が返されます。
+不正なフォーマットの YouTube ID の場合 _400_ "Bad Request"が返されます。
<!---
## API ドキュメント
@@ -77,7 +75,6 @@ APIを利用してYouTube video IDから評価を取得する例です:
APIの完全なドキュメントは公式サイトを参照してください。
[https://returnyoutubedislike.com/documentation/](https://returnyoutubedislike.com/documentation/) -->
-
## 貢献する
こちらの[contribution guide](https://github.com/Anarios/return-youtube-dislike/blob/main/CONTRIBUTING.md)を読んでください。
@@ -89,6 +86,7 @@ APIの完全なドキュメントは公式サイトを参照してください
[寄付](https://returnyoutubedislike.com/donate)
## スポンサー
+
[Piepacker](https://piepacker.com)
[Seed4.Me VPN](https://www.seed4.me/users/register?gift=ReturnYoutubeDislike)
@@ -96,4 +94,3 @@ APIの完全なドキュメントは公式サイトを参照してください
[PocketTube](https://yousub.info/?utm_source=returnyoutubedislike)
[Become our sponsor](https://www.patreon.com/join/returnyoutubedislike/checkout?rid=8008601)
-
diff --git a/READMEru.md b/READMEru.md
index cdd2948..1609f37 100644
--- a/READMEru.md
+++ b/READMEru.md
@@ -7,10 +7,8 @@
[![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), [Français](READMEfr.md), [日本語](READMEja.md), [Türkçe](READMEtr.md)
-
# Return YouTube Dislike
<p align="center">
@@ -22,8 +20,8 @@
## История
-10 ноября 2021 года Google [объявили](https://blog.youtube/news-and-events/update-to-youtube/), что счётчик «Не нравится» на YouTube будет удален.
-
+10 ноября 2021 года Google [объявили](https://blog.youtube/news-and-events/update-to-youtube/), что счётчик «Не нравится» на YouTube будет удален.
+
Кроме того, поле отметок `dislike` в API YouTube было [удалено]](https://support.google.com/youtube/thread/134791097/update-to-youtube-dislike-counts) 13 декабря 2021 года, удалив любую возможность судить о качестве контента перед просмотром.
## Как оно работает
@@ -41,35 +39,33 @@
Стороннее использование этого открытого API разрешено со следующими ограничениями:
- **Атрибуция**: Этот проект должен быть чётко описан со ссылкой на [returnyoutubedislike.com](https://returnyoutubedislike.com/).
-- **Ограничение**: Существуют ограничения скорости для каждого клиента - 100 в минуту и 10 000 в день. Это выдаст код ошибки *429*, указывающий на то, что ваше приложение должно быть отключено.
+- **Ограничение**: Существуют ограничения скорости для каждого клиента - 100 в минуту и 10 000 в день. Это выдаст код ошибки _429_, указывающий на то, что ваше приложение должно быть отключено.
API доступен по следующему основному URL-адресу:
-https://returnyoutubedislikeapi.com
+https://returnyoutubedislikeapi.com
Список доступных эндпоинтов доступен здесь:
https://returnyoutubedislikeapi.com/swagger/index.html
### Получить голоса
+
Пример получения голосов за заданный идентификатор видео на YouTube:
`/votes?videoId=kxOuG8jMIgI`
```json
{
- "id": "kxOuG8jMIgI",
- "dateCreated": "2021-12-20T12:25:54.418014Z",
- "likes": 27326,
- "dislikes": 498153,
- "rating": 1.212014408444885,
- "viewCount": 3149885,
- "deleted": false
+ "id": "kxOuG8jMIgI",
+ "dateCreated": "2021-12-20T12:25:54.418014Z",
+ "likes": 27326,
+ "dislikes": 498153,
+ "rating": 1.212014408444885,
+ "viewCount": 3149885,
+ "deleted": false
}
```
-
-Неверный идентификатор YouTube выдаст код ошибки *404* "Не найдено".
-Неправильно отформатированный идентификатор YouTube выдаст код ошибки *400* "Неверный запрос".
-
-
+Неверный идентификатор YouTube выдаст код ошибки _404_ "Не найдено".
+Неправильно отформатированный идентификатор YouTube выдаст код ошибки _400_ "Неверный запрос".
<!---
## Документация по API
@@ -77,7 +73,6 @@ https://returnyoutubedislikeapi.com/swagger/index.html
Вы можете просмотреть всю документацию на нашем веб-сайте.
[https://returnyoutubedislike.com/documentation/](https://returnyoutubedislike.com/documentation/) -->
-
## Участие/помощь в разработке
Пожалуйста, ознакомьтесь с [руководством по внесению вклада в проект](https://github.com/Anarios/return-youtube-dislike/blob/main/CONTRIBUTINGru.md).
@@ -89,6 +84,7 @@ https://returnyoutubedislikeapi.com/swagger/index.html
[Пожертвование](https://returnyoutubedislike.com/donate)
## Спонсоры
+
[Piepacker](https://piepacker.com)
[Seed4.Me VPN](https://www.seed4.me/users/register?gift=ReturnYoutubeDislike)
@@ -96,4 +92,3 @@ https://returnyoutubedislikeapi.com/swagger/index.html
[PocketTube](https://yousub.info/?utm_source=returnyoutubedislike)
[Станьте нашим спонсором](https://www.patreon.com/join/returnyoutubedislike/checkout?rid=8008601)
-
diff --git a/READMEtr.md b/READMEtr.md
index 9a1f7ba..6376d84 100644
--- a/READMEtr.md
+++ b/READMEtr.md
@@ -48,26 +48,24 @@ Kullanılabilir endpoint'lerin listesi burada mevcuttur:
https://returnyoutubedislikeapi.com/swagger/index.html
### Oylamaları Elde Etme
+
Belirli bir YouTube video ID'sinin oylamalarını elde etmek için bir örnek:
`/votes?videoId=kxOuG8jMIgI`
```json
{
- "id": "kxOuG8jMIgI",
- "dateCreated": "2021-12-20T12:25:54.418014Z",
- "likes": 27326,
- "dislikes": 498153,
- "rating": 1.212014408444885,
- "viewCount": 3149885,
- "deleted": false
+ "id": "kxOuG8jMIgI",
+ "dateCreated": "2021-12-20T12:25:54.418014Z",
+ "likes": 27326,
+ "dislikes": 498153,
+ "rating": 1.212014408444885,
+ "viewCount": 3149885,
+ "deleted": false
}
```
-
-Hiçbir mevcut YouTube ID'si *404* "Not Found" durum kodunu döndürmez.
-Yanlış oluşturulmuş bir YouTube ID'si *400* "Bad Request" durum kodunu döndürür.
-
-
+Hiçbir mevcut YouTube ID'si _404_ "Not Found" durum kodunu döndürmez.
+Yanlış oluşturulmuş bir YouTube ID'si _400_ "Bad Request" durum kodunu döndürür.
<!---
## API Belgelemesi
@@ -75,7 +73,6 @@ Yanlış oluşturulmuş bir YouTube ID'si *400* "Bad Request" durum kodunu dönd
Tüm belgelemeleri sitemizden inceleyebilirsiniz.
[https://returnyoutubedislike.com/documentation/](https://returnyoutubedislike.com/documentation/) -->
-
## Katkıda Bulunma
Lütfen [katkı kılavuzu](https://github.com/Anarios/return-youtube-dislike/blob/main/CONTRIBUTING.md)nu okuyun.
@@ -87,6 +84,7 @@ Aşağıdaki bağlantıdan bize bağış yapabilir ve bu projeye destek olabilir
[Bağış Yapın](https://returnyoutubedislike.com/donate)
## Sponsorlar
+
[Piepacker](https://piepacker.com)
[Seed4.Me VPN](https://www.seed4.me/users/register?gift=ReturnYoutubeDislike)
diff --git a/Website/README.md b/Website/README.md
index f59e39a..05e1861 100644
--- a/Website/README.md
+++ b/Website/README.md
@@ -23,11 +23,13 @@ $ npm run generate
For detailed explanation on how things work, check out the [documentation](https://nuxtjs.org).
## Recommended VSCode Setup
- - [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` > Open Settings (JSON)
+- [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` > Open Settings (JSON)
+
```
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
diff --git a/Website/_locales/cs.ts b/Website/_locales/cs.ts
index 73c0dac..164568c 100644
--- a/Website/_locales/cs.ts
+++ b/Website/_locales/cs.ts
@@ -1,104 +1,125 @@
-import { cs } from 'vuetify/src/locale'
+import { cs } from "vuetify/src/locale";
// By Fjuro
export default {
- ...cs,
- home: {
- name: 'Domů',
- title: 'Return YouTube Dislike',
- subtitle: 'Rozšíření prohlížeče a API, která zobrazí disliky na YouTube',
- ukraine: 'Podpořte Ukrajinu',
- sponsors: 'Sponzoři',
+ ...cs,
+ home: {
+ name: "Domů",
+ title: "Return YouTube Dislike",
+ subtitle: "Rozšíření prohlížeče a API, která zobrazí disliky na YouTube",
+ ukraine: "Podpořte Ukrajinu",
+ sponsors: "Sponzoři",
+ },
+ install: {
+ name: "Instalace",
+ title: "Vyberte svou platformu",
+ subtitle: "Dostupné pro Firefox a všechny prohlížeče založené na Chromiu",
+ title2: "Další platformy",
+ subtitle2:
+ "Pokud váš prohlížeč ještě není podporován, vyzkoušejte tento UserScript",
+ title3: "Implementace třetích stran",
+ subtitle3:
+ "Žádná odpovědnost na naší straně, používejte na vlastní nebezpečí",
+ },
+ api: {
+ name: "API",
+ title: "Vítejte v oficiální dokumentaci RYD!",
+ subtitle: "Pro začátek vyberte sekci z menu.",
+ rights: {
+ title: "Práva k použití",
+ subtitle:
+ "Použití této API třetími stranami je povoleno s následujícími omezeními:",
+ bullet1: "Uvedení: ",
+ bullet1text:
+ "Tento projekt by měl být viditelně uveden buď s odkazem na tento repozitář, nebo s odkazem na returnyoutubedislike.com",
+ bullet2: "Omezení požadavků: ",
+ bullet2text:
+ "U API platí omezení na 100 požadavků za minutu a 10 000 za den. Při překročení tohoto limitu aplikace vrátí stavový kód 429, značící, že byste měli omezit své požadavky",
},
- install: {
- name: 'Instalace',
- title: 'Vyberte svou platformu',
- subtitle: 'Dostupné pro Firefox a všechny prohlížeče založené na Chromiu',
- title2: 'Další platformy',
- subtitle2: 'Pokud váš prohlížeč ještě není podporován, vyzkoušejte tento UserScript',
- title3: 'Implementace třetích stran',
- subtitle3: 'Žádná odpovědnost na naší straně, používejte na vlastní nebezpečí',
+ url: {
+ title: "Informace o URL",
+ subtitle: "API je dostupná na následující základní URL: ",
},
- api: {
- name: 'API',
- title: 'Vítejte v oficiální dokumentaci RYD!',
- subtitle: 'Pro začátek vyberte sekci z menu.',
- rights: {
- title: 'Práva k použití',
- subtitle: 'Použití této API třetími stranami je povoleno s následujícími omezeními:',
- bullet1: 'Uvedení: ',
- bullet1text: 'Tento projekt by měl být viditelně uveden buď s odkazem na tento repozitář, nebo s odkazem na returnyoutubedislike.com',
- bullet2: 'Omezení požadavků: ',
- bullet2text: 'U API platí omezení na 100 požadavků za minutu a 10 000 za den. Při překročení tohoto limitu aplikace vrátí stavový kód 429, značící, že byste měli omezit své požadavky',
- },
- url: {
- title: 'Informace o URL',
- subtitle: 'API je dostupná na následující základní URL: ',
- },
- endpoints: {
- title: 'Dostupné endpointy',
- subtitle: 'Seznam dostupných endpointů lze nalézt zde: ',
- },
- fetching: {
- title: 'Základní návod na přístup',
- subtitle: 'Příklad získání hlasů daného ID YouTube videa: ID: ',
- title2: 'Příklad požadavku: ',
- url: 'URL požadavku: ',
- method: 'Způsob žádosti: ',
- headers: 'Hlavičky: ',
- response: 'Odpověď: ',
- error1: 'Neplatné YouTube ID vrátí stavový kód 404 "Not Found"',
- error2: 'Nesprávně formátované YouTube ID vrátí stavový kód 400 "Bad Request"'
- },
+ endpoints: {
+ title: "Dostupné endpointy",
+ subtitle: "Seznam dostupných endpointů lze nalézt zde: ",
},
- help: {
- name: 'Nápověda',
- title: 'Řešení problémů',
- bullet1: 'Ujistěte se, že používáte nejnovější verzi rozšíření. Momentálně je to verze ',
- bullet11: '',
- bullet2: 'Zkuste odebrat a znovu nainstalovat rozšíření a poté restartovat váš prohlížeč (všechna aktivní okna, ne jen jednu kartu)',
- bullet3: 'Ujistěte se, že se otevře následující odkaz: ',
- bullet31: 'měli byste vidět tento text: ',
- bullet4: 'Pokud nepomůže ani jedna z možností výše, nahlaste svůj problém do kanálu',
- bullet41: 'v našem',
- bullet4a: 'Řekněte nám jaký máte operační systém, název prohlížeče a verzi prohlížeče',
- bullet4b: 'Udělejte snímek obrazovky s problémem (např. stránka YouTube videa) s otevřenou konzolí (stiskněte ',
- bullet4b1: ') - příkladný snímek viz níže.',
- bullet4c: 'Udělejte snímek obrazovky stránky rozšíření vašeho prohlížeče s nainstalovaným rozšířením.',
- bullet4c1: 'Pro zobrazení rozšíření zadejte následující adresu do adresního řádku: ',
- firefox: 'pro Firefox',
- chrome: 'pro Chrome, Edge, Brave, Opera, Vivaldi',
+ fetching: {
+ title: "Základní návod na přístup",
+ subtitle: "Příklad získání hlasů daného ID YouTube videa: ID: ",
+ title2: "Příklad požadavku: ",
+ url: "URL požadavku: ",
+ method: "Způsob žádosti: ",
+ headers: "Hlavičky: ",
+ response: "Odpověď: ",
+ error1: 'Neplatné YouTube ID vrátí stavový kód 404 "Not Found"',
+ error2:
+ 'Nesprávně formátované YouTube ID vrátí stavový kód 400 "Bad Request"',
},
- faq: {
- name: 'FAQ',
- title: 'Často kladené dotazy',
- subtitle: 'Stále máte otázky? Připojte se na náš Discord server!',
- bullet1: 'Jak získává rozšíření svá data?',
- bullet1text: 'Kombinací archivovaných dat z doby před oficiálním vypnutím rozhraní API YouTube dislike a extrapolovaného chování uživatelů rozšíření..',
- bullet2: 'Proč se neaktualizuje počet disliků?',
- bullet2text: 'V současné době jsou počty disliků videí ukládány do mezipaměti a nejsou příliš často aktualizovány. Jejich aktualizace se liší v závislosti na popularitě videa, ale může trvat od několika hodin do několika dnů.',
- bullet3: 'Jak to funguje?',
- bullet3text: 'Rozšíření načte ID videa, které sledujete, a pomocí našeho rozhraní API získá počet disliků (a další pole, jako jsou zobrazení, lajky atd.). Rozšíření pak na stránce zobrazí počet a poměr disliků. Pokud se vám video líbí nebo nelíbí, je to zaznamenáno a odesláno do databáze, takže lze extrapolovat přesný počet disliků.',
- bullet4: 'Můžu s vámi sdílet počet svých disliků?',
- bullet4text: 'Již brzy. Hledáme způsob, jak použít rozhraní Oauth nebo jiného rozhraní API pouze pro čtení s omezeným rozsahem, aby tvůrci mohli ověřitelně sdílet své počty disliků.',
- bullet5: 'Jaká data sbíráte a jak je s nimi nakládáno?',
- bullet5text: 'Rozšíření shromažďuje pouze údaje, které jsou nezbytně nutné pro jeho správnou funkci, například IP adresu nebo ID sledovaného videa. Žádné z vašich údajů nebudou nikdy prodány třetím stranám. Pokud se chcete dozvědět více o tom, jak se staráme o zabezpečení a ochranu osobních údajů, podívejte se na naši <a href="https://github.com/Anarios/return-youtube-dislike/blob/main/Docs/SECURITY-FAQ.md">bezpečnostní FAQ</a>.',
- bullet6: 'Jak funguje API/Backend?',
- bullet6text: 'Backend používá archivovaná data z doby, kdy rozhraní YouTube ještě vracelo počet disliků, počty lajků/disliků uživatelů a extrapolaci. V blízké budoucnosti umožníme tvůrcům obsahu snadno a bezpečně odesílat počet disliků a do naší současné databáze přidáme archivovaná data ArchiveTeamu (4,56 miliardy videí). Můžete si také prohlédnout video na toto téma.',
- bullet7: 'Proč počet disliků zobrazuje \'DISLIKES DISABLED\'?',
- bullet7text: 'Někdy se u nedávno nahraného videa může zobrazit \'DISLIKES DISABLED\' (disliky zakázány), i když je tvůrce nezakázal, což je způsobeno tím, jak zjišťujeme, zda jsou dislike zakázány. Mělo by to samo zmizet během několika hodin nebo tím, že dáte lajk či dislike danému videu.',
- },
- donate: {
- name: 'Přispět',
- subtitle: 'Můžete podpořit naše úsilí ponechat internet bezplatný jakýmkoli darem!',
- },
- links: {
- name: 'Odkazy',
- title: 'Odkazy projektu',
- subtitle: 'Odkazy na projekt a jeho vývojáře',
- contact: 'Kontaktujte mě',
- translators: 'Překladatelé',
- coolProjects: 'Bezva projekty',
- sponsorBlockDescription: 'Přeskočte reklamy integrované ve videích',
- filmotDescription: 'Prohledávejte YouTube videa pomocí titulků'
- },
-}
+ },
+ help: {
+ name: "Nápověda",
+ title: "Řešení problémů",
+ bullet1:
+ "Ujistěte se, že používáte nejnovější verzi rozšíření. Momentálně je to verze ",
+ bullet11: "",
+ bullet2:
+ "Zkuste odebrat a znovu nainstalovat rozšíření a poté restartovat váš prohlížeč (všechna aktivní okna, ne jen jednu kartu)",
+ bullet3: "Ujistěte se, že se otevře následující odkaz: ",
+ bullet31: "měli byste vidět tento text: ",
+ bullet4:
+ "Pokud nepomůže ani jedna z možností výše, nahlaste svůj problém do kanálu",
+ bullet41: "v našem",
+ bullet4a:
+ "Řekněte nám jaký máte operační systém, název prohlížeče a verzi prohlížeče",
+ bullet4b:
+ "Udělejte snímek obrazovky s problémem (např. stránka YouTube videa) s otevřenou konzolí (stiskněte ",
+ bullet4b1: ") - příkladný snímek viz níže.",
+ bullet4c:
+ "Udělejte snímek obrazovky stránky rozšíření vašeho prohlížeče s nainstalovaným rozšířením.",
+ bullet4c1:
+ "Pro zobrazení rozšíření zadejte následující adresu do adresního řádku: ",
+ firefox: "pro Firefox",
+ chrome: "pro Chrome, Edge, Brave, Opera, Vivaldi",
+ },
+ faq: {
+ name: "FAQ",
+ title: "Často kladené dotazy",
+ subtitle: "Stále máte otázky? Připojte se na náš Discord server!",
+ bullet1: "Jak získává rozšíření svá data?",
+ bullet1text:
+ "Kombinací archivovaných dat z doby před oficiálním vypnutím rozhraní API YouTube dislike a extrapolovaného chování uživatelů rozšíření..",
+ bullet2: "Proč se neaktualizuje počet disliků?",
+ bullet2text:
+ "V současné době jsou počty disliků videí ukládány do mezipaměti a nejsou příliš často aktualizovány. Jejich aktualizace se liší v závislosti na popularitě videa, ale může trvat od několika hodin do několika dnů.",
+ bullet3: "Jak to funguje?",
+ bullet3text:
+ "Rozšíření načte ID videa, které sledujete, a pomocí našeho rozhraní API získá počet disliků (a další pole, jako jsou zobrazení, lajky atd.). Rozšíření pak na stránce zobrazí počet a poměr disliků. Pokud se vám video líbí nebo nelíbí, je to zaznamenáno a odesláno do databáze, takže lze extrapolovat přesný počet disliků.",
+ bullet4: "Můžu s vámi sdílet počet svých disliků?",
+ bullet4text:
+ "Již brzy. Hledáme způsob, jak použít rozhraní Oauth nebo jiného rozhraní API pouze pro čtení s omezeným rozsahem, aby tvůrci mohli ověřitelně sdílet své počty disliků.",
+ bullet5: "Jaká data sbíráte a jak je s nimi nakládáno?",
+ bullet5text:
+ 'Rozšíření shromažďuje pouze údaje, které jsou nezbytně nutné pro jeho správnou funkci, například IP adresu nebo ID sledovaného videa. Žádné z vašich údajů nebudou nikdy prodány třetím stranám. Pokud se chcete dozvědět více o tom, jak se staráme o zabezpečení a ochranu osobních údajů, podívejte se na naši <a href="https://github.com/Anarios/return-youtube-dislike/blob/main/Docs/SECURITY-FAQ.md">bezpečnostní FAQ</a>.',
+ bullet6: "Jak funguje API/Backend?",
+ bullet6text:
+ "Backend používá archivovaná data z doby, kdy rozhraní YouTube ještě vracelo počet disliků, počty lajků/disliků uživatelů a extrapolaci. V blízké budoucnosti umožníme tvůrcům obsahu snadno a bezpečně odesílat počet disliků a do naší současné databáze přidáme archivovaná data ArchiveTeamu (4,56 miliardy videí). Můžete si také prohlédnout video na toto téma.",
+ bullet7: "Proč počet disliků zobrazuje 'DISLIKES DISABLED'?",
+ bullet7text:
+ "Někdy se u nedávno nahraného videa může zobrazit 'DISLIKES DISABLED' (disliky zakázány), i když je tvůrce nezakázal, což je způsobeno tím, jak zjišťujeme, zda jsou dislike zakázány. Mělo by to samo zmizet během několika hodin nebo tím, že dáte lajk či dislike danému videu.",
+ },
+ donate: {
+ name: "Přispět",
+ subtitle:
+ "Můžete podpořit naše úsilí ponechat internet bezplatný jakýmkoli darem!",
+ },
+ links: {
+ name: "Odkazy",
+ title: "Odkazy projektu",
+ subtitle: "Odkazy na projekt a jeho vývojáře",
+ contact: "Kontaktujte mě",
+ translators: "Překladatelé",
+ coolProjects: "Bezva projekty",
+ sponsorBlockDescription: "Přeskočte reklamy integrované ve videích",
+ filmotDescription: "Prohledávejte YouTube videa pomocí titulků",
+ },
+};
diff --git a/Website/_locales/en.ts b/Website/_locales/en.ts
index 24af1f5..8cc26f6 100644
--- a/Website/_locales/en.ts
+++ b/Website/_locales/en.ts
@@ -1,104 +1,119 @@
-import { en } from 'vuetify/src/locale'
+import { en } from "vuetify/src/locale";
export default {
- ...en,
- home: {
- name: 'Home',
- title: 'Return YouTube Dislike',
- subtitle: 'Browser extension and an API that shows you dislikes on Youtube',
- ukraine: 'Support Ukraine',
- sponsors: 'Sponsors',
+ ...en,
+ home: {
+ name: "Home",
+ title: "Return YouTube Dislike",
+ subtitle: "Browser extension and an API that shows you dislikes on Youtube",
+ ukraine: "Support Ukraine",
+ sponsors: "Sponsors",
+ },
+ install: {
+ name: "Install",
+ title: "Select Your Platform",
+ subtitle: "Available for Firefox and all Chromium browsers",
+ title2: "Other Platforms",
+ subtitle2: "If your browser is not yet supported, try this UserScript",
+ title3: "Third Party Implementations",
+ subtitle3: "No liability on our side, use at your own risk",
+ },
+ api: {
+ name: "API",
+ title: "Welcome to the official RYD docs!",
+ subtitle: "To get started, select a section from the menu.",
+ rights: {
+ title: "Usage Rights",
+ subtitle:
+ "Third party use of this open API is allowed with the following restrictions:",
+ bullet1: "Attribution: ",
+ bullet1text:
+ "This project should be clearly attributed with either a link to this repo or a link to returnyoutubedislike.com",
+ bullet2: "Rate Limiting: ",
+ bullet2text:
+ "There are per client rate limits in place of 100 per minute and 10,000 per day. This will return a 429 status code indicating that your application should back off",
},
- install: {
- name: 'Install',
- title: 'Select Your Platform',
- subtitle: 'Available for Firefox and all Chromium browsers',
- title2: 'Other Platforms',
- subtitle2: 'If your browser is not yet supported, try this UserScript',
- title3: 'Third Party Implementations',
- subtitle3: 'No liability on our side, use at your own risk',
+ url: {
+ title: "URL Information",
+ subtitle: "The API is accessible over the following base URL: ",
},
- api: {
- name: 'API',
- title: 'Welcome to the official RYD docs!',
- subtitle: 'To get started, select a section from the menu.',
- rights: {
- title: 'Usage Rights',
- subtitle: 'Third party use of this open API is allowed with the following restrictions:',
- bullet1: 'Attribution: ',
- bullet1text: 'This project should be clearly attributed with either a link to this repo or a link to returnyoutubedislike.com',
- bullet2: 'Rate Limiting: ',
- bullet2text: 'There are per client rate limits in place of 100 per minute and 10,000 per day. This will return a 429 status code indicating that your application should back off',
- },
- url: {
- title: 'URL Information',
- subtitle: 'The API is accessible over the following base URL: ',
- },
- endpoints: {
- title: 'Available Endpoints',
- subtitle: 'List of available endpoints is available here: ',
- },
- fetching: {
- title: 'Basic Fetching Tutorial',
- subtitle: 'Example to get votes of a given YouTube video ID: ',
- title2: 'Example Request: ',
- url: 'Request URL: ',
- method: 'Request Method: ',
- headers: 'Headers: ',
- response: 'Response: ',
- error1: 'An invalid YouTube ID will return status code 404 "Not Found"',
- error2: 'An incorrectly formatted YouTube ID will return 400 "Bad Request"'
- },
+ endpoints: {
+ title: "Available Endpoints",
+ subtitle: "List of available endpoints is available here: ",
},
- help: {
- name: 'Help',
- title: 'Troubleshooting',
- bullet1: 'Make sure you have latest version of extension installed, ',
- bullet11: 'right now',
- bullet2: 'Try removing extension and installing it again, then restarting the browser (all active windows, not just one tab)',
- bullet3: 'Make sure that this link opens: ',
- bullet31: 'you should see plain text: ',
- bullet4: 'If nothing of above helps - report your problem in',
- bullet41: 'in our',
- bullet4a: 'Tell us your Operating System, Browser Name and Browser Version',
- bullet4b: 'Take screenshot of page with problem (i.e. youtube video page) with console open (press ',
- bullet4b1: ') - example screenshot below.',
- bullet4c: 'Take screenshot of extensions page of your browser with extension installed.',
- bullet4c1: 'To see extensions put this into address bar: ',
- firefox: 'for Firefox',
- chrome: 'for Chrome, Edge, Brave, Opera, Vivaldi',
+ fetching: {
+ title: "Basic Fetching Tutorial",
+ subtitle: "Example to get votes of a given YouTube video ID: ",
+ title2: "Example Request: ",
+ url: "Request URL: ",
+ method: "Request Method: ",
+ headers: "Headers: ",
+ response: "Response: ",
+ error1: 'An invalid YouTube ID will return status code 404 "Not Found"',
+ error2:
+ 'An incorrectly formatted YouTube ID will return 400 "Bad Request"',
},
- faq: {
- name: 'FAQ',
- title: 'Frequently Asked Questions',
- subtitle: 'Still have questions? Feel free to join our Discord!',
- bullet1: 'Where does the extension get its data?',
- bullet1text: 'A combination of archived data from before the offical YouTube dislike API shut down, and extrapolated extension user behavior.',
- bullet2: 'Why isn\'t the dislike count updating?',
- bullet2text: 'Right now video dislikes are cached and they aren\'t updated very frequently. It varies depending on a video\'s popularity but can take anywhere between a few hours and a few days to update.',
- bullet3: 'How does this work?',
- bullet3text: 'The extension collects the video ID of the video you are watching, and fetches the dislike (and other fields like views, likes etc) using our API. The extension then displays the dislike count and ratio on the page. If you like or dislike a video, that is recorded and sent to the database so an accurate dislike count can be extrapolated.',
- bullet4: 'Can I share my dislike count with you?',
- bullet4text: 'Coming soon. We are looking into using Oauth or a different read only API with a limited scope so creators can share their dislike counts verifiability.',
- bullet5: 'What data do you collect and how is it treated?',
- bullet5text: 'The extension only collects data that is strictly necessary for it to function properly, such as IP address or ID of the video you\'re watching. None of your data will ever be sold to 3rd parties. If you would like to know more about how we handle security and privacy check out our <a href="https://github.com/Anarios/return-youtube-dislike/blob/main/Docs/SECURITY-FAQ.md">security FAQ</a>.',
- bullet6: 'How does the API/Backend work?',
- bullet6text: 'The backend is using archived data from when the youtube api was still returning the dislike count, extension users like/dislike count and extrapolation. In the near future we will be allowing content creators to submit their dislike count easily and safely and we will be adding ArchiveTeam\'s archived data (4.56 billion videos) into our current database. You can also view a video on the topic.',
- bullet7: 'Why does the dislike count show \'DISLIKES DISABLED\'?',
- bullet7text: 'Sometimes a recently uploaded video might show \'DISLIKES DISABLED\' even if the creator hasn\'t disabled it, this is due to how we are detecting if dislikes are disabled, it should go away in a few hours or by liking or disliking the video and refreshing the page (hopefully).',
- },
- donate: {
- name: 'Donate',
- subtitle: 'You can support our efforts to keep the internet free with a donation!',
- },
- links: {
- name: 'Links',
- title: 'Project Links',
- subtitle: 'Links to the project and its developers',
- contact: 'Contact Me',
- translators: 'Translators',
- coolProjects: 'Cool Projects',
- sponsorBlockDescription: 'Skips ads integrated in video',
- filmotDescription: 'Search YouTube videos by subtitles'
- },
-}
+ },
+ help: {
+ name: "Help",
+ title: "Troubleshooting",
+ bullet1: "Make sure you have latest version of extension installed, ",
+ bullet11: "right now",
+ bullet2:
+ "Try removing extension and installing it again, then restarting the browser (all active windows, not just one tab)",
+ bullet3: "Make sure that this link opens: ",
+ bullet31: "you should see plain text: ",
+ bullet4: "If nothing of above helps - report your problem in",
+ bullet41: "in our",
+ bullet4a: "Tell us your Operating System, Browser Name and Browser Version",
+ bullet4b:
+ "Take screenshot of page with problem (i.e. youtube video page) with console open (press ",
+ bullet4b1: ") - example screenshot below.",
+ bullet4c:
+ "Take screenshot of extensions page of your browser with extension installed.",
+ bullet4c1: "To see extensions put this into address bar: ",
+ firefox: "for Firefox",
+ chrome: "for Chrome, Edge, Brave, Opera, Vivaldi",
+ },
+ faq: {
+ name: "FAQ",
+ title: "Frequently Asked Questions",
+ subtitle: "Still have questions? Feel free to join our Discord!",
+ bullet1: "Where does the extension get its data?",
+ bullet1text:
+ "A combination of archived data from before the offical YouTube dislike API shut down, and extrapolated extension user behavior.",
+ bullet2: "Why isn't the dislike count updating?",
+ bullet2text:
+ "Right now video dislikes are cached and they aren't updated very frequently. It varies depending on a video's popularity but can take anywhere between a few hours and a few days to update.",
+ bullet3: "How does this work?",
+ bullet3text:
+ "The extension collects the video ID of the video you are watching, and fetches the dislike (and other fields like views, likes etc) using our API. The extension then displays the dislike count and ratio on the page. If you like or dislike a video, that is recorded and sent to the database so an accurate dislike count can be extrapolated.",
+ bullet4: "Can I share my dislike count with you?",
+ bullet4text:
+ "Coming soon. We are looking into using Oauth or a different read only API with a limited scope so creators can share their dislike counts verifiability.",
+ bullet5: "What data do you collect and how is it treated?",
+ bullet5text:
+ 'The extension only collects data that is strictly necessary for it to function properly, such as IP address or ID of the video you\'re watching. None of your data will ever be sold to 3rd parties. If you would like to know more about how we handle security and privacy check out our <a href="https://github.com/Anarios/return-youtube-dislike/blob/main/Docs/SECURITY-FAQ.md">security FAQ</a>.',
+ bullet6: "How does the API/Backend work?",
+ bullet6text:
+ "The backend is using archived data from when the youtube api was still returning the dislike count, extension users like/dislike count and extrapolation. In the near future we will be allowing content creators to submit their dislike count easily and safely and we will be adding ArchiveTeam's archived data (4.56 billion videos) into our current database. You can also view a video on the topic.",
+ bullet7: "Why does the dislike count show 'DISLIKES DISABLED'?",
+ bullet7text:
+ "Sometimes a recently uploaded video might show 'DISLIKES DISABLED' even if the creator hasn't disabled it, this is due to how we are detecting if dislikes are disabled, it should go away in a few hours or by liking or disliking the video and refreshing the page (hopefully).",
+ },
+ donate: {
+ name: "Donate",
+ subtitle:
+ "You can support our efforts to keep the internet free with a donation!",
+ },
+ links: {
+ name: "Links",
+ title: "Project Links",
+ subtitle: "Links to the project and its developers",
+ contact: "Contact Me",
+ translators: "Translators",
+ coolProjects: "Cool Projects",
+ sponsorBlockDescription: "Skips ads integrated in video",
+ filmotDescription: "Search YouTube videos by subtitles",
+ },
+};
diff --git a/Website/_locales/es.ts b/Website/_locales/es.ts
index d881edb..c5f3d21 100644
--- a/Website/_locales/es.ts
+++ b/Website/_locales/es.ts
@@ -1,104 +1,128 @@
-import { es } from 'vuetify/src/locale'
+import { es } from "vuetify/src/locale";
// By Alejandro Gayol
export default {
- ...es,
- home: {
- name: 'Inicio',
- title: 'Return YouTube Dislike',
- subtitle: 'Una extensión de navegador y una API que muestra el número de «dislikes» («No me gusta») en YouTube',
- ukraine: 'Apoya a Ucrania',
- sponsors: 'Patrocinadores',
+ ...es,
+ home: {
+ name: "Inicio",
+ title: "Return YouTube Dislike",
+ subtitle:
+ "Una extensión de navegador y una API que muestra el número de «dislikes» («No me gusta») en YouTube",
+ ukraine: "Apoya a Ucrania",
+ sponsors: "Patrocinadores",
+ },
+ install: {
+ name: "Instalación",
+ title: "Elige tu plataforma",
+ subtitle: "Disponible para Firefox y todos los navegadores Chromium",
+ title2: "Otras plataformas",
+ subtitle2: "Si tu navegador aún no es compatible, usa este UserScript",
+ title3: "Implementaciones de terceros",
+ subtitle3: "No nos hacemos responsables, úsalas bajo tu cuenta y riesgo",
+ },
+ api: {
+ name: "API",
+ title: "¡Te damos la bienvenida a la documentación oficial de RYD!",
+ subtitle: "Para empezar, elige una sección del menú.",
+ rights: {
+ title: "Derechos de uso",
+ subtitle:
+ "Se permite el uso de terceros de esta API abierta bajo las siguientes restricciones: ",
+ bullet1: "Atribución: ",
+ bullet1text:
+ "El proyecto debe estar claramente atribuido con un enlace a este repositorio o a returnyoutubedislike.com",
+ bullet2: "Límites de velocidad: ",
+ bullet2text:
+ "Hay límites de velocidad por cliente de 100 solicitudes por minuto y 10.000 al día. Al excederlos se mostrará un código de estado *429*, indicando que tu aplicación debe bajar la velocidad.",
},
- install: {
- name: 'Instalación',
- title: 'Elige tu plataforma',
- subtitle: 'Disponible para Firefox y todos los navegadores Chromium',
- title2: 'Otras plataformas',
- subtitle2: 'Si tu navegador aún no es compatible, usa este UserScript',
- title3: 'Implementaciones de terceros',
- subtitle3: 'No nos hacemos responsables, úsalas bajo tu cuenta y riesgo',
+ url: {
+ title: "Información de URL",
+ subtitle: "Esta API es accesible a través de la siguiente URL base: ",
},
- api: {
- name: 'API',
- title: '¡Te damos la bienvenida a la documentación oficial de RYD!',
- subtitle: 'Para empezar, elige una sección del menú.',
- rights: {
- title: 'Derechos de uso',
- subtitle: 'Se permite el uso de terceros de esta API abierta bajo las siguientes restricciones: ',
- bullet1: 'Atribución: ',
- bullet1text: 'El proyecto debe estar claramente atribuido con un enlace a este repositorio o a returnyoutubedislike.com',
- bullet2: 'Límites de velocidad: ',
- bullet2text: 'Hay límites de velocidad por cliente de 100 solicitudes por minuto y 10.000 al día. Al excederlos se mostrará un código de estado *429*, indicando que tu aplicación debe bajar la velocidad.',
- },
- url: {
- title: 'Información de URL',
- subtitle: 'Esta API es accesible a través de la siguiente URL base: ',
- },
- endpoints: {
- title: '«Endpoints» disponibles',
- subtitle: 'La lista de los endpoints disponibles se puede consultar aquí: ',
- },
- fetching: {
- title: 'Tutorial de consulta básica',
- subtitle: 'Ejemplo para obtener los votos del ID de un vídeo de YouTube: ',
- title2: 'Consulta de ejemplo: ',
- url: 'URL de la consulta: ',
- method: 'Método de la consulta: ',
- headers: 'Encabezados: ',
- response: 'Respuesta: ',
- error1: 'Un ID de YouTube no existente mostrará el código de estado 404 "Not Found" (no encontrado).',
- error2: 'Un ID de YouTube mal estructurado mostrará el código 400 "Bad Request" (solicitud incorrecta).'
- },
+ endpoints: {
+ title: "«Endpoints» disponibles",
+ subtitle:
+ "La lista de los endpoints disponibles se puede consultar aquí: ",
},
- help: {
- name: 'Ayuda',
- title: 'Solución de problemas',
- bullet1: 'Asegúrate de que tienes instalada la última versión de la extensión, ',
- bullet11: '',
- bullet2: 'Prueba a eliminar la extensión e instalarla de nuevo, después reinicia el navegador (todas las ventanas activas, no solo una pestaña)',
- bullet3: 'Comprueba que puedes abrir este enlace: ',
- bullet31: 'deberías ver este texto: ',
- bullet4: 'Si nada de esto surte efecto, informa de tu problema (en inglés) en el canal',
- bullet41: 'de nuestro',
- bullet4a: 'Dinos cuáles son tu sistema operativo, el nombre y la versión de tu navegador',
- bullet4b: 'Haz una captura de pantalla de la página que contenga el problema (como una página de un vídeo de YouTube) con la consola abierta (pulsa ',
- bullet4b1: '). Aquí puedes ver una captura de pantalla de ejemplo:',
- bullet4c: 'Haz una captura de la página de extensiones de tu navegador con la extensión instalada.',
- bullet4c1: 'Para ver las extensiones, escribe el siguiente texto en la barra de dirección: ',
- firefox: 'para Firefox',
- chrome: 'para Chrome, Edge, Brave, Opera, Vivaldi',
+ fetching: {
+ title: "Tutorial de consulta básica",
+ subtitle:
+ "Ejemplo para obtener los votos del ID de un vídeo de YouTube: ",
+ title2: "Consulta de ejemplo: ",
+ url: "URL de la consulta: ",
+ method: "Método de la consulta: ",
+ headers: "Encabezados: ",
+ response: "Respuesta: ",
+ error1:
+ 'Un ID de YouTube no existente mostrará el código de estado 404 "Not Found" (no encontrado).',
+ error2:
+ 'Un ID de YouTube mal estructurado mostrará el código 400 "Bad Request" (solicitud incorrecta).',
},
- faq: {
- name: 'Preguntas',
- title: 'Preguntas más frecuentes',
- subtitle: '¿Sigues teniendo problemas? ¡Pásate por nuestro servidor de Discord (en inglés)!',
- bullet1: '¿De dónde obtiene sus datos la extensión?',
- bullet1text: 'De una combinación de datos archivados antes de que la API oficial de «dislikes» de YouTube se apagase, extrapolada con las acciones realizadas por los usuarios de la extensión.',
- bullet2: '¿Por qué no se actualiza el contador de «dislikes»?',
- bullet2text: 'En la actualidad, las cuentas de «dislikes» se almacenan en una caché y no se actualizan con frecuencia. Esta frecuencia varía dependiendo de la popularidad de un vídeo, pero puede tardar entre unas pocas horas y unos pocos días en actualizarse.',
- bullet3: '¿Cómo funciona la extensión?',
- bullet3text: 'La extensión lee el ID del vídeo que estés viendo y carga la cifra de «dislikes» (y otras estadísticas, como visitas, «likes», etc.) a través de nuestra API. Después la extensión muestra el número de «dislikes» y la proporción de «likes»/«dislikes» en la página. Si utilizas los botones de «Me gusta» o «No me gusta» de un vídeo, esa información se guardará y enviará a la base de datos con la que se podrá extrapolar una cuenta de «dislikes» más precisa.',
- bullet4: '¿Puedo compartir mi contador de «dislikes» con vosotros?',
- bullet4text: 'Próximamente. Estamos investigando en usar Oauth u otra API de solo lectura con alcance limitado para que los creadores puedan compartir sus contadores de «dislikes» verificablemente.',
- bullet5: '¿Qué datos almacenáis y cómo son guardados?',
- bullet5text: 'La extensión almacena únicamente aquellos datos estrictamente necesarios para su buen funcionamiento, cómo la dirección IP o el ID del vídeo que estés viendo. Tus datos nunca serán vendidos a terceros. Si quieres saber más sobre nuestras políticas de seguridad y privacidad, consulta nuestro <a href="https://github.com/Anarios/return-youtube-dislike/blob/main/Docs/SECURITY-FAQ.md">documento de preguntas frecuentes sobre seguridad</a>.',
- bullet6: '¿Cómo funciona la API y el «backend»?',
- bullet6text: 'El «backend» utiliza datos archivados de cuando la API de YouTube seguía proporcionando el contador de «dislikes», los votos de usuarios de la extensión y su extrapolación. En un futuro cercano permitiremos que los creadores de contenido puedan proporcionar sus cifras de «dislikes» de forma fácil y segura, e incorporaremos los datos archivados de ArchiveTeam (4.560 millones de vídeos) en nuestra base de datos. También puedes ver un vídeo al respecto.',
- bullet7: '¿Porque el contador de «dislikes» dice «DISLIKES DESACTIVADOS»?',
- bullet7text: 'En ocasiones, un vídeo subido recientemente puede mostrar «DISLIKES DESACTIVADOS» aunque su creador no los haya desactivado, esto se debe a la forma en que detectamos si los «dislikes» están desactivados. El mensaje debería desaparecer en unas horas o al darle «like» o «dislike» al vídeo y actualizar la página (con suerte).',
- },
- donate: {
- name: 'Donar',
- subtitle: '¡Puedes apoyar nuestros esfuerzos para que Internet siga siendo con un donativo!',
- },
- links: {
- name: 'Enlaces',
- title: 'Enlaces del proyecto',
- subtitle: 'Enlaces del proyecto y sus desarrolladores',
- contact: 'Contacto',
- translators: 'Traductores',
- coolProjects: 'Proyectos interesantes',
- sponsorBlockDescription: 'Omite los anuncios integrados en vídeos',
- filmotDescription: 'Busca vídeos de YouTube a través de sus subtítulos'
- },
-} \ No newline at end of file
+ },
+ help: {
+ name: "Ayuda",
+ title: "Solución de problemas",
+ bullet1:
+ "Asegúrate de que tienes instalada la última versión de la extensión, ",
+ bullet11: "",
+ bullet2:
+ "Prueba a eliminar la extensión e instalarla de nuevo, después reinicia el navegador (todas las ventanas activas, no solo una pestaña)",
+ bullet3: "Comprueba que puedes abrir este enlace: ",
+ bullet31: "deberías ver este texto: ",
+ bullet4:
+ "Si nada de esto surte efecto, informa de tu problema (en inglés) en el canal",
+ bullet41: "de nuestro",
+ bullet4a:
+ "Dinos cuáles son tu sistema operativo, el nombre y la versión de tu navegador",
+ bullet4b:
+ "Haz una captura de pantalla de la página que contenga el problema (como una página de un vídeo de YouTube) con la consola abierta (pulsa ",
+ bullet4b1: "). Aquí puedes ver una captura de pantalla de ejemplo:",
+ bullet4c:
+ "Haz una captura de la página de extensiones de tu navegador con la extensión instalada.",
+ bullet4c1:
+ "Para ver las extensiones, escribe el siguiente texto en la barra de dirección: ",
+ firefox: "para Firefox",
+ chrome: "para Chrome, Edge, Brave, Opera, Vivaldi",
+ },
+ faq: {
+ name: "Preguntas",
+ title: "Preguntas más frecuentes",
+ subtitle:
+ "¿Sigues teniendo problemas? ¡Pásate por nuestro servidor de Discord (en inglés)!",
+ bullet1: "¿De dónde obtiene sus datos la extensión?",
+ bullet1text:
+ "De una combinación de datos archivados antes de que la API oficial de «dislikes» de YouTube se apagase, extrapolada con las acciones realizadas por los usuarios de la extensión.",
+ bullet2: "¿Por qué no se actualiza el contador de «dislikes»?",
+ bullet2text:
+ "En la actualidad, las cuentas de «dislikes» se almacenan en una caché y no se actualizan con frecuencia. Esta frecuencia varía dependiendo de la popularidad de un vídeo, pero puede tardar entre unas pocas horas y unos pocos días en actualizarse.",
+ bullet3: "¿Cómo funciona la extensión?",
+ bullet3text:
+ "La extensión lee el ID del vídeo que estés viendo y carga la cifra de «dislikes» (y otras estadísticas, como visitas, «likes», etc.) a través de nuestra API. Después la extensión muestra el número de «dislikes» y la proporción de «likes»/«dislikes» en la página. Si utilizas los botones de «Me gusta» o «No me gusta» de un vídeo, esa información se guardará y enviará a la base de datos con la que se podrá extrapolar una cuenta de «dislikes» más precisa.",
+ bullet4: "¿Puedo compartir mi contador de «dislikes» con vosotros?",
+ bullet4text:
+ "Próximamente. Estamos investigando en usar Oauth u otra API de solo lectura con alcance limitado para que los creadores puedan compartir sus contadores de «dislikes» verificablemente.",
+ bullet5: "¿Qué datos almacenáis y cómo son guardados?",
+ bullet5text:
+ 'La extensión almacena únicamente aquellos datos estrictamente necesarios para su buen funcionamiento, cómo la dirección IP o el ID del vídeo que estés viendo. Tus datos nunca serán vendidos a terceros. Si quieres saber más sobre nuestras políticas de seguridad y privacidad, consulta nuestro <a href="https://github.com/Anarios/return-youtube-dislike/blob/main/Docs/SECURITY-FAQ.md">documento de preguntas frecuentes sobre seguridad</a>.',
+ bullet6: "¿Cómo funciona la API y el «backend»?",
+ bullet6text:
+ "El «backend» utiliza datos archivados de cuando la API de YouTube seguía proporcionando el contador de «dislikes», los votos de usuarios de la extensión y su extrapolación. En un futuro cercano permitiremos que los creadores de contenido puedan proporcionar sus cifras de «dislikes» de forma fácil y segura, e incorporaremos los datos archivados de ArchiveTeam (4.560 millones de vídeos) en nuestra base de datos. También puedes ver un vídeo al respecto.",
+ bullet7: "¿Porque el contador de «dislikes» dice «DISLIKES DESACTIVADOS»?",
+ bullet7text:
+ "En ocasiones, un vídeo subido recientemente puede mostrar «DISLIKES DESACTIVADOS» aunque su creador no los haya desactivado, esto se debe a la forma en que detectamos si los «dislikes» están desactivados. El mensaje debería desaparecer en unas horas o al darle «like» o «dislike» al vídeo y actualizar la página (con suerte).",
+ },
+ donate: {
+ name: "Donar",
+ subtitle:
+ "¡Puedes apoyar nuestros esfuerzos para que Internet siga siendo con un donativo!",
+ },
+ links: {
+ name: "Enlaces",
+ title: "Enlaces del proyecto",
+ subtitle: "Enlaces del proyecto y sus desarrolladores",
+ contact: "Contacto",
+ translators: "Traductores",
+ coolProjects: "Proyectos interesantes",
+ sponsorBlockDescription: "Omite los anuncios integrados en vídeos",
+ filmotDescription: "Busca vídeos de YouTube a través de sus subtítulos",
+ },
+};
diff --git a/Website/_locales/fr.ts b/Website/_locales/fr.ts
index 51e550b..bbaa533 100644
--- a/Website/_locales/fr.ts
+++ b/Website/_locales/fr.ts
@@ -1,104 +1,131 @@
-import { fr } from 'vuetify/src/locale'
-
-export default {
- ...fr,
- home: {
- name: 'Accueil',
- title: 'Return YouTube Dislike',
- subtitle: 'Une extension de navigateur et une API qui vous montre les dislike sur Youtube',
- ukraine: 'Soutenir l\'Ukraine',
- sponsors: 'Sponsors',
- },
- install: {
- name: 'Installer',
- title: 'Choisissez votre Plateforme',
- subtitle: 'Disponible pour Firefox et tous les navigateurs Chromium',
- title2: 'Autres platesformes',
- subtitle2: 'Si votre navigateur n\'est pas encore pris en charge, essayez ce UserScript',
- title3: 'Implémentations par des tiers',
- subtitle3: 'Aucune responsabilité de notre part, à utiliser à vos risques et périls.',
- },
- api: {
- name: 'API',
- title: 'Bienvenue sur la documentation officiel de RYD !',
- subtitle: 'Pour commencer, sélectionnez une section dans le menu.',
- rights: {
- title: 'Droits d\'utilisation',
- subtitle: 'L\'utilisation par des tiers de cette API ouverte est autorisée avec les restrictions suivantes : ',
- bullet1: 'Attribution: ',
- bullet1text: 'Ce projet doit être clairement nommé avec un lien vers soit vers GitHub soit vers returnyoutubedislike.com',
- bullet2: 'Limites des requêtes',
- bullet2text: 'Il y a des limites de requêtes par client en place qui sont de 100 requêtes par minute et 10 000 par jour. Nous renverrons un code d\'erreur 429 indiquant que votre application devrait se calmer.',
- },
- url: {
- title: 'Information sur l\'URL',
- subtitle: 'L\'API est accesible via l\'URL de base suivante : ',
- },
- endpoints: {
- title: 'Endpoints disponibles',
- subtitle: 'La liste des endpoints disponibles est accesible ici : ',
- },
- fetching: {
- title: 'Tutoriel de base sur la récupération des données',
- subtitle: 'Exemple pour obtenir les likes d\'une vidéo YouTube avec un ID donné : ',
- title2: 'Example de requête : ',
- url: 'URL de la requête : ',
- method: 'Mode de requête : ',
- headers: 'En-têtes (headers) : ',
- response: 'Réponse : ',
- error1: 'Si aucunne vidéo YouTube à cet ID, il sera retourner le code d\'erreur 404 "Not Found"',
- error2: 'Un ID YouTube invilide renverra *400* "Bad Request"'
- },
- },
- help: {
- name: 'Aide',
- title: 'Dépannage',
- bullet1: 'Assurez-vous que la dernière version de l\'extension est installée, ',
- bullet11: 'à l\'heure actuelle',
- bullet2: 'Essayez de supprimer l\'extension et de la réinstaller, puis redémarrez le navigateur (toutes les fenêtres actives, pas seulement un onglet).',
- bullet3: 'Assurez-vous que ce lien s\'ouvre : ',
- bullet31: 'vous devriez voir du texte brut : ',
- bullet4: 'Si rien de ce qui précède ne vous aide, signalez votre problème sur',
- bullet41: 'ou sur notre',
- bullet4a: 'Indiquez-nous votre système d\'exploitation ansi que le nom et la version de votre navigateur',
- bullet4b: 'Faites une capture d\'écran de la page présentant le problème (par exemple, la page de la vidéo youtube) avec la console ouverte (appuyez sur ',
- bullet4b1: ') - exemple de capture d\'écran ci-dessous.',
- bullet4c: 'Faites une capture d\'écran de la page des extensions de votre navigateur avec les extension installée.',
- bullet4c1: 'Pour voir les extensions, mettez ceci dans la barre d\'adresse : ',
- firefox: 'pour Firefox',
- chrome: 'pour Chromium (Chrome, Edge, Brave, Opera, Vivaldi...)',
- },
- faq: {
- name: 'FAQ',
- title: 'Foire Aux Questions',
- subtitle: 'Vous avez encore des questions ? N\'hésitez pas à rejoindre notre Discord (en anglais) !',
- bullet1: 'Où l\'extension obtient-elle ses données ?',
- bullet1text: 'Une combinaison de données archivées datant d\'avant la fermeture de l\'API officielle de YouTube pour les dislikes, et d\'extrapolation du comportement des utilisateurs.',
- bullet2: 'Pourquoi le nombre de dislike n\'est-il pas mis à jour ?',
- bullet2text: 'Actuellement, les dislike des vidéos sont mis en cache et ne sont pas mis à jour très fréquemment. La mise à jour varie en fonction de la popularité de la vidéo, mais peut prendre entre quelques heures et quelques jours.',
- bullet3: 'Comment cela fonctionne-t-il ?',
- bullet3text: 'L\'extension collecte l\'ID de la vidéo que vous regardez, récupère les dislike (et d\'autres champs comme les vues, les likes, etc.) en utilisant notre API. L\'extension affiche ensuite le nombre de dislike et le ratio sur la page. Si vous liker ou disliker une vidéo, cela est enregistré et envoyé à la base de données afin qu\'un nombre précis de dislikes puisse être extrapolé.',
- bullet4: 'Puis-je partager mon compte de dislike avec vous ?',
- bullet4text: 'Prochainement. Nous envisageons d\'utiliser Oauth ou une autre API en lecture seule avec un champ d\'application limité afin que les créateurs puissent partager leurs compteurs de dislikes de manière vérifiable.',
- bullet5: 'Quelles sont les données que vous collectez et comment sont-elles traitées ?',
- bullet5text: 'L\'extension ne collecte que les données strictement nécessaires à son bon fonctionnement, comme l\'adresse IP ou l\'ID de la vidéo que vous regardez. Aucune de vos données ne sera jamais vendue à des tiers. Si vous souhaitez en savoir plus sur la manière dont nous gérons la sécurité et la confidentialité, consultez notre <a href="https://github.com/Anarios/return-youtube-dislike/blob/main/Docs/SECURITY-FAQfr.md">FAQ sur la sécurité</a>.',
- bullet6: 'Comment fonctionne l\'API / le Backend ?',
- bullet6text: 'Le backend utilise des données archivées de l\'époque où l\'API Youtube renvoyait encore le nombre de dislike, il utilise aussi le nombre de like/dislike des utilisateurs de l\'extension et une extrapolation. Dans un avenir proche, nous allons permettre aux créateurs de contenu de soumettre leurs nombres de dislike facilement et en toute sécurité et nous allons ajouter les données archivées d\'ArchiveTeam (4,56 milliards de vidéos) à notre base de données actuelle. Vous pouvez également visionner une vidéo sur le sujet.',
- bullet7: 'Pourquoi le compteur de dislike affiche-t-il "Désactivé par le créateur" ?',
- bullet7text: 'Parfois, une vidéo récemment publiée peut afficher "Désactivé par le créateur" même si le créateur ne l\'a pas désactivé. Cela est dû à la façon dont nous détectons si les dislikes sont désactivés, cela devrait disparaître dans quelques heures ou en likant ou en dislikant la vidéo et en rafraîchissant la page (avec un peu de chance).',
- },
- donate: {
- name: 'Donner',
- subtitle: 'Vous pouvez soutenir nos efforts pour que l\'internet reste libre en faisant un don !',
- },
- links: {
- name: 'Liens',
- title: 'Liens du Projet',
- subtitle: 'Liens vers le projet et ses développeurs',
- contact: 'Contactez-moi',
- translators: 'Traducteurs',
- coolProjects: 'Projets Cool',
- sponsorBlockDescription: 'Ignorer les publicités intégrées (sponso) dans la vidéo',
- filmotDescription: 'Rechercher des vidéos YouTube par sous-titres'
- },
-}
+import { fr } from "vuetify/src/locale";
+
+export default {
+ ...fr,
+ home: {
+ name: "Accueil",
+ title: "Return YouTube Dislike",
+ subtitle:
+ "Une extension de navigateur et une API qui vous montre les dislike sur Youtube",
+ ukraine: "Soutenir l'Ukraine",
+ sponsors: "Sponsors",
+ },
+ install: {
+ name: "Installer",
+ title: "Choisissez votre Plateforme",
+ subtitle: "Disponible pour Firefox et tous les navigateurs Chromium",
+ title2: "Autres platesformes",
+ subtitle2:
+ "Si votre navigateur n'est pas encore pris en charge, essayez ce UserScript",
+ title3: "Implémentations par des tiers",
+ subtitle3:
+ "Aucune responsabilité de notre part, à utiliser à vos risques et périls.",
+ },
+ api: {
+ name: "API",
+ title: "Bienvenue sur la documentation officiel de RYD !",
+ subtitle: "Pour commencer, sélectionnez une section dans le menu.",
+ rights: {
+ title: "Droits d'utilisation",
+ subtitle:
+ "L'utilisation par des tiers de cette API ouverte est autorisée avec les restrictions suivantes : ",
+ bullet1: "Attribution: ",
+ bullet1text:
+ "Ce projet doit être clairement nommé avec un lien vers soit vers GitHub soit vers returnyoutubedislike.com",
+ bullet2: "Limites des requêtes",
+ bullet2text:
+ "Il y a des limites de requêtes par client en place qui sont de 100 requêtes par minute et 10 000 par jour. Nous renverrons un code d'erreur 429 indiquant que votre application devrait se calmer.",
+ },
+ url: {
+ title: "Information sur l'URL",
+ subtitle: "L'API est accesible via l'URL de base suivante : ",
+ },
+ endpoints: {
+ title: "Endpoints disponibles",
+ subtitle: "La liste des endpoints disponibles est accesible ici : ",
+ },
+ fetching: {
+ title: "Tutoriel de base sur la récupération des données",
+ subtitle:
+ "Exemple pour obtenir les likes d'une vidéo YouTube avec un ID donné : ",
+ title2: "Example de requête : ",
+ url: "URL de la requête : ",
+ method: "Mode de requête : ",
+ headers: "En-têtes (headers) : ",
+ response: "Réponse : ",
+ error1:
+ 'Si aucunne vidéo YouTube à cet ID, il sera retourner le code d\'erreur 404 "Not Found"',
+ error2: 'Un ID YouTube invilide renverra *400* "Bad Request"',
+ },
+ },
+ help: {
+ name: "Aide",
+ title: "Dépannage",
+ bullet1:
+ "Assurez-vous que la dernière version de l'extension est installée, ",
+ bullet11: "à l'heure actuelle",
+ bullet2:
+ "Essayez de supprimer l'extension et de la réinstaller, puis redémarrez le navigateur (toutes les fenêtres actives, pas seulement un onglet).",
+ bullet3: "Assurez-vous que ce lien s'ouvre : ",
+ bullet31: "vous devriez voir du texte brut : ",
+ bullet4:
+ "Si rien de ce qui précède ne vous aide, signalez votre problème sur",
+ bullet41: "ou sur notre",
+ bullet4a:
+ "Indiquez-nous votre système d'exploitation ansi que le nom et la version de votre navigateur",
+ bullet4b:
+ "Faites une capture d'écran de la page présentant le problème (par exemple, la page de la vidéo youtube) avec la console ouverte (appuyez sur ",
+ bullet4b1: ") - exemple de capture d'écran ci-dessous.",
+ bullet4c:
+ "Faites une capture d'écran de la page des extensions de votre navigateur avec les extension installée.",
+ bullet4c1:
+ "Pour voir les extensions, mettez ceci dans la barre d'adresse : ",
+ firefox: "pour Firefox",
+ chrome: "pour Chromium (Chrome, Edge, Brave, Opera, Vivaldi...)",
+ },
+ faq: {
+ name: "FAQ",
+ title: "Foire Aux Questions",
+ subtitle:
+ "Vous avez encore des questions ? N'hésitez pas à rejoindre notre Discord (en anglais) !",
+ bullet1: "Où l'extension obtient-elle ses données ?",
+ bullet1text:
+ "Une combinaison de données archivées datant d'avant la fermeture de l'API officielle de YouTube pour les dislikes, et d'extrapolation du comportement des utilisateurs.",
+ bullet2: "Pourquoi le nombre de dislike n'est-il pas mis à jour ?",
+ bullet2text:
+ "Actuellement, les dislike des vidéos sont mis en cache et ne sont pas mis à jour très fréquemment. La mise à jour varie en fonction de la popularité de la vidéo, mais peut prendre entre quelques heures et quelques jours.",
+ bullet3: "Comment cela fonctionne-t-il ?",
+ bullet3text:
+ "L'extension collecte l'ID de la vidéo que vous regardez, récupère les dislike (et d'autres champs comme les vues, les likes, etc.) en utilisant notre API. L'extension affiche ensuite le nombre de dislike et le ratio sur la page. Si vous liker ou disliker une vidéo, cela est enregistré et envoyé à la base de données afin qu'un nombre précis de dislikes puisse être extrapolé.",
+ bullet4: "Puis-je partager mon compte de dislike avec vous ?",
+ bullet4text:
+ "Prochainement. Nous envisageons d'utiliser Oauth ou une autre API en lecture seule avec un champ d'application limité afin que les créateurs puissent partager leurs compteurs de dislikes de manière vérifiable.",
+ bullet5:
+ "Quelles sont les données que vous collectez et comment sont-elles traitées ?",
+ bullet5text:
+ "L'extension ne collecte que les données strictement nécessaires à son bon fonctionnement, comme l'adresse IP ou l'ID de la vidéo que vous regardez. Aucune de vos données ne sera jamais vendue à des tiers. Si vous souhaitez en savoir plus sur la manière dont nous gérons la sécurité et la confidentialité, consultez notre <a href=\"https://github.com/Anarios/return-youtube-dislike/blob/main/Docs/SECURITY-FAQfr.md\">FAQ sur la sécurité</a>.",
+ bullet6: "Comment fonctionne l'API / le Backend ?",
+ bullet6text:
+ "Le backend utilise des données archivées de l'époque où l'API Youtube renvoyait encore le nombre de dislike, il utilise aussi le nombre de like/dislike des utilisateurs de l'extension et une extrapolation. Dans un avenir proche, nous allons permettre aux créateurs de contenu de soumettre leurs nombres de dislike facilement et en toute sécurité et nous allons ajouter les données archivées d'ArchiveTeam (4,56 milliards de vidéos) à notre base de données actuelle. Vous pouvez également visionner une vidéo sur le sujet.",
+ bullet7:
+ 'Pourquoi le compteur de dislike affiche-t-il "Désactivé par le créateur" ?',
+ bullet7text:
+ 'Parfois, une vidéo récemment publiée peut afficher "Désactivé par le créateur" même si le créateur ne l\'a pas désactivé. Cela est dû à la façon dont nous détectons si les dislikes sont désactivés, cela devrait disparaître dans quelques heures ou en likant ou en dislikant la vidéo et en rafraîchissant la page (avec un peu de chance).',
+ },
+ donate: {
+ name: "Donner",
+ subtitle:
+ "Vous pouvez soutenir nos efforts pour que l'internet reste libre en faisant un don !",
+ },
+ links: {
+ name: "Liens",
+ title: "Liens du Projet",
+ subtitle: "Liens vers le projet et ses développeurs",
+ contact: "Contactez-moi",
+ translators: "Traducteurs",
+ coolProjects: "Projets Cool",
+ sponsorBlockDescription:
+ "Ignorer les publicités intégrées (sponso) dans la vidéo",
+ filmotDescription: "Rechercher des vidéos YouTube par sous-titres",
+ },
+};
diff --git a/Website/_locales/ru.ts b/Website/_locales/ru.ts
index 28b8fc0..784df7d 100644
--- a/Website/_locales/ru.ts
+++ b/Website/_locales/ru.ts
@@ -1,103 +1,127 @@
-import { ru } from 'vuetify/src/locale'
+import { ru } from "vuetify/src/locale";
// By Nikita Krupin
export default {
- ...ru,
- home: {
- name: 'Главная',
- title: 'Вернуть YouTube дизлайки',
- subtitle: 'Расширение для браузера и API, которые показывают вам отметки «Не нравится» в Youtube',
- ukraine: 'Поддержите Украину',
- sponsors: 'Спонсоры',
+ ...ru,
+ home: {
+ name: "Главная",
+ title: "Вернуть YouTube дизлайки",
+ subtitle:
+ "Расширение для браузера и API, которые показывают вам отметки «Не нравится» в Youtube",
+ ukraine: "Поддержите Украину",
+ sponsors: "Спонсоры",
+ },
+ install: {
+ name: "Скачать",
+ title: "Выберите свою платформу",
+ subtitle: "Доступно в Firefox и во всех Chromium браузерах",
+ title2: "Другие платформы",
+ subtitle2:
+ "Если ваш браузер ещё не поддерживается, попробуйте этот пользовательский скрипт",
+ title3: "От других разработчиков",
+ subtitle3:
+ "Никакой ответственности с нашей стороны, используйте на свой страх и риск",
+ },
+ api: {
+ name: "API",
+ title: "Добро пожаловать в официальную документацию RYD!",
+ subtitle: "Чтобы начать, выберите раздел в меню.",
+ rights: {
+ title: "Права пользования",
+ subtitle:
+ "Использование этого открытого API третьими лицами разрешено со следующими ограничениями:",
+ bullet1: "Aтрибуция: ",
+ bullet1text:
+ "Этот проект должен быть чётко описан либо ссылкой на этот репозиторий, либо ссылкой на returnyoutubedislike.com",
+ bullet2: "Ограничение",
+ bullet2text:
+ "Существуют ограничения на скорость для каждого клиента - 100 в минуту и 10 000 в день. Это выдаст код ошибки 429, указывающее на то, что ваше приложение превысило лимит",
},
- install: {
- name: 'Скачать',
- title: 'Выберите свою платформу',
- subtitle: 'Доступно в Firefox и во всех Chromium браузерах',
- title2: 'Другие платформы',
- subtitle2: 'Если ваш браузер ещё не поддерживается, попробуйте этот пользовательский скрипт',
- title3: 'От других разработчиков',
- subtitle3: 'Никакой ответственности с нашей стороны, используйте на свой страх и риск',
+ url: {
+ title: "Информация о URL-адресе",
+ subtitle: "API доступен по следующему URL-адресу: ",
},
- api: {
- name: 'API',
- title: 'Добро пожаловать в официальную документацию RYD!',
- subtitle: 'Чтобы начать, выберите раздел в меню.',
- rights: {
- title: 'Права пользования',
- subtitle: 'Использование этого открытого API третьими лицами разрешено со следующими ограничениями:',
- bullet1: 'Aтрибуция: ',
- bullet1text: 'Этот проект должен быть чётко описан либо ссылкой на этот репозиторий, либо ссылкой на returnyoutubedislike.com',
- bullet2: 'Ограничение',
- bullet2text: 'Существуют ограничения на скорость для каждого клиента - 100 в минуту и 10 000 в день. Это выдаст код ошибки 429, указывающее на то, что ваше приложение превысило лимит',
- },
- url: {
- title: 'Информация о URL-адресе',
- subtitle: 'API доступен по следующему URL-адресу: ',
- },
- endpoints: {
- title: 'Доступные конечные точки (эндпоинты)',
- subtitle: 'Список доступных конечных точек доступен здесь: ',
- },
- fetching: {
- title: 'Базовое руководство по выборке',
- subtitle: 'Пример получения голосов на заданный видео идентификатор на YouTube ',
- title2: 'Пример запроса: ',
- url: 'URL-адрес запроса: ',
- method: 'Способ запроса: ',
- headers: 'Заголовок: ',
- response: 'Ответ: ',
- error1: 'Неверный идентификатор YouTube выдаст код ошибки 404 "Не найдено"',
- error2: 'Неправильно отформатированный идентификатор YouTube выдаст код ошибки 400 "Неверный запрос"'
- },
+ endpoints: {
+ title: "Доступные конечные точки (эндпоинты)",
+ subtitle: "Список доступных конечных точек доступен здесь: ",
},
- help: {
- name: 'Помощь',
- title: 'Диагностика',
- bullet1: 'Убедитесь, что у вас установлена последняя версия расширения, ',
- bullet11: 'прямо сейчас',
- bullet2: 'Попробуйте удалить расширение и установить его снова, затем перезагрузите браузер (все активные окна, а не только одну вкладку).',
- bullet3: 'Убедитесь, что эта ссылка открывается:',
- bullet31: 'вы должны увидеть текст: ',
- bullet4: 'Если ничего из вышеперечисленного не помогает - сообщите о своей проблеме в',
- bullet41: 'в нашем',
- bullet4a: 'Сообщите нам вашу операционную систему, Название браузера и версию браузера',
- bullet4b: 'Сделайте снимок экрана страницы с проблемой (например, страницы видео на YouTube) с открытой консолью (нажмите ',
- bullet4b1: ') - пример скриншота ниже.',
- bullet4c: 'Сделайте снимок экрана страницы расширений вашего браузера с установленным расширением.',
- bullet4c1: 'Чтобы увидеть расширения, введите это в адресную строку: ',
- firefox: 'для Firefox',
- chrome: 'для Chrome, Edge, Brave, Opera, Vivaldi',
+ fetching: {
+ title: "Базовое руководство по выборке",
+ subtitle:
+ "Пример получения голосов на заданный видео идентификатор на YouTube ",
+ title2: "Пример запроса: ",
+ url: "URL-адрес запроса: ",
+ method: "Способ запроса: ",
+ headers: "Заголовок: ",
+ response: "Ответ: ",
+ error1:
+ 'Неверный идентификатор YouTube выдаст код ошибки 404 "Не найдено"',
+ error2:
+ 'Неправильно отформатированный идентификатор YouTube выдаст код ошибки 400 "Неверный запрос"',
},
- faq: {
- name: 'ЧаВО',
- title: 'Частые вопросы',
- subtitle: 'Всё ещё есть вопросы? Не стесняйтесь заглянуть в наш Discord!',
- bullet1: 'Откуда расширение получает данные?',
- bullet1text: 'Комбинация архивных данных, полученных до закрытия официального API YouTube с отметками «Не нравится», и экстраполяция поведения пользователей расширения.',
- bullet2: 'Почему количество отметок «Не нравится» не обновляется?',
- bullet2text: 'На данный момент видео отметки «Не нравится» кэшируются, и обновляются не очень часто. Это зависит от популярности видео, но обновление может занять от нескольких часов до нескольких дней.',
- bullet3: 'Как это работает?',
- bullet3text: 'Расширение берёт идентификатор видео которое вы смотрите, извлекает количество отметок «Не нравится» (и другие поля, такие как просмотры, отметки «Нравится» и т.д.) используя наш API. Затем расширение отображает количество отметок «Не нравится» на странице. Если если вы оставляете отметки «Нравится» или «Не нравится», это записывается и отправляется в базу данных, чтобы можно было экстраполировать точное количество отметок.',
- bullet4: 'Могу я поделиться с вами своим количеством отметок «Не нравится»?',
- bullet4text: 'Скоро. Мы рассматриваем возможность использования Oauth или другого API, доступного только для чтения, с ограниченной областью действия, чтобы создатели могли делиться своим количеством отметок «Не нравится».',
- bullet5: 'Какие данные вы собираете и как они обрабатываются?',
- bullet5text: 'Расширение собирает только те данные, которые строго необходимы для его правильной работы, такие как IP-адрес или идентификатор видео которое вы смотрите. Ваши данные никогда не будут проданы третьим лицам. Если вы хотите узнать больше о том, как мы обеспечиваем безопасность и конфиденциальность, ознакомьтесь с нашим <a href="https://github.com/Anarios/return-youtube-dislike/blob/main/Docs/SECURITY-FAQru.md">ЧаВО по безопасности</a>.',
- bullet6: 'Как работает API/серверная часть?',
- bullet6text: 'Серверная часть использует архивные данные с тех пор, когда YouTube API всё ещё выдавал количество отметок «Не нравится», количество отметок «Нравится» и «Не нравится» пользователей расширения и экстраполяцию. В ближайшем будущем мы позволим создателям контента легко и безопасно отправлять количество своих отметок «Не нравится», и мы добавим архивные данные ArchiveTeam (4,56 миллиарда видео) в нашу текущую базу данных. Вы также можете просмотреть видео на эту тему.',
- bullet7: 'Почему счётчик отметок «Не нравится» показывает \'DISLIKES DISABLED\'?',
- bullet7text: 'Иногда недавно загруженное видео может показывать "DISLIKES DISABLED", это связано с тем как мы определяем отключены ли отметки «Не нравится», и должно исчезнуть через несколько часов или после получения отметки «Нравится» или «Не нравится» и обновления страницы (надеюсь).',
- },
- donate: {
- name: 'Пожертвовать',
- subtitle: 'Вы можете поддержать пожертвованием наши усилия по обеспечению свободного Интернета!',
- },
- links: {
- name: 'Ссылки',
- title: 'Ссылки',
- subtitle: 'Ссылки на проект и его разработчиков',
- contact: 'Связаться',
- translators: 'Переводчики',
- sponsorBlockDescription: 'Проматывает рекламу, встроенную в видео',
- filmotDescription: 'Поиск по субтитрам YouTube'
- },
-}
+ },
+ help: {
+ name: "Помощь",
+ title: "Диагностика",
+ bullet1: "Убедитесь, что у вас установлена последняя версия расширения, ",
+ bullet11: "прямо сейчас",
+ bullet2:
+ "Попробуйте удалить расширение и установить его снова, затем перезагрузите браузер (все активные окна, а не только одну вкладку).",
+ bullet3: "Убедитесь, что эта ссылка открывается:",
+ bullet31: "вы должны увидеть текст: ",
+ bullet4:
+ "Если ничего из вышеперечисленного не помогает - сообщите о своей проблеме в",
+ bullet41: "в нашем",
+ bullet4a:
+ "Сообщите нам вашу операционную систему, Название браузера и версию браузера",
+ bullet4b:
+ "Сделайте снимок экрана страницы с проблемой (например, страницы видео на YouTube) с открытой консолью (нажмите ",
+ bullet4b1: ") - пример скриншота ниже.",
+ bullet4c:
+ "Сделайте снимок экрана страницы расширений вашего браузера с установленным расширением.",
+ bullet4c1: "Чтобы увидеть расширения, введите это в адресную строку: ",
+ firefox: "для Firefox",
+ chrome: "для Chrome, Edge, Brave, Opera, Vivaldi",
+ },
+ faq: {
+ name: "ЧаВО",
+ title: "Частые вопросы",
+ subtitle: "Всё ещё есть вопросы? Не стесняйтесь заглянуть в наш Discord!",
+ bullet1: "Откуда расширение получает данные?",
+ bullet1text:
+ "Комбинация архивных данных, полученных до закрытия официального API YouTube с отметками «Не нравится», и экстраполяция поведения пользователей расширения.",
+ bullet2: "Почему количество отметок «Не нравится» не обновляется?",
+ bullet2text:
+ "На данный момент видео отметки «Не нравится» кэшируются, и обновляются не очень часто. Это зависит от популярности видео, но обновление может занять от нескольких часов до нескольких дней.",
+ bullet3: "Как это работает?",
+ bullet3text:
+ "Расширение берёт идентификатор видео которое вы смотрите, извлекает количество отметок «Не нравится» (и другие поля, такие как просмотры, отметки «Нравится» и т.д.) используя наш API. Затем расширение отображает количество отметок «Не нравится» на странице. Если если вы оставляете отметки «Нравится» или «Не нравится», это записывается и отправляется в базу данных, чтобы можно было экстраполировать точное количество отметок.",
+ bullet4:
+ "Могу я поделиться с вами своим количеством отметок «Не нравится»?",
+ bullet4text:
+ "Скоро. Мы рассматриваем возможность использования Oauth или другого API, доступного только для чтения, с ограниченной областью действия, чтобы создатели могли делиться своим количеством отметок «Не нравится».",
+ bullet5: "Какие данные вы собираете и как они обрабатываются?",
+ bullet5text:
+ 'Расширение собирает только те данные, которые строго необходимы для его правильной работы, такие как IP-адрес или идентификатор видео которое вы смотрите. Ваши данные никогда не будут проданы третьим лицам. Если вы хотите узнать больше о том, как мы обеспечиваем безопасность и конфиденциальность, ознакомьтесь с нашим <a href="https://github.com/Anarios/return-youtube-dislike/blob/main/Docs/SECURITY-FAQru.md">ЧаВО по безопасности</a>.',
+ bullet6: "Как работает API/серверная часть?",
+ bullet6text:
+ "Серверная часть использует архивные данные с тех пор, когда YouTube API всё ещё выдавал количество отметок «Не нравится», количество отметок «Нравится» и «Не нравится» пользователей расширения и экстраполяцию. В ближайшем будущем мы позволим создателям контента легко и безопасно отправлять количество своих отметок «Не нравится», и мы добавим архивные данные ArchiveTeam (4,56 миллиарда видео) в нашу текущую базу данных. Вы также можете просмотреть видео на эту тему.",
+ bullet7:
+ "Почему счётчик отметок «Не нравится» показывает 'DISLIKES DISABLED'?",
+ bullet7text:
+ 'Иногда недавно загруженное видео может показывать "DISLIKES DISABLED", это связано с тем как мы определяем отключены ли отметки «Не нравится», и должно исчезнуть через несколько часов или после получения отметки «Нравится» или «Не нравится» и обновления страницы (надеюсь).',
+ },
+ donate: {
+ name: "Пожертвовать",
+ subtitle:
+ "Вы можете поддержать пожертвованием наши усилия по обеспечению свободного Интернета!",
+ },
+ links: {
+ name: "Ссылки",
+ title: "Ссылки",
+ subtitle: "Ссылки на проект и его разработчиков",
+ contact: "Связаться",
+ translators: "Переводчики",
+ sponsorBlockDescription: "Проматывает рекламу, встроенную в видео",
+ filmotDescription: "Поиск по субтитрам YouTube",
+ },
+};
diff --git a/Website/_locales/tr.ts b/Website/_locales/tr.ts
index f064e10..25f695b 100644
--- a/Website/_locales/tr.ts
+++ b/Website/_locales/tr.ts
@@ -1,104 +1,127 @@
-import { tr } from 'vuetify/src/locale'
+import { tr } from "vuetify/src/locale";
// By Batuhan Kara & İlyas Zan
export default {
- ...tr,
- 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',
- ukraine: 'Ukrayna\'ya Destek Ol',
- sponsors: 'Sponsorlar',
+ ...tr,
+ 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",
+ ukraine: "Ukrayna'ya Destek Ol",
+ sponsors: "Sponsorlar",
+ },
+ install: {
+ name: "Yükle",
+ 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",
+ title3: "Üçüncü Parti Uygulamalar",
+ subtitle3:
+ "Riski tamamen size aittir, bizim tarafımızda sorumluluk kabul edilmemektedir",
+ },
+ api: {
+ name: "API",
+ title: "Resmî RYD belgelerine hoş geldiniz!",
+ subtitle: "Başlamak için menüden bir bölüm seçin.",
+ rights: {
+ title: "Kullanım Hakları",
+ subtitle:
+ "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",
+ 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",
},
- install: {
- name: 'Yükle',
- 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',
- title3: 'Üçüncü Parti Uygulamalar',
- subtitle3: 'Riski tamamen size aittir, bizim tarafımızda sorumluluk kabul edilmemektedir',
+ url: {
+ title: "URL Bilgisi",
+ subtitle: "API'ye şu URL üzerinden ulaşılabilir: ",
},
- api: {
- name: 'API',
- title: 'Resmî RYD belgelerine hoş geldiniz!',
- subtitle: 'Başlamak için menüden bir bölüm seçin.',
- rights: {
- title: 'Kullanım Hakları',
- subtitle: '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',
- 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',
- },
- url: {
- title: 'URL Bilgisi',
- subtitle: 'API\'ye şu URL üzerinden ulaşılabilir: ',
- },
- endpoints: {
- title: 'Kullanılabilir Endpoint\'ler',
- subtitle: 'Kullanılabilir endpoint\'lerin listesi burada mevcuttur: ',
- },
- fetching: {
- title: 'Temel Veri Alma Eğitimi',
- 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',
- error2: 'Yanlış biçimlendirilmiş bir YouTube ID\'si, 400 "Bad Request" olarak döndürülür'
- },
+ endpoints: {
+ title: "Kullanılabilir Endpoint'ler",
+ subtitle: "Kullanılabilir endpoint'lerin listesi burada mevcuttur: ",
},
- help: {
- name: 'Yardım',
- title: 'Sorun Giderme',
- bullet1: 'Uzantının en son sürümü olan ',
- bullet11: ' sürümünün kurulu olduğundan emin olun',
- bullet2: 'Uzantıyı kaldırıp yeniden yüklemeyi deneyin, sonra tarayıcınızı yeniden başlatın (tüm aktif sekmeleri kapatın, sadece tek bir sekmeyi değil)',
- 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.',
- 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: ',
- firefox: '(Firefox için)',
- chrome: '(Chrome, Edge, Brave, Opera ve Vivaldi için)',
+ fetching: {
+ title: "Temel Veri Alma Eğitimi",
+ 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',
+ error2:
+ 'Yanlış biçimlendirilmiş bir YouTube ID\'si, 400 "Bad Request" olarak döndürülür',
},
- faq: {
- name: 'SSS',
- title: 'Sıkça Sorulan Sorular',
- 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.',
- bullet2: 'Dislike sayısı neden güncellenmiyor?',
- bullet2text: 'Şu anda dislike durumları önbelleğe alınır ve çok sık güncellenmez. Bir videonun popülerliğine bağlı olarak değişir ancak güncellenmesi birkaç saat ilâ birkaç gün sürebilir.',
- bullet3: 'Bu nasıl çalışıyor?',
- bullet3text: 'Uzantı, izlediğiniz videonun ID\'sini alır, API\'miz üzerinden dislike sayılarınızı geri getirir (aynı zamanda görüntülenmenizi, like\'ınızı vb. diğer alanları da). Uzantı daha sonra sayfada dislike sayısını ve oranını görüntüler. Bir videoya like veya dislike atarsanız bu kaydedilir ve veri tabanına gönderilir, böylece doğru dislike sayısını tahmin edebilir.',
- bullet4: 'Dislike sayımı sizinle paylaşabilir miyim?',
- bullet4text: 'Çok yakında evet. İçerik üreticilerinin dislike sayıları için doğrulanabilirliğini paylaşabilmeleri amacıyla Oauth ya da sınırlı bir kapsamda farklı bir salt okunur API kullanmayı düşünüyoruz.',
- 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 <a href="https://github.com/Anarios/return-youtube-dislike/blob/main/Docs/SECURITY-FAQ.md">security FAQ</a>\'ya gidin.',
- bullet6: 'API/Yazılım(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?',
- 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).',
- },
- donate: {
- name: 'Bağış Yap',
- subtitle: 'İnterneti özgür bırakma çabamızda bize bağışınızla destek olabilirsiniz!',
- },
- links: {
- name: 'Bağlantılar',
- title: 'Proje Bağlantıları',
- subtitle: 'Projeye ve geliştiricilerine bağlantılar',
- contact: 'Bana Ulaşın',
- translators: 'Çevirmenler',
- coolProjects: 'Hoş Projeler',
- sponsorBlockDescription: 'Videolara gömülü reklamları pas geçer',
- filmotDescription: 'YouTube videolarını alt yazılara göre aramanızı sağlar'
- },
-}
+ },
+ help: {
+ name: "Yardım",
+ title: "Sorun Giderme",
+ bullet1: "Uzantının en son sürümü olan ",
+ bullet11: " sürümünün kurulu olduğundan emin olun",
+ bullet2:
+ "Uzantıyı kaldırıp yeniden yüklemeyi deneyin, sonra tarayıcınızı yeniden başlatın (tüm aktif sekmeleri kapatın, sadece tek bir sekmeyi değil)",
+ 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.",
+ 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: ",
+ firefox: "(Firefox için)",
+ chrome: "(Chrome, Edge, Brave, Opera ve Vivaldi için)",
+ },
+ faq: {
+ name: "SSS",
+ title: "Sıkça Sorulan Sorular",
+ 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.",
+ bullet2: "Dislike sayısı neden güncellenmiyor?",
+ bullet2text:
+ "Şu anda dislike durumları önbelleğe alınır ve çok sık güncellenmez. Bir videonun popülerliğine bağlı olarak değişir ancak güncellenmesi birkaç saat ilâ birkaç gün sürebilir.",
+ bullet3: "Bu nasıl çalışıyor?",
+ bullet3text:
+ "Uzantı, izlediğiniz videonun ID'sini alır, API'miz üzerinden dislike sayılarınızı geri getirir (aynı zamanda görüntülenmenizi, like'ınızı vb. diğer alanları da). Uzantı daha sonra sayfada dislike sayısını ve oranını görüntüler. Bir videoya like veya dislike atarsanız bu kaydedilir ve veri tabanına gönderilir, böylece doğru dislike sayısını tahmin edebilir.",
+ bullet4: "Dislike sayımı sizinle paylaşabilir miyim?",
+ bullet4text:
+ "Çok yakında evet. İçerik üreticilerinin dislike sayıları için doğrulanabilirliğini paylaşabilmeleri amacıyla Oauth ya da sınırlı bir kapsamda farklı bir salt okunur API kullanmayı düşünüyoruz.",
+ 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 <a href=\"https://github.com/Anarios/return-youtube-dislike/blob/main/Docs/SECURITY-FAQ.md\">security FAQ</a>'ya gidin.",
+ bullet6: "API/Yazılım(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?",
+ 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).",
+ },
+ donate: {
+ name: "Bağış Yap",
+ subtitle:
+ "İnterneti özgür bırakma çabamızda bize bağışınızla destek olabilirsiniz!",
+ },
+ links: {
+ name: "Bağlantılar",
+ title: "Proje Bağlantıları",
+ subtitle: "Projeye ve geliştiricilerine bağlantılar",
+ contact: "Bana Ulaşın",
+ translators: "Çevirmenler",
+ coolProjects: "Hoş 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/nuxt.config.js b/Website/nuxt.config.js
index 59728bc..bf5bbbc 100644
--- a/Website/nuxt.config.js
+++ b/Website/nuxt.config.js
@@ -50,8 +50,7 @@ export default {
// Vuetify module configuration: https://go.nuxtjs.dev/config-vuetify
vuetify: {
lang: {
-
- locales: { en, es, tr, ru, cs, ja, fr, /* de, ...*/ },
+ locales: { en, es, tr, ru, cs, ja, fr /* de, ...*/ },
current: "en",
},
theme: {
diff --git a/Website/pages/index.vue b/Website/pages/index.vue
index b9bba10..3b21cee 100644
--- a/Website/pages/index.vue
+++ b/Website/pages/index.vue
@@ -54,10 +54,10 @@
</v-btn>
</div>
-<!-- <div class="mb-4" style="color: #999">-->
-<!-- Get dislikes manually: <input placeholder=" Video URL">-->
-<!-- <p id="output"></p>-->
-<!-- </div>-->
+ <!-- <div class="mb-4" style="color: #999">-->
+ <!-- Get dislikes manually: <input placeholder=" Video URL">-->
+ <!-- <p id="output"></p>-->
+ <!-- </div>-->
<v-spacer />
<div id="support-ukraine" class="d-flex flex-column items-center py-2">
@@ -77,7 +77,9 @@
<v-row class="justify-center mx-auto">
<p v-for="sponsor in sponsors" :key="sponsor.name" class="sponsor">
<a
- :style="sponsor.link ? { cursor: 'pointer' } : { cursor: 'default' }"
+ :style="
+ sponsor.link ? { cursor: 'pointer' } : { cursor: 'default' }
+ "
:href="sponsor.link"
rel="sponsored"
>
@@ -113,23 +115,33 @@ export default {
},
{
name: "PocketTube",
- link: "https://yousub.info/?utm_source=returnyoutubedislike"
- }, {
+ link: "https://yousub.info/?utm_source=returnyoutubedislike",
+ },
+ {
name: "Become our sponsor",
- link: "https://www.patreon.com/join/returnyoutubedislike/checkout?rid=8008601"
- }
+ link: "https://www.patreon.com/join/returnyoutubedislike/checkout?rid=8008601",
+ },
],
};
},
mounted() {
- const YOUTUBE_REGEX = /(?:http:|https:)*?\/\/(?:www\.|)(?:youtube\.com|m\.youtube\.com|youtu\.|youtube-nocookie\.com).*(?:v=|v%3D|v\/|(?:a|p)\/(?:a|u)\/\d.*\/|watch\?|vi(?:=|\/)|\/embed\/|oembed\?|be\/|e\/)([^&?%#/\n]*)/;
+ const YOUTUBE_REGEX =
+ /(?:http:|https:)*?\/\/(?:www\.|)(?:youtube\.com|m\.youtube\.com|youtu\.|youtube-nocookie\.com).*(?:v=|v%3D|v\/|(?:a|p)\/(?:a|u)\/\d.*\/|watch\?|vi(?:=|\/)|\/embed\/|oembed\?|be\/|e\/)([^&?%#/\n]*)/;
let lastVideoId = "";
window.oninput = (e) => {
- const videoId = (e.target.value.match(YOUTUBE_REGEX) || {})[1] || e.target.value;
+ const videoId =
+ (e.target.value.match(YOUTUBE_REGEX) || {})[1] || e.target.value;
if (videoId !== lastVideoId && videoId.length === 11) {
- fetch("https://returnyoutubedislikeapi.com/votes?videoId=" + (lastVideoId = videoId))
- .then(resp => resp.json())
- .then(data => document.getElementById("output").innerText = "Likes=" + data.likes + " Dislikes=" + data.dislikes);
+ fetch(
+ "https://returnyoutubedislikeapi.com/votes?videoId=" +
+ (lastVideoId = videoId)
+ )
+ .then((resp) => resp.json())
+ .then(
+ (data) =>
+ (document.getElementById("output").innerText =
+ "Likes=" + data.likes + " Dislikes=" + data.dislikes)
+ );
}
};
},
diff --git a/Website/pages/links.vue b/Website/pages/links.vue
index aa38f7f..cd6c446 100644
--- a/Website/pages/links.vue
+++ b/Website/pages/links.vue
@@ -37,7 +37,7 @@
</a>
</p>
<!-- Translators -->
- <div style="color: #555; width: 250px" class="my-8">
+ <div style="color: #555; width: 250px" class="my-8">
<b class="white--text">
{{ $vuetify.lang.t("$vuetify.links.translators") }}
</b>
@@ -57,11 +57,13 @@
</b>
<br />
<div
- v-for="project in coolProjects"
- :key="project.url"
- class="d-flex justify-center"
+ v-for="project in coolProjects"
+ :key="project.url"
+ class="d-flex justify-center"
>
- <a class="attr-link" :href="project.url" target="_blank">{{ project.name }} - {{ $vuetify.lang.t(project.description) }} </a>
+ <a class="attr-link" :href="project.url" target="_blank"
+ >{{ project.name }} - {{ $vuetify.lang.t(project.description) }}
+ </a>
</div>
</div>
</div>
@@ -113,8 +115,16 @@ export default {
},
],
coolProjects: [
- { name: "SponsorBlock", url: "https://sponsor.ajay.app/", description: "$vuetify.links.sponsorBlockDescription" },
- { name: "Filmot", url: "https://filmot.com/", description: "$vuetify.links.filmotDescription" }
+ {
+ name: "SponsorBlock",
+ url: "https://sponsor.ajay.app/",
+ description: "$vuetify.links.sponsorBlockDescription",
+ },
+ {
+ name: "Filmot",
+ url: "https://filmot.com/",
+ description: "$vuetify.links.filmotDescription",
+ },
],
}),
};
diff --git a/webpack.config.js b/webpack.config.js
index 80e1877..ef63fef 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -2,18 +2,23 @@ const path = require("path");
const CopyPlugin = require("copy-webpack-plugin");
const FileManagerPlugin = require("filemanager-webpack-plugin");
-const entries = ['ryd.content-script', 'ryd.background', 'popup'];
+const entries = ["ryd.content-script", "ryd.background", "popup"];
const ignorePatterns = [
"**/manifest-**",
"**/dist/**",
"**/src/**",
"**/readme.md",
- ...entries.map(entry => `**/${entry}.js`)
+ ...entries.map((entry) => `**/${entry}.js`),
];
module.exports = {
- entry: Object.fromEntries(entries.map(entry => [entry, path.join(__dirname, './Extensions/combined/', `${entry}.js`)])),
+ entry: Object.fromEntries(
+ entries.map((entry) => [
+ entry,
+ path.join(__dirname, "./Extensions/combined/", `${entry}.js`),
+ ])
+ ),
output: {
filename: "[name].js",
path: path.resolve(__dirname, "Extensions/combined/dist"),
@@ -59,13 +64,11 @@ module.exports = {
copy: [
{
source: "./Extensions/combined/dist/**.js",
- destination:
- "./Extensions/combined/dist/firefox/",
+ destination: "./Extensions/combined/dist/firefox/",
},
{
source: "./Extensions/combined/dist/**.js",
- destination:
- "./Extensions/combined/dist/chrome/",
+ destination: "./Extensions/combined/dist/chrome/",
},
],
},