From 978498a5aac4f62109efea816327ec14c75e4573 Mon Sep 17 00:00:00 2001
From: Aryan Mane <146648718+ARYAN-9099@users.noreply.github.com>
Date: Fri, 3 Jul 2026 18:27:32 +0530
Subject: [PATCH 1/5] Add DreamyTranslationsParser
---
plugin/js/parsers/DreamyTranslationsParser.js | 60 +++++++++++++++++++
plugin/popup.html | 3 +-
2 files changed, 62 insertions(+), 1 deletion(-)
create mode 100644 plugin/js/parsers/DreamyTranslationsParser.js
diff --git a/plugin/js/parsers/DreamyTranslationsParser.js b/plugin/js/parsers/DreamyTranslationsParser.js
new file mode 100644
index 00000000..98f29f65
--- /dev/null
+++ b/plugin/js/parsers/DreamyTranslationsParser.js
@@ -0,0 +1,60 @@
+"use strict";
+
+parserFactory.register("dreamy-translations.com", () => new DreamyTranslationsParser());
+parserFactory.register("dreamytranslations.com", () => new DreamyTranslationsParser());
+
+parserFactory.registerManualSelect(
+ "Dreamy Translations",
+ () => new DreamyTranslationsParser()
+);
+
+class DreamyTranslationsParser extends Parser {
+ constructor() {
+ super();
+ }
+
+ async getChapterUrls(dom) {
+ let links = [...dom.querySelectorAll("a")]
+ .filter(a => a.href && a.href.includes("/chapter/") && a.hasAttribute("data-chapter-index"));
+
+ let chapters = links.map(a => {
+ let title = "";
+ let chNumSpan = a.querySelector("span.font-medium");
+ let titleP = a.querySelector("p.truncate");
+
+ if (chNumSpan && titleP) {
+ title = chNumSpan.textContent.trim() + " - " + titleP.textContent.trim();
+ } else {
+ title = a.textContent.trim();
+ }
+
+ return {
+ sourceUrl: a.href,
+ title: title
+ };
+ });
+
+ return chapters;
+ }
+
+ findCoverImageUrl(dom) {
+ let img = dom.querySelector('img[src*="/covers/"]');
+ if (img) {
+ return img.src;
+ }
+ return super.findCoverImageUrl(dom);
+ }
+
+ removeUnwantedElementsFromContentElement(element) {
+ util.removeElements(element.querySelectorAll("sup.tl-note"));
+ super.removeUnwantedElementsFromContentElement(element);
+ }
+
+ findContent(dom) {
+ return dom.querySelector(".chapter-content");
+ }
+
+ findChapterTitle(dom) {
+ return dom.querySelector("button.text-2xl span > span");
+ }
+}
diff --git a/plugin/popup.html b/plugin/popup.html
index 0930ebb8..b7ebd89d 100644
--- a/plugin/popup.html
+++ b/plugin/popup.html
@@ -1,4 +1,4 @@
-
+
@@ -679,6 +679,7 @@ Instructions
+
From 86b07f4ab6507ea56966a3745ce732e5ab846c5d Mon Sep 17 00:00:00 2001
From: Aryan Mane <146648718+ARYAN-9099@users.noreply.github.com>
Date: Fri, 3 Jul 2026 18:51:46 +0530
Subject: [PATCH 2/5] fixed double quotes bug
---
plugin/js/parsers/DreamyTranslationsParser.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plugin/js/parsers/DreamyTranslationsParser.js b/plugin/js/parsers/DreamyTranslationsParser.js
index 98f29f65..b2a6264d 100644
--- a/plugin/js/parsers/DreamyTranslationsParser.js
+++ b/plugin/js/parsers/DreamyTranslationsParser.js
@@ -38,7 +38,7 @@ class DreamyTranslationsParser extends Parser {
}
findCoverImageUrl(dom) {
- let img = dom.querySelector('img[src*="/covers/"]');
+ let img = dom.querySelector("img[src*=\\"/covers/\\"]");
if (img) {
return img.src;
}
From 78999fd76f3d3795f021c36f833269d1380ae9ad Mon Sep 17 00:00:00 2001
From: Aryan Mane <146648718+ARYAN-9099@users.noreply.github.com>
Date: Fri, 3 Jul 2026 18:59:37 +0530
Subject: [PATCH 3/5] fixed double quotes bug 2
---
plugin/js/parsers/DreamyTranslationsParser.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plugin/js/parsers/DreamyTranslationsParser.js b/plugin/js/parsers/DreamyTranslationsParser.js
index b2a6264d..c56ee4a1 100644
--- a/plugin/js/parsers/DreamyTranslationsParser.js
+++ b/plugin/js/parsers/DreamyTranslationsParser.js
@@ -38,7 +38,7 @@ class DreamyTranslationsParser extends Parser {
}
findCoverImageUrl(dom) {
- let img = dom.querySelector("img[src*=\\"/covers/\\"]");
+ let img = dom.querySelector("img[src*='/covers/']");
if (img) {
return img.src;
}
From 5ff32410fb27ed44d71efdafc944ad051ce62ca7 Mon Sep 17 00:00:00 2001
From: Aryan Mane <146648718+ARYAN-9099@users.noreply.github.com>
Date: Fri, 3 Jul 2026 19:26:50 +0530
Subject: [PATCH 4/5] removed wrong site
---
plugin/js/parsers/DreamyTranslationsParser.js | 1 -
1 file changed, 1 deletion(-)
diff --git a/plugin/js/parsers/DreamyTranslationsParser.js b/plugin/js/parsers/DreamyTranslationsParser.js
index c56ee4a1..db4c10b3 100644
--- a/plugin/js/parsers/DreamyTranslationsParser.js
+++ b/plugin/js/parsers/DreamyTranslationsParser.js
@@ -1,7 +1,6 @@
"use strict";
parserFactory.register("dreamy-translations.com", () => new DreamyTranslationsParser());
-parserFactory.register("dreamytranslations.com", () => new DreamyTranslationsParser());
parserFactory.registerManualSelect(
"Dreamy Translations",
From 0aba97954ceb12e3eb362acfa4ee32a059f3558e Mon Sep 17 00:00:00 2001
From: gamebeaker
Date: Sat, 4 Jul 2026 00:08:13 +0200
Subject: [PATCH 5/5] remove DreamyTranslationsParser registerManualSelect
---
plugin/js/parsers/DreamyTranslationsParser.js | 5 -----
1 file changed, 5 deletions(-)
diff --git a/plugin/js/parsers/DreamyTranslationsParser.js b/plugin/js/parsers/DreamyTranslationsParser.js
index db4c10b3..525444a1 100644
--- a/plugin/js/parsers/DreamyTranslationsParser.js
+++ b/plugin/js/parsers/DreamyTranslationsParser.js
@@ -2,11 +2,6 @@
parserFactory.register("dreamy-translations.com", () => new DreamyTranslationsParser());
-parserFactory.registerManualSelect(
- "Dreamy Translations",
- () => new DreamyTranslationsParser()
-);
-
class DreamyTranslationsParser extends Parser {
constructor() {
super();