Latest commit

History

73 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

NodePie

Simple RSS/Atom parser for Node.JS that takes after SimplePie and MagPie.

Installation

npm install nodepie

Compatibility

Good for RSS0.92, RSS2.0, RDF and Atom1.0 feeds.

Tested against Wordpress, Blogger and Feedburner feeds.

Usage

var NodePie = require("nodepie"),
xml, feed;
xml = require("fs").readFileSync("feed.xml");
// create a new NodePie object
feed = new NodePie(xml);
feed.init();
// output feed title
console.log(feed.getTitle());
// output the titles for the first 3 entries
feed.getItems(0, 3).forEach(function(item){
console.log(item.getTitle());
});

API

Constructor

new NodePie(xml[, options])

Where

  • xml is a String or Buffer containing the feed XML
  • options is an optional options object

Constructor generates a NodePie object for parsing the feed

Usage

var NodePie = require("nodepie")
feed = new NodePie(xml_contents);

NB!xml should be a Buffer if the XML is not in UTF-8 encoding. If xml is a String it is automatically considered as UTF-8 and the encoding is not converted.

You can overwrite automatic detection of the encoding by setting explicitly it with an options property (only has effect when the input is a Buffer value):

var np = new NodePie(xml_buffer, {encoding: "ISO-8859-1"});

Feed level methods

- init()

nodepie.init()

Parses XML and fetches any used namespaces from the object

Usage:

 var feed = new NodePie(xml_contents);
feed.init();

- getDate()

nodepie.getDate() → Date

Fetches the update date of the feed and returns it as a Date object

Usage:

var feed = new NodePie(xml_contents);
feed.init();
date = feed.getDate();
console.log(date.getFullYear());

Returns false if the date is not found from the feed or if it's in invalid format

- getDescription()

nodepie.getDescription() → String

Fetches the description of the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
description = feed.getDescription();

Returns false if the description is not found from the feed

- getEncoding()

nodepie.getEncoding() → String

Returns the encoding for the source feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
source_encoding = feed.getEncoding();

NB! The result is always UTF-8, this only indicates the encoding of the source feed file.

- getHub()

nodepie.getHub() → String

Fetches the PubSubHubbub hub of the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
hub = feed.getHub();

Returns false if the hub is not found from the feed

- getImage()

nodepie.getImage() → String

Returns the URL or the feed image or false if not found

Usage:

var feed = new NodePie(xml_contents);
feed.init();
imageUrl = feed.getImage();

- getItem()

nodepie.getItem(i) → Array

Where

  • i is the index of the entry

Fetches a NodePie.Item object from defined index or false if the query is out of bounds

Usage:

var feed = new NodePie(xml_contents);
feed.init();
// fetch the first entry from the feed
item = feed.getItem(0);

- getItems()

nodepie.getItems([start [,length]]) → Array

Where

  • start is start index
  • length indicates how many items to fetch

Fetches NodePie.Item objects from the feed as an array

Usage:

var feed = new NodePie(xml_contents);
feed.init();
// fetch the first 3 entries from the feed
items = feed.getItems(0, feed.getItemQuantity(3));

- getItemQuantity()

nodepie.getItemQuantity([max]) → Number

Where

  • max is the maximum number to report

Returns the number of entries in the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
// total items in feed: 10
total_entries = feed.getItemQuantity(); // 10
total_entries = feed.getItemQuantity(5); // 5
total_entries = feed.getItemQuantity(50); // 10

- getPermalink()

nodepie.getPermalink() → String

Fetches the link of the blog

Usage:

var feed = new NodePie(xml_contents);
feed.init();
url = feed.getPermalink();

Returns false if the url is not found from the feed

- getTitle()

nodepie.getTitle() → String

Fetches the title of the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
title = feed.getTitle();

Returns false if the title is not found from the feed

Item level methods

- getAuthor()

item.getAuthor() → String

Fetches the (first) author of the entry

Usage:

var item = feed.getItem(0);
author = item.getAuthor();

Returns false if no authors are not found from the entry

- getAuthors()

item.getAuthors() → Array

Fetches the authors (as an array of strings) of the entry

Usage:

var item = feed.getItem(0);
authors = item.getAuthors();

- getCategory()

item.getCategory() → String

Fetches the (first) category of the entry.

Usage:

var item = feed.getItem(0);
category = item.getCategory();

Returns false if no categories are found from the entry

- getCategories()

item.getCategories() → Array

Fetches the categories (as an array of strings) for the entry.

Usage:

var item = feed.getItem(0);
categories = item.getCategories();

Returns false if the categories are not found from the entry

- getComments()

item.getComments() → Object

Fetches an object containing links to the HTML comments page and to an Atom/RSS feed of comments for the post

{
html: "http://link_to_html_page",
feed: "http://link_to_comments_feed"
}

Usage:

var item = feed.getItem(0);
comments = item.getComments();
console.log("See all comments: " + comments.html);

Returns false if the no information about comments is found from the entry

- getContents()

item.getContents() → String

Fetches the contents of the entry. Prefers full text, otherwise falls back to description.

Usage:

var item = feed.getItem(0);
contents = item.getContents();

Returns false if the description or contents are not found from the entry

- getDate()

item.getDate() → Date

Fetches the date of the entry as a Date object

Usage:

var item = feed.getItem(0);
date = item.getDate();
console.log(date.getFullYear());

Returns false if the date is not found from the entry or if it's in invalid format

- getDescription()

item.getDescription() → String

Fetches the description of the entry. Prefers summaries, otherwise falls back to full content.

Usage:

var item = feed.getItem(0);
description = item.getDescription();

Returns false if the description or contents are not found from the entry

- getPermalink()

item.getPermalink() → String

Fetches the link of the entry

Usage:

var item = feed.getItem(0);
url = item.getPermalink();

Returns false if the url is not found from the entry

- getTitle()

item.getTitle() → String

Fetches the title of the entry

Usage:

var item = feed.getItem(0);
title = item.getTitle();

Returns false if the title is not found from the entry

- getUpdateDate()

item.getUpdateDate() → Date

Fetches the update date of the entry as a Date object

Usage:

var item = feed.getItem(0);
date = item.getUpdateDate();
console.log(date.getFullYear());

Falls back to getDate when update date not found or returns false if the date is not found from the entry or if it's in invalid format

About

RSS/Atom parser for Node.JS

Resources

Stars

1 star

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks"); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

73 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

NodePie

Simple RSS/Atom parser for Node.JS that takes after SimplePie and MagPie.

Installation

npm install nodepie

Compatibility

Good for RSS0.92, RSS2.0, RDF and Atom1.0 feeds.

Tested against Wordpress, Blogger and Feedburner feeds.

Usage

var NodePie = require("nodepie"),
xml, feed;
xml = require("fs").readFileSync("feed.xml");
// create a new NodePie object
feed = new NodePie(xml);
feed.init();
// output feed title
console.log(feed.getTitle());
// output the titles for the first 3 entries
feed.getItems(0, 3).forEach(function(item){
console.log(item.getTitle());
});

API

Constructor

new NodePie(xml[, options])

Where

  • xml is a String or Buffer containing the feed XML
  • options is an optional options object

Constructor generates a NodePie object for parsing the feed

Usage

var NodePie = require("nodepie")
feed = new NodePie(xml_contents);

NB!xml should be a Buffer if the XML is not in UTF-8 encoding. If xml is a String it is automatically considered as UTF-8 and the encoding is not converted.

You can overwrite automatic detection of the encoding by setting explicitly it with an options property (only has effect when the input is a Buffer value):

var np = new NodePie(xml_buffer, {encoding: "ISO-8859-1"});

Feed level methods

- init()

nodepie.init()

Parses XML and fetches any used namespaces from the object

Usage:

 var feed = new NodePie(xml_contents);
feed.init();

- getDate()

nodepie.getDate() → Date

Fetches the update date of the feed and returns it as a Date object

Usage:

var feed = new NodePie(xml_contents);
feed.init();
date = feed.getDate();
console.log(date.getFullYear());

Returns false if the date is not found from the feed or if it's in invalid format

- getDescription()

nodepie.getDescription() → String

Fetches the description of the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
description = feed.getDescription();

Returns false if the description is not found from the feed

- getEncoding()

nodepie.getEncoding() → String

Returns the encoding for the source feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
source_encoding = feed.getEncoding();

NB! The result is always UTF-8, this only indicates the encoding of the source feed file.

- getHub()

nodepie.getHub() → String

Fetches the PubSubHubbub hub of the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
hub = feed.getHub();

Returns false if the hub is not found from the feed

- getImage()

nodepie.getImage() → String

Returns the URL or the feed image or false if not found

Usage:

var feed = new NodePie(xml_contents);
feed.init();
imageUrl = feed.getImage();

- getItem()

nodepie.getItem(i) → Array

Where

  • i is the index of the entry

Fetches a NodePie.Item object from defined index or false if the query is out of bounds

Usage:

var feed = new NodePie(xml_contents);
feed.init();
// fetch the first entry from the feed
item = feed.getItem(0);

- getItems()

nodepie.getItems([start [,length]]) → Array

Where

  • start is start index
  • length indicates how many items to fetch

Fetches NodePie.Item objects from the feed as an array

Usage:

var feed = new NodePie(xml_contents);
feed.init();
// fetch the first 3 entries from the feed
items = feed.getItems(0, feed.getItemQuantity(3));

- getItemQuantity()

nodepie.getItemQuantity([max]) → Number

Where

  • max is the maximum number to report

Returns the number of entries in the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
// total items in feed: 10
total_entries = feed.getItemQuantity(); // 10
total_entries = feed.getItemQuantity(5); // 5
total_entries = feed.getItemQuantity(50); // 10

- getPermalink()

nodepie.getPermalink() → String

Fetches the link of the blog

Usage:

var feed = new NodePie(xml_contents);
feed.init();
url = feed.getPermalink();

Returns false if the url is not found from the feed

- getTitle()

nodepie.getTitle() → String

Fetches the title of the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
title = feed.getTitle();

Returns false if the title is not found from the feed

Item level methods

- getAuthor()

item.getAuthor() → String

Fetches the (first) author of the entry

Usage:

var item = feed.getItem(0);
author = item.getAuthor();

Returns false if no authors are not found from the entry

- getAuthors()

item.getAuthors() → Array

Fetches the authors (as an array of strings) of the entry

Usage:

var item = feed.getItem(0);
authors = item.getAuthors();

- getCategory()

item.getCategory() → String

Fetches the (first) category of the entry.

Usage:

var item = feed.getItem(0);
category = item.getCategory();

Returns false if no categories are found from the entry

- getCategories()

item.getCategories() → Array

Fetches the categories (as an array of strings) for the entry.

Usage:

var item = feed.getItem(0);
categories = item.getCategories();

Returns false if the categories are not found from the entry

- getComments()

item.getComments() → Object

Fetches an object containing links to the HTML comments page and to an Atom/RSS feed of comments for the post

{
html: "http://link_to_html_page",
feed: "http://link_to_comments_feed"
}

Usage:

var item = feed.getItem(0);
comments = item.getComments();
console.log("See all comments: " + comments.html);

Returns false if the no information about comments is found from the entry

- getContents()

item.getContents() → String

Fetches the contents of the entry. Prefers full text, otherwise falls back to description.

Usage:

var item = feed.getItem(0);
contents = item.getContents();

Returns false if the description or contents are not found from the entry

- getDate()

item.getDate() → Date

Fetches the date of the entry as a Date object

Usage:

var item = feed.getItem(0);
date = item.getDate();
console.log(date.getFullYear());

Returns false if the date is not found from the entry or if it's in invalid format

- getDescription()

item.getDescription() → String

Fetches the description of the entry. Prefers summaries, otherwise falls back to full content.

Usage:

var item = feed.getItem(0);
description = item.getDescription();

Returns false if the description or contents are not found from the entry

- getPermalink()

item.getPermalink() → String

Fetches the link of the entry

Usage:

var item = feed.getItem(0);
url = item.getPermalink();

Returns false if the url is not found from the entry

- getTitle()

item.getTitle() → String

Fetches the title of the entry

Usage:

var item = feed.getItem(0);
title = item.getTitle();

Returns false if the title is not found from the entry

- getUpdateDate()

item.getUpdateDate() → Date

Fetches the update date of the entry as a Date object

Usage:

var item = feed.getItem(0);
date = item.getUpdateDate();
console.log(date.getFullYear());

Falls back to getDate when update date not found or returns false if the date is not found from the entry or if it's in invalid format

About

RSS/Atom parser for Node.JS

Resources

Stars

1 star

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

73 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

NodePie

Simple RSS/Atom parser for Node.JS that takes after SimplePie and MagPie.

Installation

npm install nodepie

Compatibility

Good for RSS0.92, RSS2.0, RDF and Atom1.0 feeds.

Tested against Wordpress, Blogger and Feedburner feeds.

Usage

var NodePie = require("nodepie"),
xml, feed;
xml = require("fs").readFileSync("feed.xml");
// create a new NodePie object
feed = new NodePie(xml);
feed.init();
// output feed title
console.log(feed.getTitle());
// output the titles for the first 3 entries
feed.getItems(0, 3).forEach(function(item){
console.log(item.getTitle());
});

API

Constructor

new NodePie(xml[, options])

Where

  • xml is a String or Buffer containing the feed XML
  • options is an optional options object

Constructor generates a NodePie object for parsing the feed

Usage

var NodePie = require("nodepie")
feed = new NodePie(xml_contents);

NB!xml should be a Buffer if the XML is not in UTF-8 encoding. If xml is a String it is automatically considered as UTF-8 and the encoding is not converted.

You can overwrite automatic detection of the encoding by setting explicitly it with an options property (only has effect when the input is a Buffer value):

var np = new NodePie(xml_buffer, {encoding: "ISO-8859-1"});

Feed level methods

- init()

nodepie.init()

Parses XML and fetches any used namespaces from the object

Usage:

 var feed = new NodePie(xml_contents);
feed.init();

- getDate()

nodepie.getDate() → Date

Fetches the update date of the feed and returns it as a Date object

Usage:

var feed = new NodePie(xml_contents);
feed.init();
date = feed.getDate();
console.log(date.getFullYear());

Returns false if the date is not found from the feed or if it's in invalid format

- getDescription()

nodepie.getDescription() → String

Fetches the description of the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
description = feed.getDescription();

Returns false if the description is not found from the feed

- getEncoding()

nodepie.getEncoding() → String

Returns the encoding for the source feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
source_encoding = feed.getEncoding();

NB! The result is always UTF-8, this only indicates the encoding of the source feed file.

- getHub()

nodepie.getHub() → String

Fetches the PubSubHubbub hub of the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
hub = feed.getHub();

Returns false if the hub is not found from the feed

- getImage()

nodepie.getImage() → String

Returns the URL or the feed image or false if not found

Usage:

var feed = new NodePie(xml_contents);
feed.init();
imageUrl = feed.getImage();

- getItem()

nodepie.getItem(i) → Array

Where

  • i is the index of the entry

Fetches a NodePie.Item object from defined index or false if the query is out of bounds

Usage:

var feed = new NodePie(xml_contents);
feed.init();
// fetch the first entry from the feed
item = feed.getItem(0);

- getItems()

nodepie.getItems([start [,length]]) → Array

Where

  • start is start index
  • length indicates how many items to fetch

Fetches NodePie.Item objects from the feed as an array

Usage:

var feed = new NodePie(xml_contents);
feed.init();
// fetch the first 3 entries from the feed
items = feed.getItems(0, feed.getItemQuantity(3));

- getItemQuantity()

nodepie.getItemQuantity([max]) → Number

Where

  • max is the maximum number to report

Returns the number of entries in the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
// total items in feed: 10
total_entries = feed.getItemQuantity(); // 10
total_entries = feed.getItemQuantity(5); // 5
total_entries = feed.getItemQuantity(50); // 10

- getPermalink()

nodepie.getPermalink() → String

Fetches the link of the blog

Usage:

var feed = new NodePie(xml_contents);
feed.init();
url = feed.getPermalink();

Returns false if the url is not found from the feed

- getTitle()

nodepie.getTitle() → String

Fetches the title of the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
title = feed.getTitle();

Returns false if the title is not found from the feed

Item level methods

- getAuthor()

item.getAuthor() → String

Fetches the (first) author of the entry

Usage:

var item = feed.getItem(0);
author = item.getAuthor();

Returns false if no authors are not found from the entry

- getAuthors()

item.getAuthors() → Array

Fetches the authors (as an array of strings) of the entry

Usage:

var item = feed.getItem(0);
authors = item.getAuthors();

- getCategory()

item.getCategory() → String

Fetches the (first) category of the entry.

Usage:

var item = feed.getItem(0);
category = item.getCategory();

Returns false if no categories are found from the entry

- getCategories()

item.getCategories() → Array

Fetches the categories (as an array of strings) for the entry.

Usage:

var item = feed.getItem(0);
categories = item.getCategories();

Returns false if the categories are not found from the entry

- getComments()

item.getComments() → Object

Fetches an object containing links to the HTML comments page and to an Atom/RSS feed of comments for the post

{
html: "http://link_to_html_page",
feed: "http://link_to_comments_feed"
}

Usage:

var item = feed.getItem(0);
comments = item.getComments();
console.log("See all comments: " + comments.html);

Returns false if the no information about comments is found from the entry

- getContents()

item.getContents() → String

Fetches the contents of the entry. Prefers full text, otherwise falls back to description.

Usage:

var item = feed.getItem(0);
contents = item.getContents();

Returns false if the description or contents are not found from the entry

- getDate()

item.getDate() → Date

Fetches the date of the entry as a Date object

Usage:

var item = feed.getItem(0);
date = item.getDate();
console.log(date.getFullYear());

Returns false if the date is not found from the entry or if it's in invalid format

- getDescription()

item.getDescription() → String

Fetches the description of the entry. Prefers summaries, otherwise falls back to full content.

Usage:

var item = feed.getItem(0);
description = item.getDescription();

Returns false if the description or contents are not found from the entry

- getPermalink()

item.getPermalink() → String

Fetches the link of the entry

Usage:

var item = feed.getItem(0);
url = item.getPermalink();

Returns false if the url is not found from the entry

- getTitle()

item.getTitle() → String

Fetches the title of the entry

Usage:

var item = feed.getItem(0);
title = item.getTitle();

Returns false if the title is not found from the entry

- getUpdateDate()

item.getUpdateDate() → Date

Fetches the update date of the entry as a Date object

Usage:

var item = feed.getItem(0);
date = item.getUpdateDate();
console.log(date.getFullYear());

Falls back to getDate when update date not found or returns false if the date is not found from the entry or if it's in invalid format

About

RSS/Atom parser for Node.JS

Resources

Stars

1 star

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length \u003e 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

73 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

NodePie

Simple RSS/Atom parser for Node.JS that takes after SimplePie and MagPie.

Installation

npm install nodepie

Compatibility

Good for RSS0.92, RSS2.0, RDF and Atom1.0 feeds.

Tested against Wordpress, Blogger and Feedburner feeds.

Usage

var NodePie = require("nodepie"),
xml, feed;
xml = require("fs").readFileSync("feed.xml");
// create a new NodePie object
feed = new NodePie(xml);
feed.init();
// output feed title
console.log(feed.getTitle());
// output the titles for the first 3 entries
feed.getItems(0, 3).forEach(function(item){
console.log(item.getTitle());
});

API

Constructor

new NodePie(xml[, options])

Where

  • xml is a String or Buffer containing the feed XML
  • options is an optional options object

Constructor generates a NodePie object for parsing the feed

Usage

var NodePie = require("nodepie")
feed = new NodePie(xml_contents);

NB!xml should be a Buffer if the XML is not in UTF-8 encoding. If xml is a String it is automatically considered as UTF-8 and the encoding is not converted.

You can overwrite automatic detection of the encoding by setting explicitly it with an options property (only has effect when the input is a Buffer value):

var np = new NodePie(xml_buffer, {encoding: "ISO-8859-1"});

Feed level methods

- init()

nodepie.init()

Parses XML and fetches any used namespaces from the object

Usage:

 var feed = new NodePie(xml_contents);
feed.init();

- getDate()

nodepie.getDate() → Date

Fetches the update date of the feed and returns it as a Date object

Usage:

var feed = new NodePie(xml_contents);
feed.init();
date = feed.getDate();
console.log(date.getFullYear());

Returns false if the date is not found from the feed or if it's in invalid format

- getDescription()

nodepie.getDescription() → String

Fetches the description of the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
description = feed.getDescription();

Returns false if the description is not found from the feed

- getEncoding()

nodepie.getEncoding() → String

Returns the encoding for the source feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
source_encoding = feed.getEncoding();

NB! The result is always UTF-8, this only indicates the encoding of the source feed file.

- getHub()

nodepie.getHub() → String

Fetches the PubSubHubbub hub of the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
hub = feed.getHub();

Returns false if the hub is not found from the feed

- getImage()

nodepie.getImage() → String

Returns the URL or the feed image or false if not found

Usage:

var feed = new NodePie(xml_contents);
feed.init();
imageUrl = feed.getImage();

- getItem()

nodepie.getItem(i) → Array

Where

  • i is the index of the entry

Fetches a NodePie.Item object from defined index or false if the query is out of bounds

Usage:

var feed = new NodePie(xml_contents);
feed.init();
// fetch the first entry from the feed
item = feed.getItem(0);

- getItems()

nodepie.getItems([start [,length]]) → Array

Where

  • start is start index
  • length indicates how many items to fetch

Fetches NodePie.Item objects from the feed as an array

Usage:

var feed = new NodePie(xml_contents);
feed.init();
// fetch the first 3 entries from the feed
items = feed.getItems(0, feed.getItemQuantity(3));

- getItemQuantity()

nodepie.getItemQuantity([max]) → Number

Where

  • max is the maximum number to report

Returns the number of entries in the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
// total items in feed: 10
total_entries = feed.getItemQuantity(); // 10
total_entries = feed.getItemQuantity(5); // 5
total_entries = feed.getItemQuantity(50); // 10

- getPermalink()

nodepie.getPermalink() → String

Fetches the link of the blog

Usage:

var feed = new NodePie(xml_contents);
feed.init();
url = feed.getPermalink();

Returns false if the url is not found from the feed

- getTitle()

nodepie.getTitle() → String

Fetches the title of the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
title = feed.getTitle();

Returns false if the title is not found from the feed

Item level methods

- getAuthor()

item.getAuthor() → String

Fetches the (first) author of the entry

Usage:

var item = feed.getItem(0);
author = item.getAuthor();

Returns false if no authors are not found from the entry

- getAuthors()

item.getAuthors() → Array

Fetches the authors (as an array of strings) of the entry

Usage:

var item = feed.getItem(0);
authors = item.getAuthors();

- getCategory()

item.getCategory() → String

Fetches the (first) category of the entry.

Usage:

var item = feed.getItem(0);
category = item.getCategory();

Returns false if no categories are found from the entry

- getCategories()

item.getCategories() → Array

Fetches the categories (as an array of strings) for the entry.

Usage:

var item = feed.getItem(0);
categories = item.getCategories();

Returns false if the categories are not found from the entry

- getComments()

item.getComments() → Object

Fetches an object containing links to the HTML comments page and to an Atom/RSS feed of comments for the post

{
html: "http://link_to_html_page",
feed: "http://link_to_comments_feed"
}

Usage:

var item = feed.getItem(0);
comments = item.getComments();
console.log("See all comments: " + comments.html);

Returns false if the no information about comments is found from the entry

- getContents()

item.getContents() → String

Fetches the contents of the entry. Prefers full text, otherwise falls back to description.

Usage:

var item = feed.getItem(0);
contents = item.getContents();

Returns false if the description or contents are not found from the entry

- getDate()

item.getDate() → Date

Fetches the date of the entry as a Date object

Usage:

var item = feed.getItem(0);
date = item.getDate();
console.log(date.getFullYear());

Returns false if the date is not found from the entry or if it's in invalid format

- getDescription()

item.getDescription() → String

Fetches the description of the entry. Prefers summaries, otherwise falls back to full content.

Usage:

var item = feed.getItem(0);
description = item.getDescription();

Returns false if the description or contents are not found from the entry

- getPermalink()

item.getPermalink() → String

Fetches the link of the entry

Usage:

var item = feed.getItem(0);
url = item.getPermalink();

Returns false if the url is not found from the entry

- getTitle()

item.getTitle() → String

Fetches the title of the entry

Usage:

var item = feed.getItem(0);
title = item.getTitle();

Returns false if the title is not found from the entry

- getUpdateDate()

item.getUpdateDate() → Date

Fetches the update date of the entry as a Date object

Usage:

var item = feed.getItem(0);
date = item.getUpdateDate();
console.log(date.getFullYear());

Falls back to getDate when update date not found or returns false if the date is not found from the entry or if it's in invalid format

About

RSS/Atom parser for Node.JS

Resources

Stars

1 star

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

73 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

NodePie

Simple RSS/Atom parser for Node.JS that takes after SimplePie and MagPie.

Installation

npm install nodepie

Compatibility

Good for RSS0.92, RSS2.0, RDF and Atom1.0 feeds.

Tested against Wordpress, Blogger and Feedburner feeds.

Usage

var NodePie = require("nodepie"),
xml, feed;
xml = require("fs").readFileSync("feed.xml");
// create a new NodePie object
feed = new NodePie(xml);
feed.init();
// output feed title
console.log(feed.getTitle());
// output the titles for the first 3 entries
feed.getItems(0, 3).forEach(function(item){
console.log(item.getTitle());
});

API

Constructor

new NodePie(xml[, options])

Where

  • xml is a String or Buffer containing the feed XML
  • options is an optional options object

Constructor generates a NodePie object for parsing the feed

Usage

var NodePie = require("nodepie")
feed = new NodePie(xml_contents);

NB!xml should be a Buffer if the XML is not in UTF-8 encoding. If xml is a String it is automatically considered as UTF-8 and the encoding is not converted.

You can overwrite automatic detection of the encoding by setting explicitly it with an options property (only has effect when the input is a Buffer value):

var np = new NodePie(xml_buffer, {encoding: "ISO-8859-1"});

Feed level methods

- init()

nodepie.init()

Parses XML and fetches any used namespaces from the object

Usage:

 var feed = new NodePie(xml_contents);
feed.init();

- getDate()

nodepie.getDate() → Date

Fetches the update date of the feed and returns it as a Date object

Usage:

var feed = new NodePie(xml_contents);
feed.init();
date = feed.getDate();
console.log(date.getFullYear());

Returns false if the date is not found from the feed or if it's in invalid format

- getDescription()

nodepie.getDescription() → String

Fetches the description of the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
description = feed.getDescription();

Returns false if the description is not found from the feed

- getEncoding()

nodepie.getEncoding() → String

Returns the encoding for the source feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
source_encoding = feed.getEncoding();

NB! The result is always UTF-8, this only indicates the encoding of the source feed file.

- getHub()

nodepie.getHub() → String

Fetches the PubSubHubbub hub of the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
hub = feed.getHub();

Returns false if the hub is not found from the feed

- getImage()

nodepie.getImage() → String

Returns the URL or the feed image or false if not found

Usage:

var feed = new NodePie(xml_contents);
feed.init();
imageUrl = feed.getImage();

- getItem()

nodepie.getItem(i) → Array

Where

  • i is the index of the entry

Fetches a NodePie.Item object from defined index or false if the query is out of bounds

Usage:

var feed = new NodePie(xml_contents);
feed.init();
// fetch the first entry from the feed
item = feed.getItem(0);

- getItems()

nodepie.getItems([start [,length]]) → Array

Where

  • start is start index
  • length indicates how many items to fetch

Fetches NodePie.Item objects from the feed as an array

Usage:

var feed = new NodePie(xml_contents);
feed.init();
// fetch the first 3 entries from the feed
items = feed.getItems(0, feed.getItemQuantity(3));

- getItemQuantity()

nodepie.getItemQuantity([max]) → Number

Where

  • max is the maximum number to report

Returns the number of entries in the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
// total items in feed: 10
total_entries = feed.getItemQuantity(); // 10
total_entries = feed.getItemQuantity(5); // 5
total_entries = feed.getItemQuantity(50); // 10

- getPermalink()

nodepie.getPermalink() → String

Fetches the link of the blog

Usage:

var feed = new NodePie(xml_contents);
feed.init();
url = feed.getPermalink();

Returns false if the url is not found from the feed

- getTitle()

nodepie.getTitle() → String

Fetches the title of the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
title = feed.getTitle();

Returns false if the title is not found from the feed

Item level methods

- getAuthor()

item.getAuthor() → String

Fetches the (first) author of the entry

Usage:

var item = feed.getItem(0);
author = item.getAuthor();

Returns false if no authors are not found from the entry

- getAuthors()

item.getAuthors() → Array

Fetches the authors (as an array of strings) of the entry

Usage:

var item = feed.getItem(0);
authors = item.getAuthors();

- getCategory()

item.getCategory() → String

Fetches the (first) category of the entry.

Usage:

var item = feed.getItem(0);
category = item.getCategory();

Returns false if no categories are found from the entry

- getCategories()

item.getCategories() → Array

Fetches the categories (as an array of strings) for the entry.

Usage:

var item = feed.getItem(0);
categories = item.getCategories();

Returns false if the categories are not found from the entry

- getComments()

item.getComments() → Object

Fetches an object containing links to the HTML comments page and to an Atom/RSS feed of comments for the post

{
html: "http://link_to_html_page",
feed: "http://link_to_comments_feed"
}

Usage:

var item = feed.getItem(0);
comments = item.getComments();
console.log("See all comments: " + comments.html);

Returns false if the no information about comments is found from the entry

- getContents()

item.getContents() → String

Fetches the contents of the entry. Prefers full text, otherwise falls back to description.

Usage:

var item = feed.getItem(0);
contents = item.getContents();

Returns false if the description or contents are not found from the entry

- getDate()

item.getDate() → Date

Fetches the date of the entry as a Date object

Usage:

var item = feed.getItem(0);
date = item.getDate();
console.log(date.getFullYear());

Returns false if the date is not found from the entry or if it's in invalid format

- getDescription()

item.getDescription() → String

Fetches the description of the entry. Prefers summaries, otherwise falls back to full content.

Usage:

var item = feed.getItem(0);
description = item.getDescription();

Returns false if the description or contents are not found from the entry

- getPermalink()

item.getPermalink() → String

Fetches the link of the entry

Usage:

var item = feed.getItem(0);
url = item.getPermalink();

Returns false if the url is not found from the entry

- getTitle()

item.getTitle() → String

Fetches the title of the entry

Usage:

var item = feed.getItem(0);
title = item.getTitle();

Returns false if the title is not found from the entry

- getUpdateDate()

item.getUpdateDate() → Date

Fetches the update date of the entry as a Date object

Usage:

var item = feed.getItem(0);
date = item.getUpdateDate();
console.log(date.getFullYear());

Falls back to getDate when update date not found or returns false if the date is not found from the entry or if it's in invalid format

About

RSS/Atom parser for Node.JS

Resources

Stars

1 star

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

73 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

NodePie

Simple RSS/Atom parser for Node.JS that takes after SimplePie and MagPie.

Installation

npm install nodepie

Compatibility

Good for RSS0.92, RSS2.0, RDF and Atom1.0 feeds.

Tested against Wordpress, Blogger and Feedburner feeds.

Usage

var NodePie = require("nodepie"),
xml, feed;
xml = require("fs").readFileSync("feed.xml");
// create a new NodePie object
feed = new NodePie(xml);
feed.init();
// output feed title
console.log(feed.getTitle());
// output the titles for the first 3 entries
feed.getItems(0, 3).forEach(function(item){
console.log(item.getTitle());
});

API

Constructor

new NodePie(xml[, options])

Where

  • xml is a String or Buffer containing the feed XML
  • options is an optional options object

Constructor generates a NodePie object for parsing the feed

Usage

var NodePie = require("nodepie")
feed = new NodePie(xml_contents);

NB!xml should be a Buffer if the XML is not in UTF-8 encoding. If xml is a String it is automatically considered as UTF-8 and the encoding is not converted.

You can overwrite automatic detection of the encoding by setting explicitly it with an options property (only has effect when the input is a Buffer value):

var np = new NodePie(xml_buffer, {encoding: "ISO-8859-1"});

Feed level methods

- init()

nodepie.init()

Parses XML and fetches any used namespaces from the object

Usage:

 var feed = new NodePie(xml_contents);
feed.init();

- getDate()

nodepie.getDate() → Date

Fetches the update date of the feed and returns it as a Date object

Usage:

var feed = new NodePie(xml_contents);
feed.init();
date = feed.getDate();
console.log(date.getFullYear());

Returns false if the date is not found from the feed or if it's in invalid format

- getDescription()

nodepie.getDescription() → String

Fetches the description of the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
description = feed.getDescription();

Returns false if the description is not found from the feed

- getEncoding()

nodepie.getEncoding() → String

Returns the encoding for the source feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
source_encoding = feed.getEncoding();

NB! The result is always UTF-8, this only indicates the encoding of the source feed file.

- getHub()

nodepie.getHub() → String

Fetches the PubSubHubbub hub of the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
hub = feed.getHub();

Returns false if the hub is not found from the feed

- getImage()

nodepie.getImage() → String

Returns the URL or the feed image or false if not found

Usage:

var feed = new NodePie(xml_contents);
feed.init();
imageUrl = feed.getImage();

- getItem()

nodepie.getItem(i) → Array

Where

  • i is the index of the entry

Fetches a NodePie.Item object from defined index or false if the query is out of bounds

Usage:

var feed = new NodePie(xml_contents);
feed.init();
// fetch the first entry from the feed
item = feed.getItem(0);

- getItems()

nodepie.getItems([start [,length]]) → Array

Where

  • start is start index
  • length indicates how many items to fetch

Fetches NodePie.Item objects from the feed as an array

Usage:

var feed = new NodePie(xml_contents);
feed.init();
// fetch the first 3 entries from the feed
items = feed.getItems(0, feed.getItemQuantity(3));

- getItemQuantity()

nodepie.getItemQuantity([max]) → Number

Where

  • max is the maximum number to report

Returns the number of entries in the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
// total items in feed: 10
total_entries = feed.getItemQuantity(); // 10
total_entries = feed.getItemQuantity(5); // 5
total_entries = feed.getItemQuantity(50); // 10

- getPermalink()

nodepie.getPermalink() → String

Fetches the link of the blog

Usage:

var feed = new NodePie(xml_contents);
feed.init();
url = feed.getPermalink();

Returns false if the url is not found from the feed

- getTitle()

nodepie.getTitle() → String

Fetches the title of the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
title = feed.getTitle();

Returns false if the title is not found from the feed

Item level methods

- getAuthor()

item.getAuthor() → String

Fetches the (first) author of the entry

Usage:

var item = feed.getItem(0);
author = item.getAuthor();

Returns false if no authors are not found from the entry

- getAuthors()

item.getAuthors() → Array

Fetches the authors (as an array of strings) of the entry

Usage:

var item = feed.getItem(0);
authors = item.getAuthors();

- getCategory()

item.getCategory() → String

Fetches the (first) category of the entry.

Usage:

var item = feed.getItem(0);
category = item.getCategory();

Returns false if no categories are found from the entry

- getCategories()

item.getCategories() → Array

Fetches the categories (as an array of strings) for the entry.

Usage:

var item = feed.getItem(0);
categories = item.getCategories();

Returns false if the categories are not found from the entry

- getComments()

item.getComments() → Object

Fetches an object containing links to the HTML comments page and to an Atom/RSS feed of comments for the post

{
html: "http://link_to_html_page",
feed: "http://link_to_comments_feed"
}

Usage:

var item = feed.getItem(0);
comments = item.getComments();
console.log("See all comments: " + comments.html);

Returns false if the no information about comments is found from the entry

- getContents()

item.getContents() → String

Fetches the contents of the entry. Prefers full text, otherwise falls back to description.

Usage:

var item = feed.getItem(0);
contents = item.getContents();

Returns false if the description or contents are not found from the entry

- getDate()

item.getDate() → Date

Fetches the date of the entry as a Date object

Usage:

var item = feed.getItem(0);
date = item.getDate();
console.log(date.getFullYear());

Returns false if the date is not found from the entry or if it's in invalid format

- getDescription()

item.getDescription() → String

Fetches the description of the entry. Prefers summaries, otherwise falls back to full content.

Usage:

var item = feed.getItem(0);
description = item.getDescription();

Returns false if the description or contents are not found from the entry

- getPermalink()

item.getPermalink() → String

Fetches the link of the entry

Usage:

var item = feed.getItem(0);
url = item.getPermalink();

Returns false if the url is not found from the entry

- getTitle()

item.getTitle() → String

Fetches the title of the entry

Usage:

var item = feed.getItem(0);
title = item.getTitle();

Returns false if the title is not found from the entry

- getUpdateDate()

item.getUpdateDate() → Date

Fetches the update date of the entry as a Date object

Usage:

var item = feed.getItem(0);
date = item.getUpdateDate();
console.log(date.getFullYear());

Falls back to getDate when update date not found or returns false if the date is not found from the entry or if it's in invalid format

About

RSS/Atom parser for Node.JS

Resources

Stars

1 star

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

73 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

NodePie

Simple RSS/Atom parser for Node.JS that takes after SimplePie and MagPie.

Installation

npm install nodepie

Compatibility

Good for RSS0.92, RSS2.0, RDF and Atom1.0 feeds.

Tested against Wordpress, Blogger and Feedburner feeds.

Usage

var NodePie = require("nodepie"),
xml, feed;
xml = require("fs").readFileSync("feed.xml");
// create a new NodePie object
feed = new NodePie(xml);
feed.init();
// output feed title
console.log(feed.getTitle());
// output the titles for the first 3 entries
feed.getItems(0, 3).forEach(function(item){
console.log(item.getTitle());
});

API

Constructor

new NodePie(xml[, options])

Where

  • xml is a String or Buffer containing the feed XML
  • options is an optional options object

Constructor generates a NodePie object for parsing the feed

Usage

var NodePie = require("nodepie")
feed = new NodePie(xml_contents);

NB!xml should be a Buffer if the XML is not in UTF-8 encoding. If xml is a String it is automatically considered as UTF-8 and the encoding is not converted.

You can overwrite automatic detection of the encoding by setting explicitly it with an options property (only has effect when the input is a Buffer value):

var np = new NodePie(xml_buffer, {encoding: "ISO-8859-1"});

Feed level methods

- init()

nodepie.init()

Parses XML and fetches any used namespaces from the object

Usage:

 var feed = new NodePie(xml_contents);
feed.init();

- getDate()

nodepie.getDate() → Date

Fetches the update date of the feed and returns it as a Date object

Usage:

var feed = new NodePie(xml_contents);
feed.init();
date = feed.getDate();
console.log(date.getFullYear());

Returns false if the date is not found from the feed or if it's in invalid format

- getDescription()

nodepie.getDescription() → String

Fetches the description of the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
description = feed.getDescription();

Returns false if the description is not found from the feed

- getEncoding()

nodepie.getEncoding() → String

Returns the encoding for the source feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
source_encoding = feed.getEncoding();

NB! The result is always UTF-8, this only indicates the encoding of the source feed file.

- getHub()

nodepie.getHub() → String

Fetches the PubSubHubbub hub of the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
hub = feed.getHub();

Returns false if the hub is not found from the feed

- getImage()

nodepie.getImage() → String

Returns the URL or the feed image or false if not found

Usage:

var feed = new NodePie(xml_contents);
feed.init();
imageUrl = feed.getImage();

- getItem()

nodepie.getItem(i) → Array

Where

  • i is the index of the entry

Fetches a NodePie.Item object from defined index or false if the query is out of bounds

Usage:

var feed = new NodePie(xml_contents);
feed.init();
// fetch the first entry from the feed
item = feed.getItem(0);

- getItems()

nodepie.getItems([start [,length]]) → Array

Where

  • start is start index
  • length indicates how many items to fetch

Fetches NodePie.Item objects from the feed as an array

Usage:

var feed = new NodePie(xml_contents);
feed.init();
// fetch the first 3 entries from the feed
items = feed.getItems(0, feed.getItemQuantity(3));

- getItemQuantity()

nodepie.getItemQuantity([max]) → Number

Where

  • max is the maximum number to report

Returns the number of entries in the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
// total items in feed: 10
total_entries = feed.getItemQuantity(); // 10
total_entries = feed.getItemQuantity(5); // 5
total_entries = feed.getItemQuantity(50); // 10

- getPermalink()

nodepie.getPermalink() → String

Fetches the link of the blog

Usage:

var feed = new NodePie(xml_contents);
feed.init();
url = feed.getPermalink();

Returns false if the url is not found from the feed

- getTitle()

nodepie.getTitle() → String

Fetches the title of the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
title = feed.getTitle();

Returns false if the title is not found from the feed

Item level methods

- getAuthor()

item.getAuthor() → String

Fetches the (first) author of the entry

Usage:

var item = feed.getItem(0);
author = item.getAuthor();

Returns false if no authors are not found from the entry

- getAuthors()

item.getAuthors() → Array

Fetches the authors (as an array of strings) of the entry

Usage:

var item = feed.getItem(0);
authors = item.getAuthors();

- getCategory()

item.getCategory() → String

Fetches the (first) category of the entry.

Usage:

var item = feed.getItem(0);
category = item.getCategory();

Returns false if no categories are found from the entry

- getCategories()

item.getCategories() → Array

Fetches the categories (as an array of strings) for the entry.

Usage:

var item = feed.getItem(0);
categories = item.getCategories();

Returns false if the categories are not found from the entry

- getComments()

item.getComments() → Object

Fetches an object containing links to the HTML comments page and to an Atom/RSS feed of comments for the post

{
html: "http://link_to_html_page",
feed: "http://link_to_comments_feed"
}

Usage:

var item = feed.getItem(0);
comments = item.getComments();
console.log("See all comments: " + comments.html);

Returns false if the no information about comments is found from the entry

- getContents()

item.getContents() → String

Fetches the contents of the entry. Prefers full text, otherwise falls back to description.

Usage:

var item = feed.getItem(0);
contents = item.getContents();

Returns false if the description or contents are not found from the entry

- getDate()

item.getDate() → Date

Fetches the date of the entry as a Date object

Usage:

var item = feed.getItem(0);
date = item.getDate();
console.log(date.getFullYear());

Returns false if the date is not found from the entry or if it's in invalid format

- getDescription()

item.getDescription() → String

Fetches the description of the entry. Prefers summaries, otherwise falls back to full content.

Usage:

var item = feed.getItem(0);
description = item.getDescription();

Returns false if the description or contents are not found from the entry

- getPermalink()

item.getPermalink() → String

Fetches the link of the entry

Usage:

var item = feed.getItem(0);
url = item.getPermalink();

Returns false if the url is not found from the entry

- getTitle()

item.getTitle() → String

Fetches the title of the entry

Usage:

var item = feed.getItem(0);
title = item.getTitle();

Returns false if the title is not found from the entry

- getUpdateDate()

item.getUpdateDate() → Date

Fetches the update date of the entry as a Date object

Usage:

var item = feed.getItem(0);
date = item.getUpdateDate();
console.log(date.getFullYear());

Falls back to getDate when update date not found or returns false if the date is not found from the entry or if it's in invalid format

About

RSS/Atom parser for Node.JS

Resources

Stars

1 star

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

73 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

NodePie

Simple RSS/Atom parser for Node.JS that takes after SimplePie and MagPie.

Installation

npm install nodepie

Compatibility

Good for RSS0.92, RSS2.0, RDF and Atom1.0 feeds.

Tested against Wordpress, Blogger and Feedburner feeds.

Usage

var NodePie = require("nodepie"),
xml, feed;
xml = require("fs").readFileSync("feed.xml");
// create a new NodePie object
feed = new NodePie(xml);
feed.init();
// output feed title
console.log(feed.getTitle());
// output the titles for the first 3 entries
feed.getItems(0, 3).forEach(function(item){
console.log(item.getTitle());
});

API

Constructor

new NodePie(xml[, options])

Where

  • xml is a String or Buffer containing the feed XML
  • options is an optional options object

Constructor generates a NodePie object for parsing the feed

Usage

var NodePie = require("nodepie")
feed = new NodePie(xml_contents);

NB!xml should be a Buffer if the XML is not in UTF-8 encoding. If xml is a String it is automatically considered as UTF-8 and the encoding is not converted.

You can overwrite automatic detection of the encoding by setting explicitly it with an options property (only has effect when the input is a Buffer value):

var np = new NodePie(xml_buffer, {encoding: "ISO-8859-1"});

Feed level methods

- init()

nodepie.init()

Parses XML and fetches any used namespaces from the object

Usage:

 var feed = new NodePie(xml_contents);
feed.init();

- getDate()

nodepie.getDate() → Date

Fetches the update date of the feed and returns it as a Date object

Usage:

var feed = new NodePie(xml_contents);
feed.init();
date = feed.getDate();
console.log(date.getFullYear());

Returns false if the date is not found from the feed or if it's in invalid format

- getDescription()

nodepie.getDescription() → String

Fetches the description of the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
description = feed.getDescription();

Returns false if the description is not found from the feed

- getEncoding()

nodepie.getEncoding() → String

Returns the encoding for the source feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
source_encoding = feed.getEncoding();

NB! The result is always UTF-8, this only indicates the encoding of the source feed file.

- getHub()

nodepie.getHub() → String

Fetches the PubSubHubbub hub of the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
hub = feed.getHub();

Returns false if the hub is not found from the feed

- getImage()

nodepie.getImage() → String

Returns the URL or the feed image or false if not found

Usage:

var feed = new NodePie(xml_contents);
feed.init();
imageUrl = feed.getImage();

- getItem()

nodepie.getItem(i) → Array

Where

  • i is the index of the entry

Fetches a NodePie.Item object from defined index or false if the query is out of bounds

Usage:

var feed = new NodePie(xml_contents);
feed.init();
// fetch the first entry from the feed
item = feed.getItem(0);

- getItems()

nodepie.getItems([start [,length]]) → Array

Where

  • start is start index
  • length indicates how many items to fetch

Fetches NodePie.Item objects from the feed as an array

Usage:

var feed = new NodePie(xml_contents);
feed.init();
// fetch the first 3 entries from the feed
items = feed.getItems(0, feed.getItemQuantity(3));

- getItemQuantity()

nodepie.getItemQuantity([max]) → Number

Where

  • max is the maximum number to report

Returns the number of entries in the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
// total items in feed: 10
total_entries = feed.getItemQuantity(); // 10
total_entries = feed.getItemQuantity(5); // 5
total_entries = feed.getItemQuantity(50); // 10

- getPermalink()

nodepie.getPermalink() → String

Fetches the link of the blog

Usage:

var feed = new NodePie(xml_contents);
feed.init();
url = feed.getPermalink();

Returns false if the url is not found from the feed

- getTitle()

nodepie.getTitle() → String

Fetches the title of the feed

Usage:

var feed = new NodePie(xml_contents);
feed.init();
title = feed.getTitle();

Returns false if the title is not found from the feed

Item level methods

- getAuthor()

item.getAuthor() → String

Fetches the (first) author of the entry

Usage:

var item = feed.getItem(0);
author = item.getAuthor();

Returns false if no authors are not found from the entry

- getAuthors()

item.getAuthors() → Array

Fetches the authors (as an array of strings) of the entry

Usage:

var item = feed.getItem(0);
authors = item.getAuthors();

- getCategory()

item.getCategory() → String

Fetches the (first) category of the entry.

Usage:

var item = feed.getItem(0);
category = item.getCategory();

Returns false if no categories are found from the entry

- getCategories()

item.getCategories() → Array

Fetches the categories (as an array of strings) for the entry.

Usage:

var item = feed.getItem(0);
categories = item.getCategories();

Returns false if the categories are not found from the entry

- getComments()

item.getComments() → Object

Fetches an object containing links to the HTML comments page and to an Atom/RSS feed of comments for the post

{
html: "http://link_to_html_page",
feed: "http://link_to_comments_feed"
}

Usage:

var item = feed.getItem(0);
comments = item.getComments();
console.log("See all comments: " + comments.html);

Returns false if the no information about comments is found from the entry

- getContents()

item.getContents() → String

Fetches the contents of the entry. Prefers full text, otherwise falls back to description.

Usage:

var item = feed.getItem(0);
contents = item.getContents();

Returns false if the description or contents are not found from the entry

- getDate()

item.getDate() → Date

Fetches the date of the entry as a Date object

Usage:

var item = feed.getItem(0);
date = item.getDate();
console.log(date.getFullYear());

Returns false if the date is not found from the entry or if it's in invalid format

- getDescription()

item.getDescription() → String

Fetches the description of the entry. Prefers summaries, otherwise falls back to full content.

Usage:

var item = feed.getItem(0);
description = item.getDescription();

Returns false if the description or contents are not found from the entry

- getPermalink()

item.getPermalink() → String

Fetches the link of the entry

Usage:

var item = feed.getItem(0);
url = item.getPermalink();

Returns false if the url is not found from the entry

- getTitle()

item.getTitle() → String

Fetches the title of the entry

Usage:

var item = feed.getItem(0);
title = item.getTitle();

Returns false if the title is not found from the entry

- getUpdateDate()

item.getUpdateDate() → Date

Fetches the update date of the entry as a Date object

Usage:

var item = feed.getItem(0);
date = item.getUpdateDate();
console.log(date.getFullYear());

Falls back to getDate when update date not found or returns false if the date is not found from the entry or if it's in invalid format

About

RSS/Atom parser for Node.JS

Resources

Stars

1 star

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages