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:
-rw-r--r--.github/ISSUE_TEMPLATE/bug.yml6
-rw-r--r--CONTRIBUTING.md2
-rw-r--r--CONTRIBUTINGfr.md2
-rw-r--r--CONTRIBUTINGru.md2
-rw-r--r--CONTRIBUTINGtr.md67
-rw-r--r--CONTRIBUTINGuk.md67
-rw-r--r--Docs/FAQ.md6
-rw-r--r--Docs/FAQfr.md2
-rw-r--r--Docs/FAQru.md (renamed from Docs/FAQru.txt)45
-rw-r--r--Docs/FAQtr.md61
-rw-r--r--Docs/FAQuk.md61
-rw-r--r--Docs/SECURITY-FAQ.md2
-rw-r--r--Docs/SECURITY-FAQfr.md4
-rw-r--r--Docs/SECURITY-FAQru.md2
-rw-r--r--Docs/SECURITY-FAQtr.md31
-rw-r--r--Docs/SECURITY-FAQuk.md31
-rw-r--r--Docs/readme.md2
-rw-r--r--Docs/readmefr.md2
-rw-r--r--Docs/readmetr.md39
-rw-r--r--Extensions/UserScript/Return Youtube Dislike.user.js31
-rw-r--r--Extensions/combined/_locales/sv_SE/messages.json134
-rw-r--r--Extensions/combined/_locales/tr/messages.json80
-rw-r--r--Extensions/combined/_locales/uk/messages.json134
-rw-r--r--Extensions/combined/content-style.css20
-rw-r--r--Extensions/combined/manifest-chrome.json2
-rw-r--r--Extensions/combined/manifest-firefox.json2
-rw-r--r--Extensions/combined/readme.md2
-rw-r--r--Extensions/combined/src/bar.js22
-rw-r--r--Extensions/combined/src/buttons.js8
-rw-r--r--Extensions/combined/src/state.js30
-rw-r--r--Extensions/combined/src/utils.js3
-rw-r--r--README.md2
-rw-r--r--READMEes.md2
-rw-r--r--READMEfr.md4
-rw-r--r--READMEja.md2
-rw-r--r--READMEru.md2
-rw-r--r--READMEtr.md16
-rw-r--r--READMEuk.md94
-rw-r--r--Website/README.md2
-rw-r--r--Website/READMEtr.md89
-rw-r--r--Website/_locales/en.ts10
-rw-r--r--Website/_locales/sv_SE.ts119
-rw-r--r--Website/_locales/tr.ts44
-rw-r--r--Website/_locales/uk.ts119
-rw-r--r--Website/layouts/default.vue2
-rw-r--r--Website/nuxt.config.js3
-rw-r--r--Website/pages/links.vue4
-rw-r--r--Website/store/README.md2
-rw-r--r--Website/store/READMEtr.md12
-rw-r--r--extension-description-store-ukrainian.txt20
50 files changed, 1330 insertions, 120 deletions
diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml
index efacc6d..496ec3e 100644
--- a/.github/ISSUE_TEMPLATE/bug.yml
+++ b/.github/ISSUE_TEMPLATE/bug.yml
@@ -3,6 +3,12 @@ description: File a bug report!
# title: "(Bug): "
labels: ["bug"]
body:
+ - type: checkboxes
+ attributes:
+ label: Have you tried to find similar open issues?
+ options:
+ - label: "Yes, this issue is not a duplicate"
+ required: true
- type: input
attributes:
label: Browser
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 2a65ac1..f7996eb 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,4 +1,4 @@
-Read this in other languages: [Français](CONTRIBUTINGfr.md)
+Read this in other languages: [русский](CONTRIBUTINGru.md), [Français](CONTRIBUTINGfr.md), [Türkçe](CONTRIBUTINGtr.md), [українська](CONTRIBUTINGuk.md)
# Welcome To Return YouTube Dislikes contributing guide
diff --git a/CONTRIBUTINGfr.md b/CONTRIBUTINGfr.md
index 95ece72..b8e9d2c 100644
--- a/CONTRIBUTINGfr.md
+++ b/CONTRIBUTINGfr.md
@@ -1,4 +1,4 @@
-Lisez ceci dans d'autres langues : [English](CONTRIBUTING.md)
+Lisez ceci dans d'autres langues : [English](CONTRIBUTING.md), [русский](CONTRIBUTINGru.md), [Türkçe](CONTRIBUTINGtr.md), [українська](CONTRIBUTINGuk.md)
# Bienvenue dans le guide de contribution à Return YouTube Dislikes
diff --git a/CONTRIBUTINGru.md b/CONTRIBUTINGru.md
index 82b7bc1..ec2195a 100644
--- a/CONTRIBUTINGru.md
+++ b/CONTRIBUTINGru.md
@@ -1,4 +1,4 @@
-Прочитать на других языках: [English](CONTRIBUTING.md)
+Прочитать на других языках: [English](CONTRIBUTING.md), [Français](CONTRIBUTINGfr.md), [Türkçe](CONTRIBUTINGtr.md), [українська](CONTRIBUTINGuk.md)
# Добро пожаловать в руководство по внесению вклада Return YouTube Dislikes
diff --git a/CONTRIBUTINGtr.md b/CONTRIBUTINGtr.md
new file mode 100644
index 0000000..f439221
--- /dev/null
+++ b/CONTRIBUTINGtr.md
@@ -0,0 +1,67 @@
+Bunu diğer dillerde okuyun: [English](CONTRIBUTING.md), [русский](CONTRIBUTINGru.md), [Français](CONTRIBUTINGfr.md), [українська](CONTRIBUTINGuk.md)
+
+# "YouTube Dislike Sayısını Geri Getir"in katkı kılavuzuna Hoş Geldiniz
+
+Projemize katkıda bulunmak için zaman ayırdığınız için teşekkür ederiz! Tüm değişiklikleriniz, uzantının bir sonraki sürümüne (veya [internet sitesi](https://www.returnyoutubedislike.com/)ne) yansıtılacaktır.
+
+## Başlarken
+
+Lütfen formatlama işlemi için, Prettier'i varsayılan ayarlardayken kullanın.
+
+#### Ön Şartlar
+
+Kaynağın paketlenmiş sürümünü oluşturmak için node ve npm'nin kurulu olması gerekir.
+
+Kurulum sırasında kullanılan sürümler:
+
+- node: 12.18.4
+- npm: 6.14.6
+
+Bu uzantının iş mantığının çoğunu içeren `bundled-content-script.js`yi oluşturmak için, önce tüm bağımlılıkları yüklemeniz gerekir.
+
+1. Deponun köküne gidin ve şu komutu çalıştırın:
+
+```
+npm install
+```
+
+2. `manifest.json` içinde kullanılan `bundled-content-script.js` dosyasını oluşturmak için aşağıdaki komutu çalıştırın.
+
+```
+npm start // derleme dosyasının/dosyalarının oluşturulması ve kaydedilmesi sırasında çalışırken yeniden yüklenen bir dosya izleyicisini başlatmak için
+
+// ya da
+
+npm run build // derleme dosyasını/dosyalarını bir kez oluşturmak için
+```
+
+Tebrikler, artık geliştirmeye hazırsınız!
+
+Chrome uzantıları geliştirme konusunda yeniyseniz veya fazladan yardıma ihtiyacınız olursa lütfen [bu YouTube öğreticisi](https://www.youtube.com/watch?v=mdOj6HYE3_0)ne bakın.
+
+### Issue'lar
+
+#### Yeni bir issue başlatmak
+
+Uzantıyla ilgili herhangi bir sorununuz varsa, sorunun önceden bildirilmediğinden emin olmak için lütfen arama yapın. Eğer daha önce bildirilmediyse, bir konu açın. Sorun formunu kullanmanız şiddetle tavsiye edilir ancak zorunlu değildir.
+
+#### Bir issue'yu çözmek
+
+Çözebileceğinizi düşündüğünüz bir sorun bulduysanız, çekinmeyin. Düzeltmeyi içeren bir PR açın ve düzelttiğiniz sorunu belirttiğinizden emin olun.
+
+### Özellik Talebi
+
+#### Yeni bir özellik talebi açmak
+
+Uzantı hakkında bir fikriniz varsa, bir özellik isteği açmaktan çekinmeyin, ancak özelliğin daha önce önerilmediğinden emin olmak için lütfen önce arama yapın. Özellik formunun kullanılması şiddetle tavsiye edilir ancak zorunlu değildir.
+
+#### Bir özellik isteğini uygulamak
+
+Uygulayabileceğinizi düşündüğünüz bir özellik bulduysanız, çekinmeyin. Düzeltmeyi içeren bir PR açın ve uyguladığınız özelliği belirttiğinizden emin olun.
+
+### Hangi tür PR'leri kabul ediyoruz?
+
+- Sorun düzeltmeleri.
+- Özellik uygulaması.
+- Yazım hataları veya daha anlaşılabilir ve kullanımı daha kolay kelimeler.
+- Site katkıları.
diff --git a/CONTRIBUTINGuk.md b/CONTRIBUTINGuk.md
new file mode 100644
index 0000000..05d2ab4
--- /dev/null
+++ b/CONTRIBUTINGuk.md
@@ -0,0 +1,67 @@
+Read this in other languages: [English](CONTRIBUTING.md), [русский](CONTRIBUTINGru.md), [Français](CONTRIBUTINGfr.md), [Türkçe](CONTRIBUTINGtr.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 із виправленням і обов’язково вкажіть функцію, яку ви впроваджуєте.
+
+### Які Pull Request ми приймаємо?
+
+- Виправлення проблем.
+- Впровадження нових функцій.
+- Виправлення помилок та спрощення тексту.
+- Поліпшення сайту. \ No newline at end of file
diff --git a/Docs/FAQ.md b/Docs/FAQ.md
index d539b4f..feef01e 100644
--- a/Docs/FAQ.md
+++ b/Docs/FAQ.md
@@ -1,4 +1,4 @@
-Read this in other languages: [Français](FAQfr.md)
+Read this in other languages: [русский](FAQru.md), [Français](FAQfr.md), [Türkçe](FAQtr.md), [українська](FAQuk.md)
# Frequently Asked Questions
@@ -36,11 +36,11 @@ The backend will switch to using a combination of archived dislike stats, estima
### **5. How is the dislike count calculated?**
-RYD uses the votes from it's users to extrapolate the dislike count.
+RYD uses the votes from its users to extrapolate the dislike count.
- If the video was uploaded after the API was shut down:
- $$ \textup{RYD Dislike Count} = \left( \frac{\textup{RYD Users Like Count}}{\textup{RYD Users Dislike Count}} \right) \times \textup{Public Like Count} $$
+ $$ \textup{RYD Dislike Count} = \left( \frac{\textup{RYD Users Dislike Count}}{\textup{RYD Users Like Count}} \right) \times \textup{Public Like Count} $$
- If the RYD database somehow had the actual like and dislike count (provided by the uploader or from the archive), the dislike count will be calculated based on both - the users' votes and the archived value. The archived value will have less influence on the final count as it ages.
diff --git a/Docs/FAQfr.md b/Docs/FAQfr.md
index 76b481e..b53bb4f 100644
--- a/Docs/FAQfr.md
+++ b/Docs/FAQfr.md
@@ -1,4 +1,4 @@
-Lisez ceci dans d'autres langues : [English](FAQ.md)
+Lisez ceci dans d'autres langues : [English](FAQ.md), [русский](FAQru.md), [Türkçe](FAQtr.md), [українська](FAQuk.md)
# Foire Aux Questions
diff --git a/Docs/FAQru.txt b/Docs/FAQru.md
index 5c770df..f78f430 100644
--- a/Docs/FAQru.txt
+++ b/Docs/FAQru.md
@@ -1,21 +1,24 @@
-# Часто задаваемые вопросы
-## Прежде чем задать вопрос на GitHub или в Discord, пожалуйста, ознакомьтесь с этим.
-
-### **1. Откуда это расширение получает данные?**
-Комбинация API Google и старых данных.
-
-Мы сохраняем все имеющиеся данные в нашей базе данных, чтобы они были доступны после того, как Google прекратит подсчёт отметок «Не нравится» в своём API.
-
-### **2. Количество не понравившихся видео не обновляется**
-В настоящее время видео с отметками «Не нравится» кэшируются и обновляются не очень часто. Раз в 2-3 дня, не чаще.
-
-Да, это не идеально, но это то, что есть. Мы работаем над тем, чтобы улучшить частоту их обновления.
-
-### **3. Как это работает?**
-Расширение собирает идентификатор видео, которое вы смотрите, извлекает данные об отметках «Не нравится» (и другие поля, такие как просмотры, отметки «Нравится» и т.д.) с помощью нашего API, если видео было извлечено нашим API впервые, оно использует YouTube API для получения данных, затем сохраняет данные в базе данных для кэширования (кэшируются около 2-3 дней) и архивирования и возвращает их вам. После этого расширение отображает отметки «Не нравится» вам.
-
-### **4. Что произойдёт после того, как API YouTube перестанет возвращать данные о количестве отметок «Не нравится»?**
-Внутренняя часть нашего сервера переключится на использование комбинации архивных статистик отметок «Не нравится», оценок, экстраполированных из данных о пользователях расширения, и оценок, основанных на соотношении просмотров и отметок «Нравится» для видео, чьи отметки «Не нравится» не были заархивированы, и для устаревших архивов с отметками «Не нравится».
-
-## Я беспокоюсь о безопасности / конфиденциальности
-Более подробную информацию смотрите на [этой странице](SECURITY-FAQ.md). \ No newline at end of file
+Read this in other languages: [English](FAQ.md), [Français](FAQfr.md), [Türkçe](FAQtr.md), [українська](FAQuk.md)
+
+# Часто задаваемые вопросы
+
+## Прежде чем задать вопрос на GitHub или в Discord, пожалуйста, ознакомьтесь с этим.
+
+### **1. Откуда это расширение получает данные?**
+Комбинация API Google и старых данных.
+
+Мы сохраняем все имеющиеся данные в нашей базе данных, чтобы они были доступны после того, как Google прекратит подсчёт отметок «Не нравится» в своём API.
+
+### **2. Количество не понравившихся видео не обновляется**
+В настоящее время видео с отметками «Не нравится» кэшируются и обновляются не очень часто. Раз в 2-3 дня, не чаще.
+
+Да, это не идеально, но это то, что есть. Мы работаем над тем, чтобы улучшить частоту их обновления.
+
+### **3. Как это работает?**
+Расширение собирает идентификатор видео, которое вы смотрите, извлекает данные об отметках «Не нравится» (и другие поля, такие как просмотры, отметки «Нравится» и т.д.) с помощью нашего API, если видео было извлечено нашим API впервые, оно использует YouTube API для получения данных, затем сохраняет данные в базе данных для кэширования (кэшируются около 2-3 дней) и архивирования и возвращает их вам. После этого расширение отображает отметки «Не нравится» вам.
+
+### **4. Что произойдёт после того, как API YouTube перестанет возвращать данные о количестве отметок «Не нравится»?**
+Внутренняя часть нашего сервера переключится на использование комбинации архивных статистик отметок «Не нравится», оценок, экстраполированных из данных о пользователях расширения, и оценок, основанных на соотношении просмотров и отметок «Нравится» для видео, чьи отметки «Не нравится» не были заархивированы, и для устаревших архивов с отметками «Не нравится».
+
+## Я беспокоюсь о безопасности / конфиденциальности
+Более подробную информацию смотрите на [этой странице](SECURITY-FAQ.md).
diff --git a/Docs/FAQtr.md b/Docs/FAQtr.md
new file mode 100644
index 0000000..bd4fb97
--- /dev/null
+++ b/Docs/FAQtr.md
@@ -0,0 +1,61 @@
+Bunu diğer dillerde okuyun: [English](FAQ.md), [русский](FAQru.md), [Français](FAQfr.md), [українська](FAQuk.md)
+
+# Sıkça Sorulan Sorular
+
+## GitHub'da veya Discord'da bir soru sormadan önce, lütfen buraya göz atın.
+
+<br>
+
+### **1. Bu uzantı verileri nereden alıyor?**
+
+Google API'lerinin ve kazınmış verilerin bir kombinasyonu.
+
+Google, API'lerinde dislike sayılarını kapattıktan sonra kullanılabilir olması için mevcut tüm verileri DB'mize kaydederiz.
+
+<br>
+
+### **2. Video'nun dislike sayısı güncellenmiyor**
+
+Şu anda video dislike'ları önbelleğe alınır ve çok sık güncellenmez. Her 2-3 günde bir, daha sık değil.
+
+Evet, ideal değil, ama olan bu. Bunları nasıl daha sık güncelleyebileceğimizi öğrenmeye çalışıyoruz.
+
+<br>
+
+### **3. Bu uzantı nasıl çalışıyor?**
+
+Uzantı, izlediğiniz videonun video kimliğini alır, dislike'larını (ve görüntülemeleri, like'ları vb. diğer alanları) API'mizi kullanarak getirir; video, API'miz tarafından ilk kez getiriliyorsa YouTube API'sini kullanır. Verileri almak için, verileri önbelleğe alma (yaklaşık 2-3 gün önbelleğe alınır) ve arşivleme amacıyla bir veritabanında saklanır ve size geri döndürülür. Uzantı daha sonra size dislike'ları gösterir.
+
+<br>
+
+### **4. YouTube API'si, dislike sayısını döndürmeyi durdurduğunda ne olacak?**
+
+Backend, arşivlenmiş dislike istatistikleri, uzantı kullanıcı verilerinden tahmin edilen tahminler ve like'ları arşivlenmemiş videolar ve eski dislike arşivleri için izlenme/like oranlarına dayalı tahminlerin bir kombinasyonunu kullanmaya geçecektir.
+
+<br>
+
+### **5. Dislike sayısı nasıl hesaplanıyor?**
+
+YDS, dislike sayısını tahmin etmek için kullanıcılarının oylarını kullanır.
+
+- Video, API kapatıldıktan sonra yüklendiyse:
+
+ $$ \textup{YDS'nin Dislike Sayısı} = \left( \frac{\textup{YDS Kullanıcılarının Like Sayısı}}{\textup{YDS Kullanıcılarının Dislike Sayısı}} \right) \times \textup{Halka Açık Like Sayısı} $$
+
+- YDS veritabanı bir şekilde gerçek like ve dislike sayısına sahipse (yükleyici tarafından veya arşivden sağlanır), dislike sayısı hem kullanıcıların oyları hem de arşivlenen değer temelinde hesaplanacaktır. Arşivlenen değer, eskidikçe son sayım üzerinde daha az etkiye sahip olacaktır.
+
+<br>
+
+---
+
+Bu video şeklinde
+
+[![IReturn YouTube Dislike Explained](https://yt-embed.herokuapp.com/embed?v=GSmmtv-0yYQ)](https://www.youtube.com/watch?v=GSmmtv-0yYQ)
+
+---
+
+<br>
+
+## Gizlilik / güvenlik hakkında endişelerim var
+
+Daha fazla bilgi için [bu sayfa](SECURITY-FAQtr.md)ya göz atın.
diff --git a/Docs/FAQuk.md b/Docs/FAQuk.md
new file mode 100644
index 0000000..0c4812a
--- /dev/null
+++ b/Docs/FAQuk.md
@@ -0,0 +1,61 @@
+Read this in other languages: [English](FAQ.md), [русский](FAQru.md), [Français](FAQfr.md), [Türkçe](FAQtr.md)
+
+# Часті питання
+
+## Перш ніж задавати питання на GitHub або у Discord, будь ласка, ознайомтеся з цим.
+
+<br>
+
+### **1. Звідки це розширення отримує дані?**
+
+Комбінація Google API та старих даних.
+
+Ми зберігаємо всі доступні дані в нашій базі, аби вони були доступні після того, як Google вимкне лічильник відміток «Не подобається» у своєму API.
+
+<br>
+
+### **2. Лічильник «Не подобається» не оновлюється**
+
+Наразі відео з відмітками «Не подобається» кешуються і оновлюються не надто часто. Не частіше, ніж раз в 2-3 дні.
+
+Так, це не ідеально, але маємо те, що маємо. Ми працюємо над тим, щоб збільшити частоту їх оновлення.
+
+<br>
+
+### **3. Як це працює?**
+
+Розширення отримує ID відео, яке ви переглядаєте, та дізнається кількість відміток «Не подобається» (та інші дані: перегляди, відмітки «Подобається» тощо) за допомогою нашого API, якщо відео було витягнуте нашим API вперше, воно використовує YouTube API для отримання даних, потім зберігає дані в базі даних для кешування (кешуються близько 2-3 днів) та архівування й повертає їх вам. Після цього розширення відображає відмітки «Не подобається» вам.
+
+<br>
+
+### **4. Що станеться після того, як YouTube API перестане повертати кількість відміток «Не подобається»?**
+
+Сервер перейде на використання комбінації заархівованих статистичних даних відміток «Не подобається» екстрапольованих із даними .
+
+<br>
+
+### **5. Як розраховується кількість відміток «Не подобається»?**
+
+RYD використовує відмітки своїх користувачів, щоб екстраполювати кількість відміток «Не подобається».
+
+- Якщо відео було завантажено після вимкнення API:
+
+ $$ \textup{К-ть відміток «Не подобається» у RYD} = \left( \frac{\textup{К-ть відміток «Подобається» серед користувачів RYD}}{\textup{К-ть відміток «Не подобається» серед користувачів RYD}} \right) \times \textup{Публічна к-ть відміток «Подобається»} $$
+
+- Якщо база даних RYD якимось чином мала фактичну кількість відміток «Подобається» та «Не подобається» (надану завантажувачем або з архіву), кількість відміток «Не подобається» буде розраховано на основі відміток користувачів і архівного значення. Архівне значення матиме менший вплив на остаточний підрахунок у міру актуальності.
+
+<br>
+
+---
+
+Це все, але у відео форматі
+
+[![IReturn YouTube Dislike Explained](https://yt-embed.herokuapp.com/embed?v=GSmmtv-0yYQ)](https://www.youtube.com/watch?v=GSmmtv-0yYQ)
+
+---
+
+<br>
+
+## Я турбуюся про безпеку/конфіденційність
+
+Детальніше про це дивіться [тут](SECURITY-FAQuk.md). \ No newline at end of file
diff --git a/Docs/SECURITY-FAQ.md b/Docs/SECURITY-FAQ.md
index dfbbbca..a414b1f 100644
--- a/Docs/SECURITY-FAQ.md
+++ b/Docs/SECURITY-FAQ.md
@@ -1,4 +1,4 @@
-Read this in other languages: [Français](SECURITY-FAQfr.md)
+Read this in other languages: [русский](SECURITY-FAQru.md), [Français](SECURITY-FAQfr.md), [Türkçe](SECURITY-FAQtr.md), [українська](SECURITY-FAQuk.md)
# Security
diff --git a/Docs/SECURITY-FAQfr.md b/Docs/SECURITY-FAQfr.md
index 877a95a..f191b09 100644
--- a/Docs/SECURITY-FAQfr.md
+++ b/Docs/SECURITY-FAQfr.md
@@ -1,8 +1,8 @@
-Lisez ceci dans d'autres langues : [English](SECURITY-FAQ.md)
+Lisez ceci dans d'autres langues : [English](SECURITY-FAQ.md), [русский](SECURITY-FAQru.md), [Türkçe](SECURITY-FAQtr.md), [українська](SECURITY-FAQuk.md)
# Sécurité
-### Est-ce que vous traquer l'historique des vidéos que je visionne ?
+### Est-ce que vous traquez 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.
diff --git a/Docs/SECURITY-FAQru.md b/Docs/SECURITY-FAQru.md
index 3452699..d746b3c 100644
--- a/Docs/SECURITY-FAQru.md
+++ b/Docs/SECURITY-FAQru.md
@@ -1,4 +1,4 @@
-Прочитать на других языках: [English](SECURITY-FAQ.md)
+Прочитать на других языках: [English](SECURITY-FAQ.md), [Français](SECURITY-FAQfr.md), [Türkçe](SECURITY-FAQtr.md), [українська](SECURITY-FAQuk.md)
# Безопасность
diff --git a/Docs/SECURITY-FAQtr.md b/Docs/SECURITY-FAQtr.md
new file mode 100644
index 0000000..642e253
--- /dev/null
+++ b/Docs/SECURITY-FAQtr.md
@@ -0,0 +1,31 @@
+Read this in other languages: [English](SECURITY-FAQ.md), [русский](SECURITY-FAQru.md), [Français](SECURITY-FAQfr.md), [українська](SECURITY-FAQuk.md)
+
+# Güvenlik
+
+### İzleme geçmişimi takip ediyor musunuz?
+
+Hayır. Uzantının kodu herkese açıktır ve kendiniz görebilirsiniz. Gönderilen tek bilgi, videolar için dislike sayısını almak için gereken video kimliğidir. Gönderilen başka bir ek header yoktur. İletişim katmanı üzerinden, genel IP'niz sunucuya ve isteğin yapıldığı zamana maruz kalacaktır. Ancak, bunların hiçbiri sizi hiçbir şekilde benzersiz bir şekilde tanımlamıyor. Sıfır güven ortamını varsayarsak, elde edebileceğimizin en iyisi dinamik bir IP'dir. Ki, bu IP bugün sizin, yarın komşunuzun olabilir. IP'nizin izlenmesinden gerçekten endişeleniyorsanız, muhtemelen zaten bir VPN kullanıyorsunuzdur.
+
+### Bir videoya dislike atarsam, beni benzersiz bir şekilde tanımlayabilir misiniz?
+
+Evet. Bir videoya dislike attığınızda, sizin için Google hesabınızla bağlantılı olmayan rastgele oluşturulmuş benzersiz bir kimlik oluştururuz. Bu, bot kullanılmasını önlemek için yapılır. Ancak bu rastgele kimliği, size veya kişisel YouTube hesabınıza bağlamanın bir yolu yoktur.
+
+### Tam olarak hangi bilgilere sahipsiniz, gerçekten?
+
+Sadece video ID'si. Yorumlarınızı değil, kullanıcı adınızı değil, videoyu kiminle paylaştığınız değil, ek meta verilerinden hiçbiri değil. Hiç bir şey. Sadece video ID'si.
+
+### IP adresim nasıl saklanıyor?
+
+Backend, karma olmayan IP adreslerini yalnızca geçici bellekte (RAM'de) tutar. Bu adresler, bir sabit sürücüde depolanmaz ve bu nedenle günlüğe kaydedilmez. IP adreslerini hash ederiz ve bunun yerine depolanır. Bu, veri tabanı vandalizmini önlemek için yapılır.
+
+### OAuth üzerinden YouTube hesabıma erişmek konusunda bazı tartışmalar duydum!
+
+Bu özellik isteğe bağlı olacak ve çok fazla tercih edilecek. Bir YouTube içerik üreticisiyseniz ve dislike istatistiklerinizi bizimle paylaşmak istiyorsanız, bunu yapabilirsiniz. [OAuth](https://en.wikipedia.org/wiki/OAuth#:~:text=but%20without%20giving%20them%20the%20passwords.) yapılandırılma şekli, aslında çok güvenlidir. Hesabınıza erişimi istediğiniz zaman iptal edebilir ve bize çok özel izinler verebilirsiniz. Gerekli olmayan herhangi bir izini istemeyeceğiz. Yalnızca video istatistiklerinizi görüntülemek için izin isteyeceğiz.
+
+### Bu dislike sayısına nasıl güvenebilirim?
+
+Bot saldırılarını önlemek için önlemler aldık ve bot önleme sisteminin etkinliğini arttırmak için çalışmaya devam edeceğiz: bu, dislike sayısını gerçek sayının iyi bir temsilcisi olarak tutmamıza yardımcı olacaktır. Tabii ki hiçbir zaman %100 doğru olmayacaktır, bu yüzden sayıma güvenip güvenmemek size kalmıştır.
+
+### Neden backend kodunu paylaşmıyorsunuz?
+
+Bir noktada paylaşacağız - ama şu anda paylaşmak için ortada gerçekten gerçek bir sebep yok. Yanlış bir güvenlik hissi verebilir - çünkü sıfır güvenli bir sistemde, bir sürümü ifşa edebilir, ancak bir başkasını devreye alabiliriz. Özellikle spam ile nasıl mücadele ettiğimiz gibi, kodu gizli tutmak için birçok neden vardır. İstenmeyen posta işleme kodunu örtmek/gizlemek oldukça standart bir uygulamadır.
diff --git a/Docs/SECURITY-FAQuk.md b/Docs/SECURITY-FAQuk.md
new file mode 100644
index 0000000..4d18acc
--- /dev/null
+++ b/Docs/SECURITY-FAQuk.md
@@ -0,0 +1,31 @@
+Read this in other languages: [English](SECURITY-FAQ.md), [русский](SECURITY-FAQru.md), [Français](SECURITY-FAQfr.md), [Türkçe](SECURITY-FAQtr.md)
+
+# Безпека
+
+### Ви відстежуєте мою історію переглядів?
+
+Ні. Код розширення знаходиться у відкритому доступі, і ви можете ознайомитись з ним самостійно. Єдина інформація, що передається - це ID відео, який необхідний для отримання даних про кількість відміток. Жодних додаткових заголовків не передається. На комунікаційному рівні серверу буде передано вашу публічну IP-адресу, а також час, коли було зроблено запит. Однак ніщо з цього ніяк не здатно вас ідентифіквати. Припускаючи середовище з нульовою довірою, найцінніше, що ми можемо отримати це динамічний IP. Який сьогодні ваш, а завтра – вашого сусіда. Якщо ви дійсно турбуєтеся про те, що ваш IP може бути відстежений, ви, ймовірно, вже використовуєте якийсь VPN.
+
+### Чи можете ви однозначно ідентифікувати мене, коли я залишаю відмітку «Не подобається»?
+
+Так. Коли ви залишаєте відео позначку «Не подобається», ми створюємо для вас випадковий унікальний ID, який не прив'язаний до вашого облікового запису Google. Це робиться для уникнення атаки ботів. Але немає жодного способу зв'язати цей випадковий ID до вас або вашого особистого облікового запису YouTube.
+
+### Якою саме інформацією ви володієте?
+
+Лише ID відео. Ні ваших коментарів, ні вашого імені користувача, ні того, з ким ви поділилися відео, ні будь-яких інших додаткових метаданих. Нічого. Лише ID відео.
+
+### Як зберігається моя IP-адреса?
+
+Внутрішня частина нашого сервера зберігає нехешовані IP-адреси лише в енергозалежній пам'яті (ОЗП). Ці адреси не зберігаються на жорсткому диску і тому ніде не записані. Ми хешуємо IP-адреси, і вони зберігаються замість інших. Це зроблено для запобігання вандалізму у базі даних.
+
+### Я чув дискусію щодо OAuth і доступу до мого облікового запису YouTube!
+
+Ця функція буде необов'язковою та дуже необхідною. Якщо ви творець YouTube і хочете поділитися з нами кількістю ваших відміток «Не подобається», ви зможете це зробити. За структурою [OAuth](https://uk.wikipedia.org/wiki/OAuth#:~:text=%D0%B1%D0%B5%D0%B7%20%D0%BD%D0%B5%D0%BE%D0%B1%D1%85%D1%96%D0%B4%D0%BD%D0%BE%D1%81%D1%82%D1%96%20%D0%B2%D0%B2%D0%BE%D0%B4%D1%83%20%D1%96%D0%BC%D0%B5%D0%BD%D1%96%20%D0%BA%D0%BE%D1%80%D0%B8%D1%81%D1%82%D1%83%D0%B2%D0%B0%D1%87%D0%B0%20%D1%82%D0%B0%20%D0%BF%D0%B0%D1%80%D0%BE%D0%BB%D1%8E) надбезпечний. Ви зможете відкликати доступ до свого облікового запису в будь-яку мить, і зможете дати нам обмежені дозволи. Ми не будемо вимагати жодних дозволів, крім необжідних. Ми будемо вимагати лише дозволи перегляду статистики ваших відео.
+
+### Наскільки достовірна ця кількость відміток «Не подобається»?
+
+Ми вжили заходів щодо запобігання атакам ботів і збираємося продовжувати працювати над підвищенням ефективності цієї сисеми надалі: це допоможе нам зберегти підрахунок відміток «Не подобається» як хороше представлення фактичної кількості. Звичайно, він ніколи не буде точним на всі 100%, тож ви самі вирішуєте, довіряти йому чи ні.
+
+### Чому б вам не поділитися внутрішнім кодом вашого сервера?
+
+Ми поділимося ним у якийсь момент – але зараз немає жодних причин це робити. Це дасть хибне почуття безпеки - адже в системі з нульовою довірою ми можемо з таким самим успіхом поділитися однією версією, але розгорнути іншу. Є багато причин тримати код у таємниці, зокрема, як ми боремося зі спамом. Приховування та затьмарення коду обробки спаму є доволі стандартною практикою. \ No newline at end of file
diff --git a/Docs/readme.md b/Docs/readme.md
index b6949e0..4eac3b4 100644
--- a/Docs/readme.md
+++ b/Docs/readme.md
@@ -1,4 +1,4 @@
-Read this in other languages: [Français](readmefr.md)
+Read this in other languages: [Français](readmefr.md), [Türkçe](READMEtr.md)
**Contents**
diff --git a/Docs/readmefr.md b/Docs/readmefr.md
index de9280e..bfb868d 100644
--- a/Docs/readmefr.md
+++ b/Docs/readmefr.md
@@ -1,4 +1,4 @@
-Lisez ceci dans d'autres langues : [English](readme.md)
+Lisez ceci dans d'autres langues : [English](readme.md), [Türkçe](READMEtr.md)
**Contenu**
diff --git a/Docs/readmetr.md b/Docs/readmetr.md
new file mode 100644
index 0000000..6ddf91e
--- /dev/null
+++ b/Docs/readmetr.md
@@ -0,0 +1,39 @@
+Read this in other languages: [English](readme.md), [Français](readmefr.md)
+
+**İçerikler**
+
+- [Rehberler](#rehberler)
+- [SSS'ler](#sss'ler)
+<!-- - [SSS'ler](#sss'ler)
+- [Diğer Listeler](#diğer-listeler) -->
+
+<br>
+
+## Rehberler
+
+- [İndirme, Yükleme ve Kullanma](https://github.com/Anarios/return-youtube-dislike/wiki/Downloading,-Installing-&-Using)
+- [Sorun Giderme](https://github.com/Anarios/return-youtube-dislike/wiki/Troubleshooting-Guide)
+<!-- - [SSS](FAQtr.md)
+- [Hata Raporları Ne Zaman ve Nasıl Bildirilir](Guide__Bug_Reporting.md)
+- [Katkı sağlama](https://github.com/Anarios/return-youtube-dislike/blob/main/CONTRIBUTINGtr.md) -->
+<!-- - [Wiki nasıl güncellenir](/) -->
+
+<br>
+
+## SSS'ler
+
+- [Genel](https://github.com/Anarios/return-youtube-dislike/blob/main/Guides/FAQtr.md)
+- [Güvenlik](https://github.com/Anarios/return-youtube-dislike/blob/main/Guides/SECURITY-FAQtr.md)
+
+<!-- - [Gizlilik](FAQ_Privacy.md)
+- [Teknik](FAQ_Technical.md)
+- [Üreticiler](FAQ_Creators.md)
+
+<br>
+
+## Diğer Listeler
+
+- [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/Extensions/UserScript/Return Youtube Dislike.user.js b/Extensions/UserScript/Return Youtube Dislike.user.js
index b9ffa27..f3062fa 100644
--- a/Extensions/UserScript/Return Youtube Dislike.user.js
+++ b/Extensions/UserScript/Return Youtube Dislike.user.js
@@ -58,6 +58,9 @@ function isInViewport(element) {
const height = innerHeight || document.documentElement.clientHeight;
const width = innerWidth || document.documentElement.clientWidth;
return (
+ // When short (channel) is ignored, the element (like/dislike AND short itself) is
+ // hidden with a 0 DOMRect. In this case, consider it outside of Viewport
+ !(rect.top == 0 && rect.left == 0 && rect.bottom == 0 && rect.right == 0) &&
rect.top >= 0 &&
rect.left >= 0 &&
rect.bottom <= height &&
@@ -97,7 +100,8 @@ function getLikeButton() {
function getLikeTextContainer() {
return (
getLikeButton().querySelector("#text") ??
- getLikeButton().getElementsByTagName("yt-formatted-string")[0]
+ getLikeButton().getElementsByTagName("yt-formatted-string")[0] ??
+ getLikeButton().querySelector("span[role='text']")
);
}
@@ -219,20 +223,29 @@ function setDislikes(dislikesCount) {
mobileDislikes = dislikesCount;
return;
}
+ getDislikeTextContainer()?.removeAttribute('is-empty');
getDislikeTextContainer().innerText = dislikesCount;
}
function getLikeCountFromButton() {
- if (isShorts()) {
- //Youtube Shorts don't work with this query. It's not nessecary; we can skip it and still see the results.
- //It should be possible to fix this function, but it's not critical to showing the dislike count.
+ try {
+ if (isShorts()) {
+ //Youtube Shorts don't work with this query. It's not necessary; we can skip it and still see the results.
+ //It should be possible to fix this function, but it's not critical to showing the dislike count.
+ return false;
+ }
+ let likeButton = getLikeButton()
+ .querySelector("yt-formatted-string#text") ??
+ getLikeButton().querySelector("button");
+
+ let likesStr = likeButton.getAttribute("aria-label")
+ .replace(/\D/g, "");
+ return likesStr.length > 0 ? parseInt(likesStr) : false;
+ }
+ catch {
return false;
}
- let likesStr = getLikeButton()
- .querySelector("yt-formatted-string#text")
- .getAttribute("aria-label")
- .replace(/\D/g, "");
- return likesStr.length > 0 ? parseInt(likesStr) : false;
+
}
(typeof GM_addStyle != "undefined"
diff --git a/Extensions/combined/_locales/sv_SE/messages.json b/Extensions/combined/_locales/sv_SE/messages.json
new file mode 100644
index 0000000..7ed2ce8
--- /dev/null
+++ b/Extensions/combined/_locales/sv_SE/messages.json
@@ -0,0 +1,134 @@
+{
+ "extensionName": {
+ "message": "Return YouTube Dislike"
+ },
+ "extensionNameBeta": {
+ "message": "Return YouTube Dislike Beta"
+ },
+ "extensionDesc": {
+ "message": "Återställer förmågan att se ogilla"
+ },
+ "textDeveloper": {
+ "message": "av Dmitry Selivanov & Community"
+ },
+ "linkWebsite": {
+ "message": "Hemsida"
+ },
+ "linkFAQ": {
+ "message": "FAQ"
+ },
+ "linkDonate": {
+ "message": "Donera"
+ },
+ "linkHelp": {
+ "message": "Hjälp"
+ },
+ "linkChangelog": {
+ "message": "Ändringslogg"
+ },
+ "legendSettings": {
+ "message": "Inställningar"
+ },
+ "textSettings": {
+ "message": "Inaktivera gilla-/ogilla-inskickningar"
+ },
+ "textLikesDisabled": {
+ "message": "Inaktiverad av ägaren"
+ },
+ "textSettingsHover": {
+ "message": "Slutar räkna dina gilla och ogilla."
+ },
+ "textRoundingNumbers": {
+ "message": "Avrunda statistiken neråt för gilla/ogilla (standard YouTube-beteende)"
+ },
+ "textRoundingNumbersHover": {
+ "message": "Visa avrundad statistik."
+ },
+ "textConsistentFormat": {
+ "message": "Gör formatet på gilla och ogilla konsekvent"
+ },
+ "textConsistentFormatHover": {
+ "message": "Omformatera som siffror."
+ },
+ "textNumberFormat": {
+ "message": "Sifforformat:"
+ },
+ "textColorizeRatioBar": {
+ "message": "Färgsätt förhållandefältet"
+ },
+ "textColorizeRatioBarHover": {
+ "message": "Använd anpassade färger för förhållandefältet."
+ },
+ "textColorizeThumbs": {
+ "message": "Färglägg tummarna"
+ },
+ "textColorizeThumbsHover": {
+ "message": "Använd anpassade färger för tumikoner."
+ },
+ "textColorTheme": {
+ "message": "Färgtema:"
+ },
+ "textColorTheme1": {
+ "message": "Klassisk"
+ },
+ "textColorTheme2": {
+ "message": "Tillgänglig"
+ },
+ "textColorTheme3": {
+ "message": "Neon"
+ },
+ "textTempUnavailable": {
+ "message": "Tillfälligt otillgänglig"
+ },
+ "textUpdate": {
+ "message": "Uppdatera till"
+ },
+ "version30installed": {
+ "message": "Version 3.0.0.1 installerad"
+ },
+ "whatsnew": {
+ "message": "Vad är nytt"
+ },
+ "shortsSupport": {
+ "message": "YouTube Shorts Support"
+ },
+ "customColors": {
+ "message": "Anpassade färger för knappar och fältet ogilla"
+ },
+ "customNumberFormats": {
+ "message": "Anpassade sifforformat"
+ },
+ "considerDonating": {
+ "message": "Det enda som håller tillägget i gång är dina donationer, överväg att stöda projektet."
+ },
+ "roundNumbers": {
+ "message": "Visa avrundade siffror"
+ },
+ "roundNumbersHover": {
+ "message": "Avrunda siffrorna neråt (standard YouTube-beteende)."
+ },
+ "reformatLikes": {
+ "message": "Omformatera som siffror"
+ },
+ "reformatLikesHover": {
+ "message": "Gör formatet på gilla och ogilla konsekvent."
+ },
+ "numberFormat": {
+ "message": "Sifforformat:"
+ },
+ "colorizeRatio": {
+ "message": "Färgsätt förhållandefältet"
+ },
+ "colorizeRatioHover": {
+ "message": "Använd anpassade färger för förhållandefältet."
+ },
+ "colorizeThumbs": {
+ "message": "Färglägg tummarna"
+ },
+ "colorizeThumbsHover": {
+ "message": "Använd anpassade färger för tumikoner."
+ },
+ "colorTheme": {
+ "message": "Färgtema:"
+ }
+}
diff --git a/Extensions/combined/_locales/tr/messages.json b/Extensions/combined/_locales/tr/messages.json
index d2b2f89..c7204a7 100644
--- a/Extensions/combined/_locales/tr/messages.json
+++ b/Extensions/combined/_locales/tr/messages.json
@@ -23,6 +23,9 @@
"linkHelp": {
"message": "Yardım"
},
+ "linkChangelog": {
+ "message": "Değişim Günlüğü"
+ },
"legendSettings": {
"message": "Ayarlar"
},
@@ -30,16 +33,55 @@
"message": "Like/dislike gönderimini devre dışı bırak"
},
"textLikesDisabled": {
- "message": "sahibi tarafından devre dışı bırakıldı"
+ "message": "Sahibi tarafından devre dışı bırakıldı"
},
"textSettingsHover": {
- "message": "Like'larınızı ve dislike'larınızı saymayı bırakır."
+ "message": "Like ve dislike'larınızı saymayı bırakır."
+ },
+ "textRoundingNumbers": {
+ "message": "Like/dislike istatisliklerini aşağıya yuvarlar (varsayılan YouTube davranışı)"
+ },
+ "textRoundingNumbersHover": {
+ "message": "Yuvarlatılmış istatistikleri göster."
+ },
+ "textConsistentFormat": {
+ "message": "Like ve dislike tarzını tutarlı hâle getirir"
+ },
+ "textConsistentFormatHover": {
+ "message": "Like sayılarının tarzını yenileştir."
+ },
+ "textNumberFormat": {
+ "message": "Sayı tarzı:"
+ },
+ "textColorizeRatioBar": {
+ "message": "Beğeni oranı çubuğunu renklendir"
+ },
+ "textColorizeRatioBarHover": {
+ "message": "Oran çubuğu için özel renkler kullanın."
+ },
+ "textColorizeThumbs": {
+ "message": "Butonları renklendir"
+ },
+ "textColorizeThumbsHover": {
+ "message": "Buton simgeleri için özel renkler kullanın."
+ },
+ "textColorTheme": {
+ "message": "Renk teması:"
+ },
+ "textColorTheme1": {
+ "message": "Klasik"
+ },
+ "textColorTheme2": {
+ "message": "Anlaşılır"
+ },
+ "textColorTheme3": {
+ "message": "Neon"
},
"textTempUnavailable": {
- "message": "geçici olarak kullanım dışı"
+ "message": "Geçici Olarak Kullanım Dışı"
},
"textUpdate": {
- "message": "şu sürüme güncelle"
+ "message": "Şu sürüme güncelle"
},
"version30installed": {
"message": "Sürüm 3.0.0.1 yüklendi"
@@ -58,5 +100,35 @@
},
"considerDonating": {
"message": "Uzantının var olmasını sağlayan tek şey bağışlarınızdır, lütfen projeyi desteklemeyi düşünün."
+ },
+ "roundNumbers": {
+ "message": "Aşağı yuvarlanmış sayıları gösterir"
+ },
+ "roundNumbersHover": {
+ "message": "Sayıları aşağıya yuvarla (varsayılan YouTube davranışı)."
+ },
+ "reformatLikes": {
+ "message": "Like sayılarının tarzını yenileştir"
+ },
+ "reformatLikesHover": {
+ "message": "Like ve dislike tarzını tutarlı hâle getirir."
+ },
+ "numberFormat": {
+ "message": "Sayı tarzı:"
+ },
+ "colorizeRatio": {
+ "message": "Beğeni oranı çubuğunu renklendir"
+ },
+ "colorizeRatioHover": {
+ "message": "Beğeni oranı çubuğu için özel renkler kullanın."
+ },
+ "colorizeThumbs": {
+ "message": "Butonları renklendir"
+ },
+ "colorizeThumbsHover": {
+ "message": "Buton simgeleri için özel renkler kullan."
+ },
+ "colorTheme": {
+ "message": "Renk teması:"
}
}
diff --git a/Extensions/combined/_locales/uk/messages.json b/Extensions/combined/_locales/uk/messages.json
new file mode 100644
index 0000000..4919c6e
--- /dev/null
+++ b/Extensions/combined/_locales/uk/messages.json
@@ -0,0 +1,134 @@
+{
+ "extensionName": {
+ "message": "Return YouTube Dislike"
+ },
+ "extensionNameBeta": {
+ "message": "Return YouTube Dislike Beta"
+ },
+ "extensionDesc": {
+ "message": "Повертає здатність бачити відмітки «Не подобається»"
+ },
+ "textDeveloper": {
+ "message": "від Дмитра Селіванова та спільноти"
+ },
+ "linkWebsite": {
+ "message": "Вебсайт"
+ },
+ "linkFAQ": {
+ "message": "ЧаПи"
+ },
+ "linkDonate": {
+ "message": "Підтримати"
+ },
+ "linkHelp": {
+ "message": "Допомога"
+ },
+ "linkChangelog": {
+ "message": "Журнал змін"
+ },
+ "legendSettings": {
+ "message": "Налаштування"
+ },
+ "textSettings": {
+ "message": "Вимкнути надсилання відміток"
+ },
+ "textLikesDisabled": {
+ "message": "Вимкнуто власником"
+ },
+ "textSettingsHover": {
+ "message": "Вимикає надсилання відміток «Подобається»/«Не подобається»."
+ },
+ "textRoundingNumbers": {
+ "message": "Округлює значення відміток (стандартний параметр YouTube)"
+ },
+ "textRoundingNumbersHover": {
+ "message": "Показувати заокруглені значення."
+ },
+ "textConsistentFormat": {
+ "message": "Зробить формат «Подобається» та «Не подобається» однаковим"
+ },
+ "textConsistentFormatHover": {
+ "message": "Форматувати як числа."
+ },
+ "textNumberFormat": {
+ "message": "Формат значень:"
+ },
+ "textColorizeRatioBar": {
+ "message": "Обрати кольори стрічки співвідношення"
+ },
+ "textColorizeRatioBarHover": {
+ "message": "Змінює кольори стрічки співвідношення на обрані вами."
+ },
+ "textColorizeThumbs": {
+ "message": "Обрати кольори відміток"
+ },
+ "textColorizeThumbsHover": {
+ "message": "Змінює кольори піктограм відміток на обрані вами."
+ },
+ "textColorTheme": {
+ "message": "Кольорова схема:"
+ },
+ "textColorTheme1": {
+ "message": "Класика"
+ },
+ "textColorTheme2": {
+ "message": "Доступність"
+ },
+ "textColorTheme3": {
+ "message": "Неон"
+ },
+ "textTempUnavailable": {
+ "message": "Тимчасово недоступно"
+ },
+ "textUpdate": {
+ "message": "Оновлення до"
+ },
+ "version30installed": {
+ "message": "Версію 3.0.0.1 встановлено"
+ },
+ "whatsnew": {
+ "message": "Що нового"
+ },
+ "shortsSupport": {
+ "message": "Підтримка YouTube Shorts"
+ },
+ "customColors": {
+ "message": "Користувальницькі кольори стрічки співвідношення та кнопок"
+ },
+ "customNumberFormats": {
+ "message": "Користувацькі формати значень"
+ },
+ "considerDonating": {
+ "message": "Розширення досі існує лише за допомогою ваших пожертв, будь ласка, підтримайте проєкт."
+ },
+ "roundNumbers": {
+ "message": "Показувати заокруглені значення"
+ },
+ "roundNumbersHover": {
+ "message": "Округлює значення відміток (стандартний параметр YouTube)"
+ },
+ "reformatLikes": {
+ "message": "Форматувати як числа"
+ },
+ "reformatLikesHover": {
+ "message": "Зробить формат «Подобається» та «Не подобається» однаковим"
+ },
+ "numberFormat": {
+ "message": "Формат значень:"
+ },
+ "colorizeRatio": {
+ "message": "Обрати кольори стрічки співвідношення"
+ },
+ "colorizeRatioHover": {
+ "message": "Змінює кольори стрічки співвідношення на обрані вами.."
+ },
+ "colorizeThumbs": {
+ "message": "Обрати кольори відміток"
+ },
+ "colorizeThumbsHover": {
+ "message": "Змінює кольори піктограм відміток на обрані вами."
+ },
+ "colorTheme": {
+ "message": "Кольорова схема:"
+ }
+}
diff --git a/Extensions/combined/content-style.css b/Extensions/combined/content-style.css
index d8da7db..4e53f87 100644
--- a/Extensions/combined/content-style.css
+++ b/Extensions/combined/content-style.css
@@ -30,12 +30,21 @@
}
.ryd-tooltip {
- position: relative;
display: block;
height: 2px;
+}
+
+.ryd-tooltip-old-design {
+ position: relative;
top: 9px;
}
+.ryd-tooltip-new-design {
+ position: absolute;
+ bottom: -10px;
+ left: -4px;
+}
+
.ryd-tooltip-bar-container {
width: 100%;
height: 2px;
@@ -44,3 +53,12 @@
padding-bottom: 12px;
top: -6px;
}
+
+/* required to make the ratio bar visible in the new design */
+ytd-menu-renderer.ytd-watch-metadata {
+ overflow-y: visible !important;
+}
+
+#top-level-buttons-computed {
+ position: relative !important;
+}
diff --git a/Extensions/combined/manifest-chrome.json b/Extensions/combined/manifest-chrome.json
index 95fe7e9..dddd2f6 100644
--- a/Extensions/combined/manifest-chrome.json
+++ b/Extensions/combined/manifest-chrome.json
@@ -2,7 +2,7 @@
"name": "__MSG_extensionName__",
"description": "__MSG_extensionDesc__",
"default_locale": "en",
- "version": "3.0.0.4",
+ "version": "3.0.0.6",
"manifest_version": 3,
"background": {
"service_worker": "ryd.background.js"
diff --git a/Extensions/combined/manifest-firefox.json b/Extensions/combined/manifest-firefox.json
index efb42a4..3ce248f 100644
--- a/Extensions/combined/manifest-firefox.json
+++ b/Extensions/combined/manifest-firefox.json
@@ -2,7 +2,7 @@
"name": "__MSG_extensionName__",
"description": "__MSG_extensionDesc__",
"default_locale": "en",
- "version": "3.0.0.5",
+ "version": "3.0.0.7",
"manifest_version": 2,
"background": {
"scripts": ["ryd.background.js"]
diff --git a/Extensions/combined/readme.md b/Extensions/combined/readme.md
index 0818eb3..faee230 100644
--- a/Extensions/combined/readme.md
+++ b/Extensions/combined/readme.md
@@ -6,7 +6,7 @@
<ol>
<li>Go to the root directory of the project</li>
- <li>Run <code>npm i</code> to install all project dependancies (if not done so already)</li>
+ <li>Run <code>npm i</code> to install all project dependencies (if not done so already)</li>
<li>run <code>npm run dev</code> to compile the extension to the <code>~/Extensions/combined/dist/</code> folder.</li>
</ol>
diff --git a/Extensions/combined/src/bar.js b/Extensions/combined/src/bar.js
index 930f0f5..fea42a9 100644
--- a/Extensions/combined/src/bar.js
+++ b/Extensions/combined/src/bar.js
@@ -1,9 +1,10 @@
-import { getButtons, getDislikeButton, getLikeButton } from './buttons';
+import { getButtons, getDislikeButton, getLikeButton } from "./buttons";
import {
extConfig,
isMobile,
isLikesDisabled,
isNewDesign,
+ isRoundedDesign,
isShorts,
} from "./state";
import { cLog, getColorFromTheme } from "./utils";
@@ -15,7 +16,7 @@ function createRateBar(likes, dislikes) {
const widthPx =
getLikeButton().clientWidth +
getDislikeButton().clientWidth +
- 8;
+ (isRoundedDesign() ? 0 : 8);
const widthPercent =
likes + dislikes > 0 ? (likes / (likes + dislikes)) * 100 : 50;
@@ -57,14 +58,12 @@ function createRateBar(likes, dislikes) {
(
document.getElementById(
- isNewDesign() ? "actions-inner" : "menu-container"
+ isNewDesign() ? "top-level-buttons-computed" : "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 ryd-tooltip-${isNewDesign() ? "new" : "old"}-design" style="width: ${widthPx}px">
<div class="ryd-tooltip-bar-container">
<div
id="ryd-bar-container"
@@ -80,15 +79,22 @@ function createRateBar(likes, dislikes) {
<!--css-build:shady-->${tooltipInnerHTML}
</tp-yt-paper-tooltip>
</div>
- `
+ `
);
- // Add border between info and comments
if (isNewDesign()) {
+ // Add border between info and comments
let descriptionAndActionsElement = document.getElementById("top-row");
descriptionAndActionsElement.style.borderBottom =
"1px solid var(--yt-spec-10-percent-layer)";
descriptionAndActionsElement.style.paddingBottom = "10px";
+
+ // Fix like/dislike ratio bar offset in new UI
+ document.getElementById("actions-inner").style.width = "revert";
+ if (isRoundedDesign()) {
+ document.getElementById("actions").style.flexDirection =
+ "row-reverse";
+ }
}
} else {
document.getElementById("ryd-bar-container").style.width =
diff --git a/Extensions/combined/src/buttons.js b/Extensions/combined/src/buttons.js
index 6b344d9..b78670c 100644
--- a/Extensions/combined/src/buttons.js
+++ b/Extensions/combined/src/buttons.js
@@ -24,7 +24,7 @@ function getButtons() {
//--- If Menu Element Is Displayed: ---//
if (document.getElementById("menu-container")?.offsetParent === null) {
return document.querySelector("ytd-menu-renderer.ytd-watch-metadata > div");
- //--- If Menu Element Isnt Displayed: ---//
+ //--- If Menu Element Isn't Displayed: ---//
} else {
return document
.getElementById("menu-container")
@@ -42,7 +42,8 @@ function getLikeButton() {
function getLikeTextContainer() {
return (
getLikeButton().querySelector("#text") ??
- getLikeButton().getElementsByTagName("yt-formatted-string")[0]
+ getLikeButton().getElementsByTagName("yt-formatted-string")[0] ??
+ getLikeButton().querySelector("span[role='text']")
);
}
@@ -56,7 +57,8 @@ function getDislikeButton() {
function getDislikeTextContainer() {
let result =
getDislikeButton().querySelector("#text") ??
- getDislikeButton().getElementsByTagName("yt-formatted-string")[0];
+ getDislikeButton().getElementsByTagName("yt-formatted-string")[0] ??
+ getDislikeButton().querySelector("span[role='text']");
if (result == null) {
let textSpan = document.createElement("span");
textSpan.id = "text";
diff --git a/Extensions/combined/src/state.js b/Extensions/combined/src/state.js
index cda281b..58c3e29 100644
--- a/Extensions/combined/src/state.js
+++ b/Extensions/combined/src/state.js
@@ -51,6 +51,10 @@ function isNewDesign() {
return document.getElementById("comment-teaser") !== null;
}
+function isRoundedDesign() {
+ return document.getElementById("segmented-like-button") !== null;
+}
+
let mutationObserver = new Object();
if (isShorts() && mutationObserver.exists !== true) {
@@ -96,9 +100,7 @@ function isLikesDisabled() {
getButtons().children[0].querySelector(".button-renderer-text").innerText
);
}
- return /^\D*$/.test(
- getButtons().children[0].innerText
- );
+ return /^\D*$/.test(getButtons().children[0].innerText);
}
function isVideoLiked() {
@@ -133,10 +135,14 @@ function getState(storedData) {
//--- Sets The Likes And Dislikes Values ---//
function setLikes(likesCount) {
+ cLog(`SET likes ${likesCount}`)
getLikeTextContainer().innerText = likesCount;
}
function setDislikes(dislikesCount) {
+ cLog(`SET dislikes ${dislikesCount}`)
+ getDislikeTextContainer()?.removeAttribute("is-empty");
+ getDislikeTextContainer()?.removeAttribute('is-empty');
if (!isLikesDisabled()) {
if (isMobile()) {
getButtons().children[1].querySelector(
@@ -160,20 +166,21 @@ function setDislikes(dislikesCount) {
function getLikeCountFromButton() {
try {
if (isShorts()) {
- //Youtube Shorts don't work with this query. It's not nessecary; we can skip it and still see the results.
+ //Youtube Shorts don't work with this query. It's not necessary; we can skip it and still see the results.
//It should be possible to fix this function, but it's not critical to showing the dislike count.
return false;
}
- let likesStr = getLikeButton()
- .querySelector("yt-formatted-string#text")
- .getAttribute("aria-label")
+
+ let likeButton = getLikeButton()
+ .querySelector("yt-formatted-string#text") ??
+ getLikeButton().querySelector("button");
+
+ let likesStr = likeButton.getAttribute("aria-label")
.replace(/\D/g, "");
return likesStr.length > 0 ? parseInt(likesStr) : false;
- }
- catch {
+ } catch {
return false;
}
-
}
function processResponse(response, storedData) {
@@ -190,7 +197,7 @@ function processResponse(response, storedData) {
createRateBar(storedData.likes, storedData.dislikes);
if (extConfig.coloredThumbs === true) {
if (isShorts()) {
- // for shorts, leave deactived buttons in default color
+ // for shorts, leave deactivated buttons in default color
let shortLikeButton = getLikeButton().querySelector(
"tp-yt-paper-button#button"
);
@@ -361,6 +368,7 @@ export {
isVideoDisliked,
isVideoLiked,
isNewDesign,
+ isRoundedDesign,
getState,
setState,
setInitialState,
diff --git a/Extensions/combined/src/utils.js b/Extensions/combined/src/utils.js
index b92bc0c..e789815 100644
--- a/Extensions/combined/src/utils.js
+++ b/Extensions/combined/src/utils.js
@@ -87,6 +87,9 @@ function isInViewport(element) {
const height = innerHeight || document.documentElement.clientHeight;
const width = innerWidth || document.documentElement.clientWidth;
return (
+ // When short (channel) is ignored, the element (like/dislike AND short itself) is
+ // hidden with a 0 DOMRect. In this case, consider it outside of Viewport
+ !(rect.top == 0 && rect.left == 0 && rect.bottom == 0 && rect.right == 0) &&
rect.top >= 0 &&
rect.left >= 0 &&
rect.bottom <= height &&
diff --git a/README.md b/README.md
index b31aa56..ff3287b 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,7 @@
[![Discord](https://img.shields.io/discord/909435648170160229?label=Discord&style=flat&logo=discord)](https://discord.gg/UMxyMmCgfF)
[![License](https://img.shields.io/badge/License-GPLv3-blue.svg?style=flat)](https://github.com/Anarios/return-youtube-dislike/blob/main/LICENSE)
-Read this in other languages: [Español](READMEes.md), [русский](READMEru.md), [Français](READMEfr.md), [日本語](READMEja.md), [Türkçe](READMEtr.md)
+Read this in other languages: [Español](READMEes.md), [русский](READMEru.md), [Français](READMEfr.md), [日本語](READMEja.md), [Türkçe](READMEtr.md), [українська](READMEuk.md)
# Return YouTube Dislike
diff --git a/READMEes.md b/READMEes.md
index 63704b0..055ab06 100644
--- a/READMEes.md
+++ b/READMEes.md
@@ -7,7 +7,7 @@
[![Discord](https://img.shields.io/discord/909435648170160229?label=Discord&style=flat&logo=discord)](https://discord.gg/UMxyMmCgfF)
[![License](https://img.shields.io/badge/License-GPLv3-blue.svg?style=flat)](https://github.com/Anarios/return-youtube-dislike/blob/main/LICENSE)
-Leer en otros idiomas: [English](README.md), [русский](READMEru.md), [Français](READMEfr.md) [日本語](READMEja.md), [Türkçe](READMEtr.md)
+Leer en otros idiomas: [English](README.md), [русский](READMEru.md), [Français](READMEfr.md), [日本語](READMEja.md), [Türkçe](READMEtr.md), [українська](READMEuk.md)
# Return YouTube Dislike
diff --git a/READMEfr.md b/READMEfr.md
index 6915d88..14729bf 100644
--- a/READMEfr.md
+++ b/READMEfr.md
@@ -7,9 +7,9 @@
[![Discord](https://img.shields.io/discord/909435648170160229?label=Discord&style=flat&logo=discord)](https://discord.gg/UMxyMmCgfF)
[![License](https://img.shields.io/badge/License-GPLv3-blue.svg?style=flat)](LICENSE)
-# Return YouTube Dislike
+Lisez ceci dans d'autres langues : [English](README.md), [Español](READMEes.md), [русский](READMEru.md), [日本語](READMEja.md), [Türkçe](READMEtr.md), [українська](READMEuk.md)
-Lisez ceci dans d'autres langues : [English](README.md), [Español](READMEes.md), [русский](READMEru.md), [Türkçe](READMEtr.md)
+# Return YouTube Dislike
<p align="center">
<b>Return YouTube Dislike est une extension open-source qui ré-affiche les dislikes (pouces rouges) sur YouTube.</b><br>
diff --git a/READMEja.md b/READMEja.md
index 2aba04b..a454960 100644
--- a/READMEja.md
+++ b/READMEja.md
@@ -7,7 +7,7 @@
[![Discord](https://img.shields.io/discord/909435648170160229?label=Discord&style=flat&logo=discord)](https://discord.gg/UMxyMmCgfF)
[![License](https://img.shields.io/badge/License-GPLv3-blue.svg?style=flat)](https://github.com/Anarios/return-youtube-dislike/blob/main/LICENSE)
-別の言語: [English](README.md), [Español](READMEes.md), [русский](READMEru.md), [Türkçe](READMEtr.md)
+別の言語: [English](README.md), [Español](READMEes.md), [русский](READMEru.md), [Français](READMEfr.md), [Türkçe](READMEtr.md), [українська](READMEuk.md)
# Return YouTube Dislike
diff --git a/READMEru.md b/READMEru.md
index 1baa4c0..8eb78d5 100644
--- a/READMEru.md
+++ b/READMEru.md
@@ -7,7 +7,7 @@
[![Discord](https://img.shields.io/discord/909435648170160229?label=Discord&style=flat&logo=discord)](https://discord.gg/UMxyMmCgfF)
[![License](https://img.shields.io/badge/License-GPLv3-blue.svg?style=flat)](https://github.com/Anarios/return-youtube-dislike/blob/main/LICENSE)
-Прочитать на других языках: [English](README.md), [Español](READMEes.md), [Français](READMEfr.md), [日本語](READMEja.md), [Türkçe](READMEtr.md)
+Прочитать на других языках: [English](README.md), [Español](READMEes.md), [Français](READMEfr.md), [日本語](READMEja.md), [Türkçe](READMEtr.md), [українська](READMEuk.md)
# Return YouTube Dislike
diff --git a/READMEtr.md b/READMEtr.md
index 6376d84..1db1be8 100644
--- a/READMEtr.md
+++ b/READMEtr.md
@@ -3,11 +3,11 @@
[![Mozilla oylaması](https://img.shields.io/amo/stars/return-youtube-dislikes?label=Firefox%20Rating&style=flat&logo=firefox)](https://addons.mozilla.org/en-US/firefox/addon/return-youtube-dislikes/)
[![Mozilla indirmeleri](https://img.shields.io/amo/users/return-youtube-dislikes?label=Firefox%20Users&style=flat&logo=firefox)](https://addons.mozilla.org/en-US/firefox/addon/return-youtube-dislikes/)
[![Commit sayısı](https://img.shields.io/github/commit-activity/m/Anarios/return-youtube-dislike?label=Commits&style=flat)](https://github.com/Anarios/return-youtube-dislike/commits/main)
-[![Issue'ler](https://img.shields.io/github/issues/Anarios/return-youtube-dislike?style=flat&label=Issues)](https://github.com/Anarios/return-youtube-dislike/issues)
+[![Issue'lar](https://img.shields.io/github/issues/Anarios/return-youtube-dislike?style=flat&label=Issues)](https://github.com/Anarios/return-youtube-dislike/issues)
[![Discord](https://img.shields.io/discord/909435648170160229?label=Discord&style=flat&logo=discord)](https://discord.gg/UMxyMmCgfF)
[![Lisans](https://img.shields.io/badge/License-GPLv3-blue.svg?style=flat)](https://github.com/Anarios/return-youtube-dislike/blob/main/LICENSE)
-Bunu diğer dillerde okuyun: [English](README.md), [Español](READMEes.md), [Français](READMEfr.md), [русский](READMEru.md), [日本語](READMEja.md)
+Bunu diğer dillerde okuyun: [English](README.md), [Español](READMEes.md), [Français](READMEfr.md), [русский](READMEru.md), [日本語](READMEja.md), [українська](READMEuk.md)
# YouTube Dislike Sayısını Geri Getir
@@ -22,13 +22,13 @@ Bunu diğer dillerde okuyun: [English](README.md), [Español](READMEes.md), [Fra
10 Kasım 2021 tarihinde Google, YouTube dislike sayısının kaldırılacağını [duyurdu](https://blog.youtube/news-and-events/update-to-youtube/).
-Ek olarak, YouTube API'sindeki "dislike" alanı 13 Aralık 2021 tarihinde [kaldırıldı](https://support.google.com/youtube/thread/134791097/update-to-youtube-dislike-counts) ve içeriğin kalitesini izlemeden önce yargılayabilme olanağı ortadan kaldırıldı.
+Ek olarak, YouTube API'sindeki `dislike` alanı 13 Aralık 2021 tarihinde [kaldırıldı](https://support.google.com/youtube/thread/134791097/update-to-youtube-dislike-counts) ve içeriğin kalitesini izlemeden önce yargılayabilme olanağı ortadan kaldırıldı.
## Ne İşe Yarar
YouTube API'sinden dislike istatistiklerinin kaldırılmasıyla, backend'imiz, uzantı kullanıcı verilerinden tahmin edilen, toplanmış dislike istatistiklerinin bir birleşimini kullanmaya başladı.
-[SSS](https://github.com/Anarios/return-youtube-dislike/blob/main/Docs/FAQ.md)
+[SSS](https://github.com/Anarios/return-youtube-dislike/blob/main/Docs/FAQtr.md)
## Neden Önemlidir
@@ -39,12 +39,12 @@ Sitemizden daha fazla bilgi edinebilirsiniz: [returnyoutubedislike.com](https://
Bu açık API'nin üçüncü taraflarca kullanımına, aşağıdaki kısıtlamalarla izin verilir:
- **Atfetme**: Bu proje, açık bir biçimde [returnyoutubedislike.com](https://returnyoutubedislike.com/) adresine yönlendirilmelidir.
-- **Hız Sınırlaması**: Kullanıcı başına dakikada 100 ve günde 10.000 hız sınırlaması vardır. Bu, uygulamanızın geri çekilmesi gerektiğini belirten 429 durum kodunu döndürür
+- **Hız Sınırlaması**: Kullanıcı başına dakikada 100 ve günde 10.000 hız sınırlaması vardır. Bu, uygulamanızın geri çekilmesi gerektiğini belirten _429_ durum kodunu döndürür.
API'ye aşağıdaki temel URL üzerinden erişilebilir:
https://returnyoutubedislikeapi.com
-Kullanılabilir endpoint'lerin listesi burada mevcuttur:
+Kullanılabilir endpoint'lerin bir listesi burada mevcuttur:
https://returnyoutubedislikeapi.com/swagger/index.html
### Oylamaları Elde Etme
@@ -75,13 +75,13 @@ Tüm belgelemeleri sitemizden inceleyebilirsiniz.
## Katkıda Bulunma
-Lütfen [katkı kılavuzu](https://github.com/Anarios/return-youtube-dislike/blob/main/CONTRIBUTING.md)nu okuyun.
+Lütfen [katkı kılavuzu](https://github.com/Anarios/return-youtube-dislike/blob/main/CONTRIBUTINGtr.md)nu okuyun.
## Bu Projeyi Destekle!
Aşağıdaki bağlantıdan bize bağış yapabilir ve bu projeye destek olabilirsiniz:
-[Bağış Yapın](https://returnyoutubedislike.com/donate)
+[Bağış Yap](https://returnyoutubedislike.com/donate)
## Sponsorlar
diff --git a/READMEuk.md b/READMEuk.md
new file mode 100644
index 0000000..d296b9c
--- /dev/null
+++ b/READMEuk.md
@@ -0,0 +1,94 @@
+[![Chrome Web Store](https://img.shields.io/chrome-web-store/stars/gebbhagfogifgggkldgodflihgfeippi?label=Chrome%20Rating&style=flat&logo=google)](https://chrome.google.com/webstore/detail/youtube-dislike-button/gebbhagfogifgggkldgodflihgfeippi/)
+[![Chrome Web Store Users](https://img.shields.io/chrome-web-store/users/gebbhagfogifgggkldgodflihgfeippi?label=Chrome%20Users&style=flat&logo=google)](https://chrome.google.com/webstore/detail/youtube-dislike-button/gebbhagfogifgggkldgodflihgfeippi/)
+[![Mozilla rating](https://img.shields.io/amo/stars/return-youtube-dislikes?label=Firefox%20Rating&style=flat&logo=firefox)](https://addons.mozilla.org/en-US/firefox/addon/return-youtube-dislikes/)
+[![Mozilla downloads](https://img.shields.io/amo/users/return-youtube-dislikes?label=Firefox%20Users&style=flat&logo=firefox)](https://addons.mozilla.org/en-US/firefox/addon/return-youtube-dislikes/)
+[![Commit rate](https://img.shields.io/github/commit-activity/m/Anarios/return-youtube-dislike?label=Commits&style=flat)](https://github.com/Anarios/return-youtube-dislike/commits/main)
+[![Issues](https://img.shields.io/github/issues/Anarios/return-youtube-dislike?style=flat&label=Issues)](https://github.com/Anarios/return-youtube-dislike/issues)
+[![Discord](https://img.shields.io/discord/909435648170160229?label=Discord&style=flat&logo=discord)](https://discord.gg/UMxyMmCgfF)
+[![License](https://img.shields.io/badge/License-GPLv3-blue.svg?style=flat)](https://github.com/Anarios/return-youtube-dislike/blob/main/LICENSE)
+
+Read this in other languages: [English](README.md), [Español](READMEes.md), [русский](READMEru.md), [Français](READMEfr.md), [日本語](READMEja.md), [Türkçe](READMEtr.md)
+
+# Return YouTube Dislike
+
+<p align="center">
+ <b>Return YouTube Dislike - це розширення з відкритим вихідним кодом, яке повертає лічильник відміток «Не подобається» на YouTube.</b><br>
+ Доступно для Chrome та Firefox як веброзширення.<br>
+ Також доступний для інших браузерів як JS UserScript.<br><br>
+ <img width="400px" src="https://user-images.githubusercontent.com/18729296/141743755-2be73297-250e-4cd1-ac93-8978c5a39d10.png"/>
+</p>
+
+## Історія
+
+10 листопада 2021 року Google [оголосили](https://blog.youtube/news-and-events/update-to-youtube/), що лічильник відміток «Не подобається» на YouTube буде видалено.
+
+Крім того, поле позначок `dislike` у YouTube API було [видалено](https://support.google.com/youtube/thread/134791097/update-to-youtube-dislike-counts) 13 грудня 2021 року, прибравши єдину можливість оцінити якість вмісту перед переглядом.
+
+## Як це працює
+
+Після видаленням статистики відміток з API YouTube наш сервер перейшов на використання комбінації заархівованих статистичних даних відміток «Не подобається» екстрапольованих із даними користувачів розширення.
+
+[ЧаПи](https://github.com/Anarios/return-youtube-dislike/blob/main/Docs/FAQuk.md)
+
+## Чому це важливо
+
+Ви можете дізнатися більше на нашому вебсайті: [returnyoutubedislike.com](https://www.returnyoutubedislike.com/)
+
+## Документація API
+
+Використання цього відкритого API сторонніми особами дозволено з наступними обмеженнями:
+
+- **Атрибуція**: Цей проєкт має бути чітко описано, використовуючи посилання на [returnyoutubedislike.com](https://returnyoutubedislike.com/).
+- **Обмеження**: Існують обмеження на швидкісті для кожного клієнта - 100 за хвилину і 10 000 за день. Це видасть код помилки 429, який вказує на те, що вашому додатку слід завершити роботу.
+
+API доступний за наступною URL-адресою:
+https://returnyoutubedislikeapi.com
+
+Перелік доступних «ендпоінтів» можна переглянути тут:
+https://returnyoutubedislikeapi.com/swagger/index.html
+
+### Отримати оцінки
+
+Приклад отримання оцінок відео на YouTube за 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
+}
+```
+
+Недійсний YouTube ID видасть код помилки 404 "Not Found".
+YouTube ID у невірному форматі видасть код помилки 400 "Bad Request".
+
+<!---
+## Документація API
+
+Ви можете переглянути всю документацію на нашому сайті.
+[https://returnyoutubedislike.com/documentation/](https://returnyoutubedislike.com/documentation/) -->
+
+## Взяти участь у розробці
+
+Будь ласка, ознайомтеся із [посібником внеску в проєкт](https://github.com/Anarios/return-youtube-dislike/blob/main/CONTRIBUTINGuk.md).
+
+## Підтримайте цей проєкт!
+
+Ви можете підтримати цей проєкт пожертвою за посиланням нижче:
+
+[Підтримати](https://returnyoutubedislike.com/donate)
+
+## Спонсори
+
+[Piepacker](https://piepacker.com)
+
+[Seed4.Me VPN](https://www.seed4.me/users/register?gift=ReturnYoutubeDislike)
+
+[PocketTube](https://yousub.info/?utm_source=returnyoutubedislike)
+
+[Станьте нашим спонсором](https://www.patreon.com/join/returnyoutubedislike/checkout?rid=8008601) \ No newline at end of file
diff --git a/Website/README.md b/Website/README.md
index 05e1861..ee43282 100644
--- a/Website/README.md
+++ b/Website/README.md
@@ -1,3 +1,5 @@
+Read this in other languages: [Türkçe](READMEtr.md)
+
# return-youtube-dislike-site
## Build Setup
diff --git a/Website/READMEtr.md b/Website/READMEtr.md
new file mode 100644
index 0000000..76c86b4
--- /dev/null
+++ b/Website/READMEtr.md
@@ -0,0 +1,89 @@
+Bunu diğer dillerde okuyun: [English](README.md)
+
+# youtube-dislike-sayısını-geri-getir-site
+
+## Yapı Kurulumu
+
+```bash
+# bağımlılıkları yükle
+$ npm install
+
+# localhost:3000'de sıcak yeniden yükleme ile çalıştır
+$ npm run dev
+
+# değişikliklerine lint'i uygula
+$ npm run lint
+
+# üretim için yapıyı oluştur ve sunucuyu başlat
+$ npm run build
+$ npm run start
+
+# statik proje oluştur
+$ npm run generate
+```
+
+İşlerin nasıl yürüdüğüyle ilgili daha fazla bilgi için [belgeleme](https://nuxtjs.org)ye göz atın.
+
+## Önerilen VSCode Kurulumu
+
+- [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) `ext install dbaeumer.vscode-eslint`
+- [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) `ext install esbenp.prettier-vscode`
+- [Vetur](https://marketplace.visualstudio.com/items?itemName=octref.vetur)
+
+> `Ctrl(Cmd)` + `Shift` + `P` > Varsayılan Ayarları Aç (JSON)
+
+```
+"editor.formatOnSave": true,
+"editor.codeActionsOnSave": {
+ "source.fixAll.eslint": true
+}
+"vetur.validation.template": false,
+```
+
+## Özel Dizinler
+
+You can create the following extra directories, some of which have special behaviors. Only `pages` is required; you can delete them if you don't want to use their functionality.
+
+### `assets`
+
+Assets dizini, Stylus veya Sass dosyaları, resimler veya yazı tipleri gibi derlenmemiş varlıklarınızı içerir.
+
+Bu dizinin kullanımı ile ilgili daha fazla bilgi için [belgeleme](https://nuxtjs.org/docs/2.x/directory-structure/assets)ye göz atın.
+
+### `components`
+
+Components dizini, Vue.js bileşenlerinizi içerir. Component'ler, sayfanızın farklı bölümlerini oluşturur ve yeniden kullanılabilir. Ayrıca sayfalarınıza, mizanpajlarınıza ve hatta diğer component'lerinize de aktarılabilir.
+
+Bu dizinin kullanımı ile ilgili daha fazla bilgi için [belgeleme](https://nuxtjs.org/docs/2.x/directory-structure/components)ye göz atın.
+
+### `layouts`
+
+Layouts dizini, Nuxt uygulamanızın görünümünü ve verdiği hissi değiştirmek istediğinizde, bir kenar çubuğu eklemek istediğinizde veya mobil ve masaüstü için farklı düzenlere sahip olmak istediğinizde çok yardımcı olabilir.
+
+Bu dizinin kullanımı ile ilgili daha fazla bilgi için [belgeleme](https://nuxtjs.org/docs/2.x/directory-structure/layouts)ye göz atın.
+
+### `pages`
+
+Bu dizin, uygulama görünümlerinizi ve rotalarınızı içerir. Nuxt, bu dizindeki tüm `*.vue` dosyalarını okuyacak ve Vue Router'ı otomatik olarak kuracaktır.
+
+Bu dizinin kullanımı ile ilgili daha fazla bilgi için [belgeleme](https://nuxtjs.org/docs/2.x/get-started/routing)ye göz atın.
+
+### `plugins`
+
+Plugins dizini, kök Vue.js Uygulamasını başlatmadan önce çalıştırmak istediğiniz JavaScript eklentilerini içerir. Burası Vue eklentileri eklemek ve işlevler veya sabitler enjekte etmek için kullanılan yerdir. `Vue.use()`u her kullanmanız gerektiğinde, `plugins/` içinde bir dosya oluşturmalı ve yolunu `nuxt.config.js` içinde eklentilere eklemelisiniz.
+
+Bu dizinin kullanımı ile ilgili daha fazla bilgi için [belgeleme](https://nuxtjs.org/docs/2.x/directory-structure/plugins)ye göz atın.
+
+### `static`
+
+Bu dizin statik dosyalarınızı içerir. Bu dizindeki her dosya `/` ile eşlenir.
+
+Örnek: `/static/robots.txt`, `/robots.txt` olarak eşlenir.
+
+Bu dizinin kullanımı ile ilgili daha fazla bilgi için [belgeleme](https://nuxtjs.org/docs/2.x/directory-structure/static)ye göz atın.
+
+### `store`
+
+Bu dizin, Vuex mağaza dosyalarınızı içerir. Bu dizinde bir dosya oluşturmak, Vuex'i otomatik olarak etkinleştirecektir.
+
+Bu dizinin kullanımı ile ilgili daha fazla bilgi için [belgeleme](https://nuxtjs.org/docs/2.x/directory-structure/store)ye göz atın.
diff --git a/Website/_locales/en.ts b/Website/_locales/en.ts
index 8cc26f6..81254f7 100644
--- a/Website/_locales/en.ts
+++ b/Website/_locales/en.ts
@@ -67,13 +67,13 @@ export default {
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 ",
+ "Take a screenshot of the page with the problem (i.e. Youtube video page) with the console open (press ",
bullet4b1: ") - example screenshot below.",
bullet4c:
- "Take screenshot of extensions page of your browser with extension installed.",
+ "Take a screenshot of the extensions page of your browser with the extension installed.",
bullet4c1: "To see extensions put this into address bar: ",
firefox: "for Firefox",
- chrome: "for Chrome, Edge, Brave, Opera, Vivaldi",
+ chrome: "for Chrome, Edge, Brave, Opera, and Vivaldi",
},
faq: {
name: "FAQ",
@@ -87,13 +87,13 @@ export default {
"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.",
+ "The extension collects the video ID of the video you are watching, and fetches the number of dislikes (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>.',
+ 'The extension only collects data that is strictly necessary for it to function properly, such as the 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.",
diff --git a/Website/_locales/sv_SE.ts b/Website/_locales/sv_SE.ts
new file mode 100644
index 0000000..ab7d967
--- /dev/null
+++ b/Website/_locales/sv_SE.ts
@@ -0,0 +1,119 @@
+import { sv_SE } from "vuetify/src/locale";
+
+export default {
+ ...sv_SE,
+ home: {
+ name: "Hem",
+ title: "Return YouTube Dislike",
+ subtitle: "Webbläsartillägg och ett API som visar antalet ogilla på Youtube",
+ ukraine: "Stöd Ukraina",
+ sponsors: "Sponsorer",
+ },
+ install: {
+ name: "Installera",
+ title: "Välj din webbläsare",
+ subtitle: "Tillgängligt för Firefox och alla Chromium-webbläsare",
+ title2: "Andra webbläsare",
+ subtitle2: "Om din webbläsare ännu inte stöds, prova detta UserScript",
+ title3: "Tredjepartsimplementeringar",
+ subtitle3: "Inget ansvar från vår sida, använd på egen risk",
+ },
+ api: {
+ name: "API",
+ title: "Välkommen till de officiella RYD-dokumenten!",
+ subtitle: "För att komma igång, välj ett avsnitt från menyn.",
+ rights: {
+ title: "Användningsrättigheter",
+ subtitle:
+ "Tredjepartsanvändning av detta öppna API är tillåtet med följande begränsningar:",
+ bullet1: "Tillskrivning: ",
+ bullet1text:
+ "Detta projekt bör tydligt tillskrivas med antingen en länk till denna repo eller en länk till returnyoutubedislike.com",
+ bullet2: "Satsbegränsning: ",
+ bullet2text:
+ "Det finns satsbegränsningar per användare med 100 per minut och 10000 per dag. Detta kommer att returnera en statushod 429 som indikerar att din applikation ska hålla sig borta",
+ },
+ url: {
+ title: "Webbadressinformation",
+ subtitle: "API:et är tillgängligt via följande baswebbadress: ",
+ },
+ endpoints: {
+ title: "Tillgängliga slutpunkter",
+ subtitle: "Lista över tillgängliga slutpunkter finns här: ",
+ },
+ fetching: {
+ title: "Grundläggande handledning för hämtning",
+ subtitle: "Exempel för att hämta röster för ett bestämt YouTubevideo-ID: ",
+ title2: "Example Request: ",
+ url: "Request URL: ",
+ method: "Request Method: ",
+ headers: "Headers: ",
+ response: "Response: ",
+ error1: 'Ett ogiltigt YouTube-ID returnerar statuskoden 404 "Not Found"',
+ error2:
+ 'Ett felaktigt formaterat YouTube-ID returnerar 400 "Bad Request"',
+ },
+ },
+ help: {
+ name: "Hjälp",
+ title: "Felsökning",
+ bullet1: "Se till att du har den senaste versionen av tillägget installerat, ",
+ bullet11: "just nu",
+ bullet2:
+ "Försök att avinstallera tillägget och installera det igen, starta sedan om webbläsaren (alla aktiva fönster, inte bara en flik)",
+ bullet3: "Se till att den här länken öppnas: ",
+ bullet31: "du bör se vanlig text: ",
+ bullet4: "Om inget av ovanstående hjälper - rapportera ditt problem i",
+ bullet41: "i vår",
+ bullet4a: "Tala om för oss ditt operativsystem, webbläsarnamn och webbläsarversion",
+ bullet4b:
+ "Ta en skärmdump av sidan du har problem med (t.ex en youtube-videosida) med konsolfönstret öppet (tryck ",
+ bullet4b1: ") - exempel på skärmdump nedan.",
+ bullet4c:
+ "Ta en skärmdump av tilläggssidan i din webbläsare med tillägg installerat.",
+ bullet4c1: "För att se tilläggen skriv in detta i adressfältet: ",
+ firefox: "för Firefox",
+ chrome: "för Chrome, Edge, Brave, Opera och Vivaldi",
+ },
+ faq: {
+ name: "FAQ",
+ title: "Vanliga frågor",
+ subtitle: "Har du fortfarande frågor? Gå gärna med i vår Discord!",
+ bullet1: "Var får tillägget sina data?",
+ bullet1text:
+ "En kombination av arkiverad data från innan det officiella YouTube ogilla-API:et stängdes av och och extrapolerat tilläggsanvändarbeteende.",
+ bullet2: "Varför uppdateras inte antalet ogilla?",
+ bullet2text:
+ "Just nu cachelagras ogilla för videoklipp och de uppdateras inte särskilt ofta. Det varierar beroende på en videos popularitet, men det kan ta allt från några timmar till några dagar att uppdatera.",
+ bullet3: "Hur fungerar detta?",
+ bullet3text:
+ "Tillägget samlar in video-ID:t för videon du tittar på och hämtar ogilla (and other fields like views, likes etc) med hjälp av vårt API. Tillägget visar sedan antalet ogilla och förhållandet på sidan. Om du gillar eller ogillar en video, spelas det in och skickas till databasen så att ett korrekt antal ogilla kan extrapoleras.",
+ bullet4: "Kan jag dela mina antalet ogilla med dig?",
+ bullet4text:
+ "Kommer snart. Vi tittar på att använda Oauth eller ett annat skrivskyddat API med ett begränsat omfång så att kreatörer kan dela med sig av verifierbarheten av sina antal ogilla.",
+ bullet5: "Vilken data samlar du in och hur behandlas den?",
+ bullet5text:
+ 'Tillägget samlar bara in data som är absolut nödvändig för att den ska fungera korrekt, som IP-adressen eller ID:t på videon du tittar på. Inga uppgifter kommer någonsin att säljas till tredjepart. Om du vill veta mer om hur vi hanterar säkerhet och integritet läs då vår <a href="https://github.com/Anarios/return-youtube-dislike/blob/main/Docs/SECURITY-FAQ.md">vanliga frågor om säkerhet</a>.',
+ bullet6: "Hur fungerar API/Backend?",
+ bullet6text:
+ "Backend använder arkiverad data från när YouTubes API fortfarande returnerade antalet ogilla. Inom en snar framtid kommer vi att tillåta innehållsskapare att enkelt och säkert skicka in sina ogilla och vi kommer att lägga till ArchiveTeams arkiverade data (4,56 miljarder videor) i vår nuvarande databas. Du kan också se en video om ämnet.",
+ bullet7: "Varför visar antalet ogilla "OGILLA ÄR INAKTIVERAT"?",
+ bullet7text:
+ "I bland kan en nyligen uppladdad video visa 'OGILLA ÄR INAKTIVERAT' även om ägaren inte har inaktiverat den. Detta beror på hur informationen om ogilla är inaktiverat hämtas ut. Det bör försvinna inom några timmar eller genom att gilla eller ogilla videon och uppdatera sidan (förhoppningsvis).",
+ },
+ donate: {
+ name: "Donera",
+ subtitle:
+ "Du kan stöda våra ansträngningar att hålla internet fritt med en donation!",
+ },
+ links: {
+ name: "Länkar",
+ title: "Projektlänkar",
+ subtitle: "Länkar till projektet och dess utvecklare",
+ contact: "Kontakta mig",
+ translators: "Översättare",
+ coolProjects: "Häftiga projekt",
+ sponsorBlockDescription: "Hoppar över annonser integrerade i videon",
+ filmotDescription: "Sök efter YouTube-videor i undertexterna",
+ },
+};
diff --git a/Website/_locales/tr.ts b/Website/_locales/tr.ts
index 25f695b..4fc64f2 100644
--- a/Website/_locales/tr.ts
+++ b/Website/_locales/tr.ts
@@ -5,8 +5,7 @@ export default {
home: {
name: "Ana Sayfa",
title: "YouTube Dislike Sayısını Geri Getir",
- subtitle:
- "Tarayıcı uzantısı ve bir API, YouTube'daki dislike sayınızı geri getirir",
+ subtitle: "YouTube'daki dislike sayılarınızı geri getiren bir tarayıcı uzantısı ve API",
ukraine: "Ukrayna'ya Destek Ol",
sponsors: "Sponsorlar",
},
@@ -15,11 +14,9 @@ export default {
title: "Platformunuzu Seçin",
subtitle: "Firefox ve bütün Chromium tabanlı tarayıcılarda kullanılabilir",
title2: "Diğer Platformlar",
- subtitle2:
- "Tarayıcınız henüz desteklenmiyorsa UserScript yöntemini deneyin",
+ subtitle2: "Tarayıcınız henüz desteklenmiyorsa UserScript yöntemini deneyin",
title3: "Üçüncü Parti Uygulamalar",
- subtitle3:
- "Riski tamamen size aittir, bizim tarafımızda sorumluluk kabul edilmemektedir",
+ subtitle3: "Riski tamamen size aittir, bizim tarafımızda sorumluluk kabul edilmemektedir",
},
api: {
name: "API",
@@ -31,10 +28,10 @@ export default {
"Herkese açık API'nin üçüncü parti kişilerin kullanımında aşağıdaki kısıtlamalara izin verir:",
bullet1: "Atıf: ",
bullet1text:
- "Bu proje, bu depoya ya da returnyoutubedislike.com sitesine bir bağlantı ile açıkça atfedilmelidir",
+ "Bu proje, bu depoya ya da returnyoutubedislike.com sitesine bir bağlantı ile açıkça atfedilmelidir.",
bullet2: "Hız Sınırlaması: ",
bullet2text:
- "Kullanıcı başına dakikada 100 ve günde 10.000 hız sınırlaması vardır. Bu, uygulamanızın geri çekilmesi gerektiğini belirten 429 durum kodunu döndürür",
+ "Kullanıcı başına dakikada 100 ve günde 10.000 hız sınırlaması vardır. Bu, uygulamanızın geri çekilmesi gerektiğini belirten 429 durum kodunu döndürür.",
},
url: {
title: "URL Bilgisi",
@@ -46,16 +43,15 @@ export default {
},
fetching: {
title: "Temel Veri Alma Eğitimi",
- subtitle:
- "Belirli bir YouTube ID'sinin oylamalarını elde etmek için bir örnek: ",
+ subtitle: "Belirli bir YouTube ID'sinin oylamalarını elde etmek için bir örnek: ",
title2: "Örnek İstek: ",
url: "İstek URL'si: ",
method: "İstek Yöntemi: ",
headers: "Header'lar: ",
response: "Sonuç: ",
- error1: 'Geçersiz bir YouTube ID\'si, 404 "Not Found" olarak döndürülür',
+ error1: 'Geçersiz bir YouTube ID\'si, 404 "Not Found" olarak döndürülür.',
error2:
- 'Yanlış biçimlendirilmiş bir YouTube ID\'si, 400 "Bad Request" olarak döndürülür',
+ 'Yanlış biçimlendirilmiş bir YouTube ID\'si, 400 "Bad Request" olarak döndürülür.',
},
},
help: {
@@ -68,13 +64,11 @@ export default {
bullet3: "Şu bağlantıyı açtığınızdan emin olun: ",
bullet31: "şöyle bir düz metin görmelisiniz: ",
bullet4: "Yukarıdakiler yardımcı olmadıysa - Discord sunucumuzdaki ",
- bullet41:
- " kanalından problemi bildirin (İngilizce bir şekilde) Discord sunucumuz: ",
- bullet4a:
- "Bize İşletim Sisteminizi, Tarayıcı Adınızı ve Tarayıcı Sürümünüzü söyleyin",
- bullet4b: "Konsol açıkken (açmak için ",
- bullet4b1:
- " tuşuna basın) sorunu yaşadığınız sayfanın ekran görüntüsünü alın (yani YouTube watch sayfasının) - Ekran görüntüsü örneği aşağıdadır.",
+ bullet41: " kanalından problemi bildirin (İngilizce bir şekilde) Discord sunucumuz: ",
+ bullet4a: "Bize İşletim Sisteminizi, Tarayıcı Adınızı ve Tarayıcı Sürümünüzü söyleyin",
+ bullet4b:
+ "Konsol açıkken (açmak için ",
+ bullet4b1: " tuşuna basın) sorunu yaşadığınız sayfanın ekran görüntüsünü alın (yani YouTube watch sayfasının) - Ekran görüntüsü örneği aşağıdadır.",
bullet4c:
"Uzantı yüklüyken tarayıcınızın uzantılar sayfasının ekran görüntüsünü alın.",
bullet4c1: "Uzantıları görmek için şu linki adres çubuğuna yapıştırın: ",
@@ -84,8 +78,7 @@ export default {
faq: {
name: "SSS",
title: "Sıkça Sorulan Sorular",
- subtitle:
- "Hâlâ sorun mu yaşıyorsunuz? Discord sunucumuza katılmaktan çekinmeyin! (İngilizce)",
+ subtitle: "Hâlâ sorun mu yaşıyorsunuz? Discord sunucumuza katılmaktan çekinmeyin! (İngilizce)",
bullet1: "Uzantı, verileri nereden alıyor?",
bullet1text:
"Resmî YouTube dislike sayısı API'si kapatılmadan önceki arşivlenmiş verilerden ve tahmin edilen uzantı kullanıcısı davranışının bir birleşimiyle.",
@@ -101,13 +94,12 @@ export default {
bullet5: "Hangi verileri topluyorsunuz ve bunlar nasıl işleniyor?",
bullet5text:
"Uzantı, yalnızca izlediğiniz videonun IP adresi veya videonun ID'si gibi düzgün çalışması için kesinlikle gerekli olan verileri toplar. Verileriniz asla 3. taraflara satılmayacaktır. Güvenliği ve gizliliği nasıl ele aldığımız hakkında daha fazla bilgi için <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?",
+ bullet6: "API/Backend nasıl çalışıyor?",
bullet6text:
"Yazılım, YouTube API'sinin dislike sayısını ve uzantı kullanıcılarının like/dislike sayısı sonuçların genişletilmesinin döndürmeye devam ettiği zamana ait arşivlenmiş verileri kullanır. Yakın zamanda içerik üreticilerin dislike sayısını kolay ve güvenli bir şekilde göndermelerine izin vereceğiz ve ArchiveTeam'in arşivlenmiş verilerini (4,56 milyar video) veri tabanımıza ekleyeceğiz. Ayrıca konu ile ilgili videoyu da izleyebilirsiniz.",
- bullet7:
- "Dislike sayısı neden 'DISLIKES DISABLED'(DISLIKE'LAR AKTİF DEĞİL) olarak gözüküyor?",
+ bullet7: "Dislike sayısı neden 'DISLIKE'LAR KAPALI' olarak gözüküyor?",
bullet7text:
- "Yazma sırasında like ve dislike sayısını devre dışı bırakan videoların dislike sayılarını göstermiyoruz. Uzantı, bu videolar için 'DISLIKES DISABLED'(DISLIKE'LAR AKTİF DEĞİL) mesajını görüntüler. Yakında tüm videolarda dislike sayısını göstereceğiz. Bu, yalnızca geçici bir çözümdür. Bu nedenle insanlar uzantının bozuk olduğunu düşünmez (zaten iyi çalışmıyor). Bazen yakın zamanda yüklenen bir videoda, içerik üreticisi onu devre dışı bırakmamış olsa bile 'DISLIKES DISABLED' olarak gözükebilir. Bunun nedeni, dislike sayısını devre dışı bırakıp bırakmadığını tespit etmemizdir. Birkaç saat içinde videoyu like ya da dislike atarsanız veya sayfayı yenilerseniz kaybolması gerekir (umarız).",
+ "Yazma sırasında like ve dislike sayısını devre dışı bırakan videoların dislike sayılarını göstermiyoruz. Uzantı, bu videolar için 'DISLIKE'LAR KAPALI' mesajını görüntüler. Yakında tüm videolarda dislike sayısını göstereceğiz. Bu, yalnızca geçici bir çözümdür. Bu nedenle insanlar uzantının bozuk olduğunu düşünmez (zaten iyi çalışmıyor). Bazen yakın zamanda yüklenen bir videoda, içerik üreticisi onu devre dışı bırakmamış olsa bile 'DISLIKE'LAR KAPALI' olarak gözükebilir. Bunun nedeni, dislike sayısını devre dışı bırakıp bırakmadığını tespit etmemizdir. Birkaç saat içinde videoyu like ya da dislike atarsanız veya sayfayı yenilerseniz kaybolması gerekir (umarız).",
},
donate: {
name: "Bağış Yap",
@@ -120,7 +112,7 @@ export default {
subtitle: "Projeye ve geliştiricilerine bağlantılar",
contact: "Bana Ulaşın",
translators: "Çevirmenler",
- coolProjects: "Hoş Projeler",
+ coolProjects: "Havalı Projeler",
sponsorBlockDescription: "Videolara gömülü reklamları pas geçer",
filmotDescription: "YouTube videolarını alt yazılara göre aramanızı sağlar",
},
diff --git a/Website/_locales/uk.ts b/Website/_locales/uk.ts
new file mode 100644
index 0000000..17d06ab
--- /dev/null
+++ b/Website/_locales/uk.ts
@@ -0,0 +1,119 @@
+import { uk } from "vuetify/src/locale";
+// By dsty#1614
+export default {
+ ...uk,
+ home: {
+ name: "Головна",
+ title: "Return YouTube Dislike",
+ subtitle: "Браузерне розширення та API, що дозволяє вам бачити відмітки «Не подобається» на YouTube",
+ ukraine: "Підтримати Україну",
+ sponsors: "Спонсори",
+ },
+ install: {
+ name: "Завантажити",
+ title: "Оберіть вашу платформу",
+ subtitle: "Доступно на Firefox та усіх Chromium браузерах",
+ title2: "Інші платформи",
+ subtitle2: "Якщо ваш браузер не підтримується, спробуйте цей UserScript",
+ title3: "Стороннє ПЗ",
+ subtitle3: "Ми не маємо відношення до цього, використовуйте на свій страх і ризик",
+ },
+ api: {
+ name: "API",
+ title: "Вітаємо у офіційній документації RYD!",
+ subtitle: "Щоб почати, виберіть розділ у меню.",
+ rights: {
+ title: "Права використання",
+ subtitle:
+ "Використання цього відкритого API сторонніми особами дозволено з наступними обмеженнями:",
+ bullet1: "Атрибуція: ",
+ bullet1text:
+ "Цей проєкт має бути чітко описано, використовуючи посилання, або ж на цей репозиторій, або ж на returnyoutubedislike.com",
+ bullet2: "Обмеження: ",
+ bullet2text:
+ "Існують обмеження на швидкісті для кожного клієнта - 100 за хвилину і 10 000 за день. Це видасть код помилки 429, який вказує на те, що вашому додатку слід завершити роботу",
+ },
+ url: {
+ title: "Інформація про посилання",
+ subtitle: "API доступний за наступним посиланням: ",
+ },
+ endpoints: {
+ title: "Достпупні «ендпоінти»",
+ subtitle: "Перелік доступних «ендпоінтів» можна переглянути тут: ",
+ },
+ fetching: {
+ title: "Базовий посібник по отриманню",
+ subtitle: "Приклад отримання оцінок відео на YouTube за ID ",
+ title2: "Приклад запиту: ",
+ url: "Посилання запиту: ",
+ method: "Метод запиту: ",
+ headers: "Заголовок: ",
+ response: "Відповідь: ",
+ error1: 'Недійсний YouTube ID видасть код помилки 404 "Not Found"',
+ error2:
+ 'YouTube ID у невірному форматі видасть код помилки 400 "Bad Request"',
+ },
+ },
+ 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:
+ "Розширення отримує ID відео, яке ви переглядаєте, та дізнається кількість відміток «Не подобається» (та інші дані: перегляди, відмітки «Подобається» тощо) за допомогою нашого API. Потім розширення відображає кількість відміток «Не подобається» та їх коефіцієнт на сторінці. Якщо ви ставите відмітки «Подобається» чи «Не подобається», це записується та надсилається до бази даних, щоб можна було екстраполювати точну їх кількість нелайків.",
+ bullet4: "Чи можу я поділитися з вами своїми відмітками «Не подобається»?",
+ bullet4text:
+ "Незабаром. Ми розглядаємо можливість використання Oauth або іншого API, доступного тільки для читання, з обмеженою областю дій, щоб творці могли ділитися своїми відмітками «Не подобається»",
+ bullet5: "Які дані ви збираєте та як вони обробляються?",
+ bullet5text:
+ 'Розширення збирає лише ті дані, які необхідні для правильної його роботи, такі як IP-адреси або ID відео, яке ви дивитеся. Ваші дані ніколи не будуть продані третім особам. Якщо ви хочете дізнатися більше про те, як ми забезпечуємо безпеку та конфіденційність, ознайомтесь з нашими <a href="https://github.com/Anarios/return-youtube-dislike/blob/main/Docs/SECURITY-FAQ.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: "Перекладачі",
+ coolProjects: "Круті проєкти",
+ sponsorBlockDescription: "пропускає вбудовану у відео рекламу",
+ filmotDescription: "пошук відео на YouTube по субтитрах",
+ },
+}; \ No newline at end of file
diff --git a/Website/layouts/default.vue b/Website/layouts/default.vue
index 4d5e195..221ce0f 100644
--- a/Website/layouts/default.vue
+++ b/Website/layouts/default.vue
@@ -107,7 +107,7 @@ export default {
{ name: "日本語", locale: "ja" },
{ name: "Français", locale: "fr" },
// { name: "Deutsch", locale: "de" },
- // ...
+ { name: "Українська", locale: "uk" },
],
alert: {
show: false,
diff --git a/Website/nuxt.config.js b/Website/nuxt.config.js
index bf5bbbc..cd7d1d4 100644
--- a/Website/nuxt.config.js
+++ b/Website/nuxt.config.js
@@ -5,6 +5,7 @@ import ru from "./_locales/ru";
import cs from "./_locales/cs";
import ja from "./_locales/ja";
import fr from "./_locales/fr";
+import de from "./_locales/uk";
// import de from "./_locales/de";
// ...
export default {
@@ -50,7 +51,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, uk /* de, ...*/ },
current: "en",
},
theme: {
diff --git a/Website/pages/links.vue b/Website/pages/links.vue
index cd6c446..d438594 100644
--- a/Website/pages/links.vue
+++ b/Website/pages/links.vue
@@ -113,6 +113,10 @@ export default {
tag: "NiniKo",
lang: "Français",
},
+ {
+ tag: "dsty#1614",
+ lang: "Українська",
+ },
],
coolProjects: [
{
diff --git a/Website/store/README.md b/Website/store/README.md
index 1972d27..02733b8 100644
--- a/Website/store/README.md
+++ b/Website/store/README.md
@@ -1,3 +1,5 @@
+Read this in other languages: [Türkçe](READMEtr.md)
+
# STORE
**This directory is not required, you can delete it if you don't want to use it.**
diff --git a/Website/store/READMEtr.md b/Website/store/READMEtr.md
new file mode 100644
index 0000000..034a67f
--- /dev/null
+++ b/Website/store/READMEtr.md
@@ -0,0 +1,12 @@
+Bunu diğer dillerde okuyun: [English](README.md)
+
+# MAĞAZA
+
+**Bu dizin gerekli değildir, kullanmak istemiyorsanız silebilirsiniz.**
+
+Bu dizin, Vuex Store dosyalarınızı içerir.
+Vuex Store seçeneği Nuxt.js çerçevesinde uygulanmaktadır.
+
+Bu dizinde bir dosya oluşturmak, çerçevedeki seçeneği otomatik olarak etkinleştirecektir.
+
+Bu dizinin kullanımı ile ilgili daha fazla bilgi için [belgeleme](https://nuxtjs.org/guide/vuex-store)ye göz atın.
diff --git a/extension-description-store-ukrainian.txt b/extension-description-store-ukrainian.txt
new file mode 100644
index 0000000..e595652
--- /dev/null
+++ b/extension-description-store-ukrainian.txt
@@ -0,0 +1,20 @@
+Return YouTube Dislike відновлює можливість бачити кількість відміток «Не подобається» на YouTube.
+
+Якщо не працює: відкрийте вкладку розширень (chrome://extensions/), вимкніть це розширення та увімкніть його знову. Це має вирішити більшість проблем, оскільки в Chromium є помилка, яка в деяких випадках перешкоджає роботі розширення. Сподіваюся, команда Chromium незабаром виправить це.
+
+Починаючи з 13 грудня 2021 року YouTube видалив можливість бачити відмітки «Не подобається» зі свого API.
+Це розширення має намір повернути владу користувачам, використовуючи поєднання архівних даних про кількість відмітко «Подобається» та «Не подобається», а також відмітки «Подобається»/«Не подобається» користувачів розширення, аби показати найточніші рейтинги.
+
+На разі більше ніж 200 мільйонів даних про відмітки «Подобається»/«Не подобається» збережено до 13 грудня 2021 року
+
+Активно росте та оновюється новими відео, що завантажені після 13 грудня 2021 року
+
+Що більше користувачів використовує розширення, то точніше воно буде
+
+Не надто популярні відео, завантажені після 13 грудня 2021 року, можуть містити менш точні дані, ніж популярні відео.
+
+Це розширення наразі знаходиться в активній стадії розробки, тому, якщо у вас виникнуть будь-які проблеми, не соромтесь повідомляти про них на нашій сторінці GitHub або на нашому сервері в Discord.
+
+Більше можливостей з'явиться найближчим часом!
+
+https://github.com/Anarios/return-youtube-dislike \ No newline at end of file