summaryrefslogtreecommitdiffstats
path: root/.config/qutebrowser/greasemonkey/miniflux.js
diff options
context:
space:
mode:
Diffstat (limited to '.config/qutebrowser/greasemonkey/miniflux.js')
-rwxr-xr-x.config/qutebrowser/greasemonkey/miniflux.js83
1 files changed, 83 insertions, 0 deletions
diff --git a/.config/qutebrowser/greasemonkey/miniflux.js b/.config/qutebrowser/greasemonkey/miniflux.js
new file mode 100755
index 0000000..4b17b17
--- /dev/null
+++ b/.config/qutebrowser/greasemonkey/miniflux.js
@@ -0,0 +1,83 @@
+// ==UserScript==
+// @name custom miniflux
+// @match *://miniflux.rgoncalves.se/*NONE
+// @grant none
+// ==/UserScript==
+
+function get_img_content(content) {
+ var object = document.createElement("div");
+ object.innerHTML = content;
+
+ try {
+ url = object.getElementsByTagName("img")[0].src;
+ } catch (error) {
+ url = undefined;
+ }
+
+ return url;
+}
+
+function add_entry_images(article) {
+ var article_meta = article.getElementsByClassName("item-meta")[0];
+ var article_frame = document.createElement("div");
+ var article_id = article.getElementsByClassName("item-title")[0]
+ .getElementsByTagName("a")[0]
+ .href
+ .split("/")
+ .splice(-1, 1);
+
+ article_meta.appendChild(article_frame);
+
+ fetch(`/v1/entries/${article_id}`)
+ .then(res => res.json())
+ .then((res) => {
+ var url;
+
+ try {
+ url = res["enclosures"][0]["url"];
+ } catch (error) {
+ url = get_img_content(res["content"]);
+ }
+
+ if (typeof url === 'undefined') {
+ return;
+ }
+
+ console.log(url);
+
+ img = document.createElement("img");
+ img.src = url;
+ img.style.width = "100%";
+ img.style.minHeight = "100px";
+ img.loading = "lazy";
+
+ article_frame.appendChild(img);
+ })
+}
+
+function has_displayable_image(article) {
+ category = article.getElementsByClassName("category")[0]
+ .getElementsByTagName("a")[0]
+ .innerText;
+
+ return category === "blog"
+ || category === "hn"
+ || category === "social"
+ || category === "yt";
+}
+
+details = document.getElementsByTagName("details");
+
+for (let detail of details) {
+ detail.open = true;
+}
+
+articles = document.getElementsByTagName("article");
+
+for (let article of articles) {
+ if (! has_displayable_image(article)) {
+ continue;
+ }
+
+ add_entry_images(article);
+}
remember that computers suck.