Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/larrasket/rssc
rssc provides a real-time, self-hostable regex-oriented customization service for atom, rss and json feeds.
https://github.com/larrasket/rssc
atom rss rss-generator
Last synced: 17 days ago
JSON representation
rssc provides a real-time, self-hostable regex-oriented customization service for atom, rss and json feeds.
- Host: GitHub
- URL: https://github.com/larrasket/rssc
- Owner: larrasket
- License: gpl-3.0
- Created: 2023-08-12T10:51:52.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-11-14T08:05:10.000Z (about 1 year ago)
- Last Synced: 2023-11-14T09:26:13.899Z (about 1 year ago)
- Topics: atom, rss, rss-generator
- Language: Go
- Homepage: https://rssc.fly.dev/
- Size: 61.5 KB
- Stars: 9
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.html
- License: LICENSE
Awesome Lists containing this project
README
rssc - rss customizer
<![CDATA[
html {
color: #1a1a1a;
background-color: #fdfdfd;
}
body {
margin: 0 auto;
max-width: 36em;
padding-left: 50px;
padding-right: 50px;
padding-top: 50px;
padding-bottom: 50px;
hyphens: auto;
overflow-wrap: break-word;
text-rendering: optimizeLegibility;
font-kerning: normal;
}
@media (max-width: 600px) {
body {
font-size: 0.9em;
padding: 12px;
}
h1 {
font-size: 1.8em;
}
}
@media print {
html {
background-color: white;
}
body {
background-color: transparent;
color: black;
font-size: 12pt;
}
p, h2, h3 {
orphans: 3;
widows: 3;
}
h2, h3, h4 {
page-break-after: avoid;
}
}
p {
margin: 1em 0;
}
a {
color: #1a1a1a;
}
a:visited {
color: #1a1a1a;
}
img {
max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 1.4em;
}
h5, h6 {
font-size: 1em;
font-style: italic;
}
h6 {
font-weight: normal;
}
ol, ul {
padding-left: 1.7em;
margin-top: 1em;
}
li > ol, li > ul {
margin-top: 0;
}
blockquote {
margin: 1em 0 1em 1.7em;
padding-left: 1em;
border-left: 2px solid #e6e6e6;
color: #606060;
}
code {
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
font-size: 85%;
margin: 0;
hyphens: manual;
}
pre {
margin: 1em 0;
overflow: auto;
}
pre code {
padding: 0;
overflow: visible;
overflow-wrap: normal;
}
.sourceCode {
background-color: transparent;
overflow: visible;
}
hr {
background-color: #1a1a1a;
border: none;
height: 1px;
margin: 1em 0;
}
table {
margin: 1em 0;
border-collapse: collapse;
width: 100%;
overflow-x: auto;
display: block;
font-variant-numeric: lining-nums tabular-nums;
}
table caption {
margin-bottom: 0.75em;
}
tbody {
margin-top: 0.5em;
border-top: 1px solid #1a1a1a;
border-bottom: 1px solid #1a1a1a;
}
th {
border-top: 1px solid #1a1a1a;
padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
margin-bottom: 4em;
text-align: center;
}
#TOC li {
list-style: none;
}
#TOC ul {
padding-left: 1.3em;
}
#TOC > ul {
padding-left: 0;
}
#TOC a:not(:hover) {
text-decoration: none;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
]]>
rssc - rss customizer
rssc provides a real-time, self-hostable regex-oriented
customization service for atom, rss and json feeds.
Usage
rssc uses get request parameters to read user's preferences.
following are the supported parameters:
-
src
: the source URL of the feeds. Example:
https://hnrss.org/newest
-
t
: the type of desired feeds (that rssc will
return), can berss
,atom
or
json
. -
descriptionf
: regular expression filter to
filter feeds based on the description property. -
titlef
: regular expression filter to filter
feeds based on the title property. -
contentf
: regular expression filter to filter
feeds based on the content property. -
linkf
: regular expression filter to filter
feeds based on the link property. -
net
: boolean (1 or 0) (default to 0 when
omitted) whether to use the .NET engine regex instead of
Go's.
All regex should be valid RE2 regex syntax
(in case of net
, see
MS' Regular Expression Language).
Examples
Replace https://rssc.fly.dev/ in the
following examples with your instance of rssc (can be a
localhost:8080
if self-hosted).
-
Get all new feeds that contain the word "emacs" but not
the word "vim", and not posted by user lr0 (hnrss.org does
not provide a creator/author property, so the author filter
here is only for a demonstration purpose.):
https://rssc.fly.dev/rss?src=https://hnrss.org/newest?q=emacs&titlef=^(?!.*\bvim\b).*\bEmacs\b.*&net=1&authorf=^(?!.*\blr0\b).*$
Do note that
net
is used here because RE2
does not support lookarounds.
-
Get geopolitical updates from your favorite hacker and
skip all free software movement blessed propaganda:
https://rssc.fly.dev/rss?src=https://stallman.org/rss/rss.xml&contentf=^(?=.*(?:palestine|syria|egypt|iraq|israel|algeria|morocco))(?!.*(?:linux|gnu|software|programming|program)).*$&net=1
-
Get BBC middle east updates, only ones that are related to
Palestine:
https://rssc.fly.dev/rss?src=http://feeds.bbci.co.uk/news/world/middle_east/rss.xml&titlef=(?i)palestine|palestinian|gaza
Self-host
To host rssc locally, install it using Go:
go install github.com/larrasket/rssc@latest
Set environment variable for PORT
, if user
doesn't set a PORT
value, rssc will use
:8080
by default.
PORT=4040 rssc
Now rssc should be running at localhost:4040
. You
can use the same examples provided, with
replacing fly domain with your localhost.
Notes
- RE2 is much safer than the .NET Regex, that's to say, all
the good features that .NET engine enables you to use come with
a risk cost and ends up enabling
catastrophic backtracking, therefore a timeout of 5
seconds is currently enabled on the fly.dev instance when
usingnet=1
.
- rssc is pre-alpha. Please report bugs here (url)