diff options
Diffstat (limited to '.config/qutebrowser/greasemonkey/miniflux.js')
-rwxr-xr-x | .config/qutebrowser/greasemonkey/miniflux.js | 83 |
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); +} |