diff options
author | Romain Gonçalves <me@rgoncalves.se> | 2021-12-23 18:28:03 +0000 |
---|---|---|
committer | Romain Gonçalves <me@rgoncalves.se> | 2021-12-23 18:28:03 +0000 |
commit | 0f08d04698c814955116b6bae50752e64b774d8f (patch) | |
tree | 8cf9a33557093eebfd25aab2872e97639c7e2f62 /.config/qutebrowser/greasemonkey/miniflux.js | |
download | dots-0f08d04698c814955116b6bae50752e64b774d8f.tar.gz |
Thu Dec 23 06:28:03 PM UTC 2021
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); +} |