aboutsummaryrefslogtreecommitdiff
path: root/cs.js
diff options
context:
space:
mode:
Diffstat (limited to 'cs.js')
-rw-r--r--cs.js89
1 files changed, 89 insertions, 0 deletions
diff --git a/cs.js b/cs.js
new file mode 100644
index 0000000..34f9d79
--- /dev/null
+++ b/cs.js
@@ -0,0 +1,89 @@
+let base_url = "https://rb.marks.kitchen"
+let formats = ["Atom", "Mrss", "Html"]
+let types = {
+ 'application/rss+xml': "rss",
+ 'application/atom+xml': "atom",
+ 'application/rdf+xml': "rdf",
+ 'application/rss': "rss",
+ 'application/atom': "atom",
+ 'application/rdf': "rdf",
+ 'text/rss+xml': "rss",
+ 'text/atom+xml': "atom",
+ 'text/rdf+xml': "rdf",
+ 'text/rss': "rss",
+ 'text/atom': "atom",
+ 'text/rdf': "rdf"
+}
+
+function normalize_feed_url(feed_url) {
+ if (feed_url.startsWith('/')) {
+ let url = window.location.href
+ feed_url = url.split('/')[0] + '//' + url.split('/')[2] + feed_url;
+ }
+ return feed_url
+}
+
+function find_links_in_page() {
+ let links = document.querySelectorAll('link[type]');
+ let feeds = [];
+ for (let i = 0; i < links.length; i++) {
+ if (links[i].hasAttribute('type') && links[i].getAttribute('type') in types) {
+ let title = links[i].getAttribute('title')
+ let feed_url = normalize_feed_url(links[i].getAttribute('href'));
+ let type = types[links[i].getAttribute('type')]
+ let feed = {
+ type: `native: ${title || type}`,
+ url: feed_url,
+ };
+ feeds.push(feed);
+ }
+ }
+ return feeds
+}
+
+function get_all_types(feed_url) {
+ let feeds = [];
+ formats.forEach(el => {
+ feeds.push({
+ type: `rss-bridge: ${el}`,
+ url: feed_url + el
+ });
+ })
+ return feeds;
+}
+
+async function get_insta(url) {
+ let insta_url = url + "?__a=1"
+ console.log("fetching")
+ let res = await fetch(insta_url);
+ let json = await res.json();
+ let uid = json.graphql.user.id
+ let feed_url = `${base_url}/?action=display&bridge=Instagram&context=Username&u=${uid}&media_type=all&format=`;
+ return get_all_types(feed_url)
+}
+
+function get_twitter(url) {
+ let pattern = /twitter.com\/(\w+).*/
+ let match = url.match(pattern);
+ let twitter_handle = match[1]
+ let feed_url = `${base_url}/?action=display&bridge=Twitter&context=By+username&u=${twitter_handle}&format=`
+ return get_all_types(feed_url)
+}
+
+
+async function get_feed_urls() {
+ let all_feed_urls = []
+ let url = window.location.href;
+ //url = url.toLowerCase()
+ if (url.includes("instagram")) {
+ all_feed_urls = all_feed_urls.concat(await get_insta(url))
+ } else if (url.includes("twitter")) {
+ all_feed_urls = all_feed_urls.concat(get_twitter(url))
+ }
+ all_feed_urls = all_feed_urls.concat(find_links_in_page())
+ return all_feed_urls
+}
+
+browser.runtime.onMessage.addListener(function (msg, sender) {
+ return Promise.resolve(get_feed_urls());
+})