diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml
index 177632e4..efacc6d9 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 123d9d0e..1328e562 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 fbf4aad5..1d9b47c7 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 84fd10c0..3ca18a36 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 b185db8e..2a65ac17 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 5a8f07a6..95ece722 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 e2170460..82b7bc1b 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 8efc8c9f..d539b4f8 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.
### **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
### **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
### **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.
### **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.
@@ -52,4 +57,5 @@ This in video form
## 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 c6c702e0..76b481ec 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 bd03fcd2..e38338be 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)
-
-
-
-
-
-## Downloading
-
-### Desktop (all OS supported by these browsers)
-
-
-
-#### [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.
-
-
-
-#### [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.
-
-
-
-### 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)
-
-
-
-#### 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)
-
-
-
-
-
-## Installation
-
-### Desktop
-
-
-
-#### [**Chromium based browsers**][4]
-
-
-
-##### From Chrome Webstore
-
-1. [Go to website (click here)][1]
-2. Click install
-3. Wait for the extension to download and
-4. 🙂 Installed !!
-
-
-
-##### 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
-
-
-
-##### 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
-
-
-
-#### [**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.
-
-
-
-##### 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.
-
-
-
-### 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.
-
-
-
-
-
-## Using
-
-No more steps are required, it should start working right away.
-
-If required you can restart your browser.
-
-**🎉 🎊 Congratulations** 🥳 🎊
-
-
-
-
-
-## 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]
-
-
-
-
-
-## 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!
-
-
-
-##### 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)
-
-
-
-#### 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 !!
-
-
-
-##### [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 !!
-
-
-
-
-
-
-
-[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)
+
+
+
+
+
+## Downloading
+
+### Desktop (all OS supported by these browsers)
+
+
+
+#### [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.
+
+
+
+#### [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.
+
+
+
+### 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)
+
+
+
+#### 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)
+
+
+
+
+
+## Installation
+
+### Desktop
+
+
+
+#### [**Chromium based browsers**][4]
+
+
+
+##### From Chrome Webstore
+
+1. [Go to website (click here)][1]
+2. Click install
+3. Wait for the extension to download and
+4. 🙂 Installed !!
+
+
+
+##### 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
+
+
+
+##### 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
+
+
+
+#### [**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.
+
+
+
+##### 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.
+
+
+
+### 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.
+
+
+
+
+
+## Using
+
+No more steps are required, it should start working right away.
+
+If required you can restart your browser.
+
+**🎉 🎊 Congratulations** 🥳 🎊
+
+
+
+
+
+## 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]
+
+
+
+
+
+## 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!
+
+
+
+##### 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)
+
+
+
+#### 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 !!
+
+
+
+##### [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 !!
+
+
+
+
+
+
+
+[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 9409d49c..e4611948 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)
-
-
-
-## 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)
-
-
-
-### 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)**
-
-
-
-### 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)
-
-
-
-### 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]
-
-
-
-
-
-#### [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]
-
-
-
-### 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.
-
-
-
-### Known conflicts
-
->### scriptSafe
->
-> **Solution:** Trust `returnyoutubedislikeapi.com` manually
->
-> 
-
-
-
-> ### uMatrix
->
-> **Solution:** Allow XHR for `returnyoutubedislikeapi.com` manually
->
-> 
-
-
-
-
-
-## iOS app
-
-Coming soon. Please have patience.
-
-
-
-
-
-## YouTube Vanced app
-
-Coming soon. Please have patience.
-
-
-
-
-
-## 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
-
-
-
-
-
-
-
-## Useful Links
-
-[List of Chromium Based Browsers][1]
-
-[List of Firefox Based Browsers][2]
-
-[Return-YouTube-Dislike Discord Server][3]
-
-
-
-[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)
+
+
+
+## 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)
+
+
+
+### 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)**
+
+
+
+### 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)
+
+
+
+### 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]
+
+
+
+
+
+#### [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]
+
+
+
+### 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.
+
+
+
+### Known conflicts
+
+> ### scriptSafe
+>
+> **Solution:** Trust `returnyoutubedislikeapi.com` manually
+>
+> 
+
+
+
+> ### uMatrix
+>
+> **Solution:** Allow XHR for `returnyoutubedislikeapi.com` manually
+>
+> 
+
+
+
+
+
+## iOS app
+
+Coming soon. Please have patience.
+
+
+
+
+
+## YouTube Vanced app
+
+Coming soon. Please have patience.
+
+
+
+
+
+## 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
+
+
+
+
+
+
+
+## Useful Links
+
+[List of Chromium Based Browsers][1]
+
+[List of Firefox Based Browsers][2]
+
+[Return-YouTube-Dislike Discord Server][3]
+
+
+
+[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 d7f11a93..dfbbbca7 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 633e4c75..877a95ab 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 f69257ef..34526993 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]() очень безопасен. Вы можете отозвать доступ к своему аккаунту в любое время, и можете дать нам ограниченные разрешения. Мы не будем запрашивать никаких разрешений, которые не требуются. Мы будем запрашивать разрешения только для просмотра статистики ваших видео.
+
+### Как я могу доверять этому счётчику отметок «Не нравится»?
+
+Мы приняли меры по предотвращению атак ботов и собираемся продолжать работать над повышением эффективности системы предотвращения ботов: это поможет нам сохранить подсчёт отметок «Не нравится» как хороший представитель фактического количества. Конечно, он никогда не будет точным на 100%, поэтому вы сами решаете, доверять ему или нет.
+
+### Почему бы вам не поделиться кодом внутренней части своего сервера?
+
+Мы поделимся им в какой-то момент - но сейчас нет никаких реальных причин делиться ею. Это даёт ложное чувство безопасности - ведь в системе с нулевым доверием мы можем с таким же успехом раскрыть одну версию, но развернуть другую. Есть много причин держать код в тайне, в частности, как мы боремся со спамом. Скрытие и запутывание кода обработки спама - это довольно стандартная практика.
diff --git a/Docs/readme.md b/Docs/readme.md
index 5a802b2a..b6949e05 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)
-
-
-
-
-## 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)
-
-
-
-
-
-
-## 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)
-
-
+Read this in other languages: [Français](readmefr.md)
+
+**Contents**
+
+- [Guides](#guides)
+- [FAQs](#faqs)
+
+
+
+
+## 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)
+
+
+
+
+
+## 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)
+
+
diff --git a/Docs/readmefr.md b/Docs/readmefr.md
index 3d5dd5d4..de9280e2 100644
--- a/Docs/readmefr.md
+++ b/Docs/readmefr.md
@@ -19,7 +19,6 @@ Lisez ceci dans d'autres langues : [English](readme.md)
-
## 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 453c56eb..253344c7 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()} / ${dislikes.toLocaleString()} - ${likePercentage}%`
- break;
+ tooltipInnerHTML = `${likes.toLocaleString()} / ${dislikes.toLocaleString()} - ${likePercentage}%`;
+ break;
case "dash_dislike":
- tooltipInnerHTML = `${likes.toLocaleString()} / ${dislikes.toLocaleString()} - ${dislikePercentage}%`
- break;
+ tooltipInnerHTML = `${likes.toLocaleString()} / ${dislikes.toLocaleString()} - ${dislikePercentage}%`;
+ break;
case "both":
- tooltipInnerHTML = `${likePercentage}% / ${dislikePercentage}%`
+ tooltipInnerHTML = `${likePercentage}% / ${dislikePercentage}%`;
break;
case "only_like":
- tooltipInnerHTML = `${likePercentage}%`
+ tooltipInnerHTML = `${likePercentage}%`;
break;
case "only_dislike":
- tooltipInnerHTML = `${dislikePercentage}%`
+ tooltipInnerHTML = `${dislikePercentage}%`;
break;
default:
- tooltipInnerHTML = `${likes.toLocaleString()} / ${dislikes.toLocaleString()}`
+ tooltipInnerHTML = `${likes.toLocaleString()} / ${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 121c0ee8..3d1ffc41 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 9a84faeb..6a587cc3 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 fa6c75ae..fac12a21 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 82ea6ea3..d881a756 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 2ff8516c..a5cdb7b9 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 83189016..aa2e5085 100644
--- a/Extensions/combined/popup.html
+++ b/Extensions/combined/popup.html
@@ -1,184 +1,223 @@
-
-
- __MSG_extensionName__
-
-
-
-
-
-
-