ncarlier / feedpushr Goto Github PK
View Code? Open in Web Editor NEWA simple feed aggregator daemon with sugar on top.
License: GNU General Public License v3.0
A simple feed aggregator daemon with sugar on top.
License: GNU General Public License v3.0
I trying:
feedpushr.exe -authn https://accounts.google.com
but Google don't like it.
Error 401: Client_id was not found
I'm on 3.3.1 in Docker.
Using mail output plugin results in emails being without dates at all. No such header added here.
Some mail clients does not show any date for mails if no such header present. This not a problem for Thunderbird as it shows date on which email was received, but for KMail2, for example, a huge one:
Those "неизвестное" should be a date on which mail was sent.
If the tag text field is dirty (I'm adding a tag) nothing is added when I click "Update".
I think most of the users will add a single tag, thus won't press enter before clicking the "Update" button.
[sevos]:<~>$ feedpushr -addr 127.0.0.1:9001 -filter fetch
{"level":"info","component":"store","uri":"boltdb://data.db","time":1580562047,"message":"using BoltDB datastore"}
{"level":"error","error":"unsuported filter: ","time":1580562047,"message":"unable to init filter chain"}
{"level":"fatal","error":"unsuported filter: ","time":1580562047,"message":"unable to init main service"}
I'd love to have full text, so I tried to run it with the fetch
plugin, however it's not working for some reason. Any idea what's wrong?
Hi,
Hope you are doing well !
It would be awesome to display a small icon with the link to the the blog, when available, near the feed link in the ui.
It would make easier the choice to enable/disable a feed in feedpushr.
Thanks again for this great tool !
Cheers,
Luc
Hello again !
As you added quite nicely the feature to use a single output for multiple email addresses through #88, could it be possible to choose to use the bcc field instead of the to: field to avoid people knowing all the receivers' emails ?
Thanks!
Hi,
I imported 1200 feeds into feedpushr and can see only 100.
I would be awesome to add pagination to browser other feeds.
Here is the opml file for example:
https://github.com/x0rzkov/feedpushr/blob/master/resources/security.opml
Cheers,
X
Hi,
I made a 1st version of an Ansible to install Feedpushr: https://github.com/slundi/ansible_feedpushr
It uses latest release binary to install Feedpushr. But plugins are only available for AMD64 arch because they are not on the ARM and ARM64 archive.
Is it OK to add the Ansible install doc on the README.md
?
The env var APP_STORE
is listed in the docs as the datasource uri for bolt. The correct var is APP_DB
.
{
"title": "[feedpushr]",
"message": "{{.Content}}",
"priority": 8
}
It didn't work !
I've successfully sent feed outputs to Mattermost instance as written in the document but is there a variable to send feed's Title
(not the article title but the title put in the admin panel for each feeds)?
I have set multiple feeds to be sent to a single Mattermost output configuration but I can distinguish each messages better if I can see which feed it came from.
Hi,
Hope you are doing well !
How do you pass the twitter's credentials to the twitter plugin ?
Can you prodive an example of command line ?
Cheers,
X
I'm trying to run this via docker compose but I'm not sure how I can achieve this to bind mount the database file (and the .htpasswd file) from the host. Otherwise all the data gets wiped after down and up.
Hi again,
Hope you are doing well !
Would be awesome to have some masonry backed dashboard to display the aggregated feeds' articles.
Cheers,
X
Hi,
Hope you are all well !
It would be awesome to create a contrib for yake.
https://github.com/LIAAD/yake
The idea would be to create a docker-compose and use the rest api of yake.
https://github.com/LIAAD/yake#option-2-rest-api-server-in-a-docker-container
I will fork the repo and try to implement it asap.
Any advice or insights to share upfront ?
Cheers,
X
I'm trying to setup OpenID auth (via Google) for feedpushr, but I noticed that the only parameter requested for setup is FP_AUTHN (for the issuer URL), whereas OIDC additionally requires a client id and secret (and the redirect URI I guess) to complete the flow.
Is there a way to pass these to feedpushr on start up like FP_AUTHN, or is the recommended pattern to clone the repo and make the modifications locally? If the later, can you point me to where the secret is set in the code + the redirect URI format? I've found that the client_id is set to 'feedpushr-ui' so that I can change.
Thank you for creating feedpushr btw, it's a great app that has saved me tons of time - I appreciate the work you've put into it!
Hi again,
Hope you are all well !
In order to build the yake module, I wanted to test the rake plugin.
./feedpushr --log-pretty --plugin feedpushr-rake.so
Nowhere, where to configure the rake parameters.
Am I missing something ?
Cheers,
X
Is there any proxy support, specifically on a per feed basis? Basically to get around Cloudflare...
Running a feedpushr in a docker container, when the container is restarted all of the data disappears.
I assume the solution is to set up a volume, however the folders to use in the volume are not listed in the repo.
Could someone please let me know which folders I need to link.
Thanks
I've added an ATOM feed from https://status.digitalocean.com/history.atom and the feed screen is showing 25
as Aggregation success
but in the output plugin that I've configured to send to Mattermost (I do not have any rate limiting in Mattermost) with http
plugin, I only get the latest 2 article entries but should it not send the entire 25 entries to the output plugin once the feed and the output settings are added?
I've also added https://status.linode.com/history.atom and this one sent out 4 articles to the output plugin and another from https://www.cloudflarestatus.com/history.atom sent 9 articles to the output plugin and seems it's behaving inconsistently.
Here is a sample OPML :
<?xml version="1.0" encoding="UTF-8"?>
<opml version="1.0">
<head>
<title>No matter what</title>
</head>
<body>
<outline text="Info" title="Info">
<outline type="rss" text="LinuxFr.org : les dépêches" title="LinuxFr.org : les dépêches" xmlUrl="http://linuxfr.org/news.atom" htmlUrl="https://linuxfr.org/news"/>
</outline>
</body>
</opml>
Nothing is imported and the following error appears in the logs :
WRN unable to create feed: skipped error="Get : unsupported protocol scheme """ component=import title="No matter what" url=
Hi, @ncarlier - thank you for all the good work.
I have a use case where I would like to have an OPML file define a portable source of truth for which URLs to follow.
Importing it via the API would make feedpushr obey the items included in the last import, discarding the rest, which differs from the append-only approach as it exists now.
I'm happy to provide an example of this. The POST
endpoint could take a payload/param signalling this strict
import mode.
Is there any appetite for it / pitfall to be aware of before I make a start?
When importing OPML, the file may contain some categories ( cf #2 ).
It may be useful for users to keep these categories.
It can be done by turning these categories into tags
Hi,
Hope you are all well !
while running the command npm run start
, I have the following error:
Failed to compile
/app/src/feeds/FeedList.tsx
TypeScript error in /app/src/feeds/FeedList.tsx(23,16):
Generic type 'Column<RowData>' requires 1 type argument(s). TS2314
21 | }
22 |
> 23 | const columns: Column[] = [
| ^
24 | {
25 | title: 'Aggregation',
26 | render: (feed: Feed) => ( !!feed && <FeedControl feed={feed} /> ),
Any way to fix it ? Thanks in advance.
Have a good week-end !
Cheers,
X
I first tried to place the plugin in the environment variable, (not sure if the path was right and I tried several others like feedpushr-rdbms.so
, contrib/rdbms/feedpushr-rdbms.so
,
working_dir: /var/opt/feedpushr
environment:
- FP_PLUGINS=plugins/feedpushr-rdbms.so
but those paths failed with realpath failed
in the log.
I also tried to place feedpushr-rdbms.so
from the downloaded release file of the same version of the latest
docker image at 3.2.0
but this failed with plugin was built with a different version of package internal/abi
.
Is there a way to add an output plugin to the docker instance?
Hi again,
Hope you are doing well !
I doesn't seem to be aggregating my feeds, counters remain at zero.
Nothing happened after the 54s.
Any action that I missed ?
Feeds:
Cheers,
X
// DefaultTimeout for HTTP requests
const DefaultTimeout = time.Duration(5 * time.Second)
I self-hosted RSS-Bridge on Celeron PC and using its component, XPathBridge which is resource demanding task.
The default 5-second timeout leads to context canceled
.
May I ask you to increase the default timeout or add a settings for it?
In other words, how to make matches and include in EXPR engine work in case insensitive?
Hi,
Hope you are all well !
When I want to add this feed, https://morioh.com/feed, it triggers an alert box saying "unsupported content type: content-type".
Any explanation to why it happens ? as it sounds a proper rss feed.
Cheers,
Luc
Hello, I'm in docker on e38a6ee with mail output plugin.
Some sites parsed incorrectly, e.g. sometimes new releases from github repositories appears like:
and no actual release information.
Confirmed feeds:
It happens absolutely randomly, sometimes it parses feed normally, sometimes it puts something like HTML head in letter (like on screenshot).
I was using latest release before, it was working fine.
Hello,
Thank you for the hard work so far !
Unless I'm mistaken, the email output entry can only send an email to a single email address.
I am using feedpushr to send a blog output to multiple friends while parsing its RSS feed. Having to add a single output per person is a bit tedious. What would it take to have multiple email addresses in the "To" field of outputs ?
Thanks,
Thanks for the software.
Is it possible to add Apprise as output plugin?
Hey, I'm on 3.3.1 in Docker.
Can't add RSS feeds from Reddit. In web interface it says "http error: 403 Forbidden", yet curl downloads feed (for example, https://www.reddit.com/r/selfhosted.rss) just fine, from the very same machine.
Seen with the docker container and 7 feed sources:
ncarlier/feedpushr:latest 26dd59e5bc42
fatal error: concurrent map writes
goroutine 4403 [running]:
runtime.throw({0x13d573b, 0xc00060df48})
/usr/local/go/src/runtime/panic.go:1198 +0x71 fp=0xc00060df18 sp=0xc00060dee8 pc=0x85be51
runtime.mapassign_faststr(0xc000612e00, 0x0, {0xc000110aa0, 0x20})
/usr/local/go/src/runtime/map_faststr.go:211 +0x39c fp=0xc00060df80 sp=0xc00060df18 pc=0x83979c
github.com/ncarlier/feedpushr/v3/pkg/aggregator.(*Manager).UnRegisterFeedAggregator(0xc0005c0640, {0xc000110aa0, 0x20})
/go/src/github.com/ncarlier/feedpushr/pkg/aggregator/manager.go:68 +0x6e fp=0xc00060dfb8 sp=0xc00060df80 pc=0x113f1ee
github.com/ncarlier/feedpushr/v3/pkg/aggregator.(*Manager).Shutdown·dwrap·2()
/go/src/github.com/ncarlier/feedpushr/pkg/aggregator/manager.go:95 +0x2e fp=0xc00060dfe0 sp=0xc00060dfb8 pc=0x113f70e
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1581 +0x1 fp=0xc00060dfe8 sp=0xc00060dfe0 pc=0x88d861
created by github.com/ncarlier/feedpushr/v3/pkg/aggregator.(*Manager).Shutdown
/go/src/github.com/ncarlier/feedpushr/pkg/aggregator/manager.go:95 +0x288
goroutine 1 [IO wait, 7 minutes]:
internal/poll.runtime_pollWait(0x7b1f4623dfd0, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc000616180, 0xc00004c800, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Accept(0xc000616180)
/usr/local/go/src/internal/poll/fd_unix.go:402 +0x22c
net.(*netFD).accept(0xc000616180)
/usr/local/go/src/net/fd_unix.go:173 +0x35
net.(*TCPListener).accept(0xc0002c60d8)
/usr/local/go/src/net/tcpsock_posix.go:140 +0x28
net.(*TCPListener).Accept(0xc0002c60d8)
/usr/local/go/src/net/tcpsock.go:262 +0x3d
net/http.(*Server).Serve(0xc0005b4380, {0x1b25190, 0xc0002c60d8})
/usr/local/go/src/net/http/server.go:3002 +0x394
github.com/goadesign/goa.(*Service).Serve(...)
/go/pkg/mod/github.com/goadesign/[email protected]/service.go:216
github.com/ncarlier/feedpushr/v3/pkg/server.(*Server).ListenAndServe(0xc0005c62c0, {0x12690b6, 0x5})
/go/src/github.com/ncarlier/feedpushr/pkg/server/server.go:58 +0x1b9
main.main()
/go/src/github.com/ncarlier/feedpushr/main.go:123 +0x697
goroutine 6 [select, 5 minutes]:
github.com/blevesearch/bleve/index.AnalysisWorker({0xc0004bae40, 0xc0004baea0})
/go/pkg/mod/github.com/blevesearch/[email protected]/index/analysis.go:102 +0xcc
created by github.com/blevesearch/bleve/index.NewAnalysisQueue
/go/pkg/mod/github.com/blevesearch/[email protected]/index/analysis.go:94 +0x97
goroutine 7 [select, 5 minutes]:
github.com/blevesearch/bleve/index.AnalysisWorker({0xc0004bae40, 0xc0004baea0})
/go/pkg/mod/github.com/blevesearch/[email protected]/index/analysis.go:102 +0xcc
created by github.com/blevesearch/bleve/index.NewAnalysisQueue
/go/pkg/mod/github.com/blevesearch/[email protected]/index/analysis.go:94 +0x97
goroutine 8 [select, 1992 minutes]:
github.com/blevesearch/bleve/index.AnalysisWorker({0xc0004bae40, 0xc0004baea0})
/go/pkg/mod/github.com/blevesearch/[email protected]/index/analysis.go:102 +0xcc
created by github.com/blevesearch/bleve/index.NewAnalysisQueue
/go/pkg/mod/github.com/blevesearch/[email protected]/index/analysis.go:94 +0x97
goroutine 9 [select, 1992 minutes]:
github.com/blevesearch/bleve/index.AnalysisWorker({0xc0004bae40, 0xc0004baea0})
/go/pkg/mod/github.com/blevesearch/[email protected]/index/analysis.go:102 +0xcc
created by github.com/blevesearch/bleve/index.NewAnalysisQueue
/go/pkg/mod/github.com/blevesearch/[email protected]/index/analysis.go:94 +0x97
goroutine 44 [syscall]:
os/signal.signal_recv()
/usr/local/go/src/runtime/sigqueue.go:169 +0x98
os/signal.loop()
/usr/local/go/src/os/signal/signal_unix.go:24 +0x19
created by os/signal.Notify.func1.1
/usr/local/go/src/os/signal/signal.go:151 +0x2c
goroutine 50 [chan receive, 553 minutes]:
github.com/ncarlier/feedpushr/v3/pkg/cache.(*Manager).startCacheBusterJob(0xc0005b0180)
/go/src/github.com/ncarlier/feedpushr/pkg/cache/manager.go:65 +0xad
created by github.com/ncarlier/feedpushr/v3/pkg/cache.NewCacheManager
/go/src/github.com/ncarlier/feedpushr/pkg/cache/manager.go:43 +0x49a
goroutine 51 [semacquire]:
sync.runtime_Semacquire(0x0)
/usr/local/go/src/runtime/sema.go:56 +0x25
sync.(*WaitGroup).Wait(0xc0005e06e0)
/usr/local/go/src/sync/waitgroup.go:130 +0x71
github.com/ncarlier/feedpushr/v3/pkg/aggregator.(*Manager).Shutdown(0xc0005c0640)
/go/src/github.com/ncarlier/feedpushr/pkg/aggregator/manager.go:97 +0x1af
github.com/ncarlier/feedpushr/v3/pkg/server.(*Server).Shutdown(0xc0005c62c0, {0x1b2cee8, 0xc00082a000})
/go/src/github.com/ncarlier/feedpushr/pkg/server/server.go:67 +0x47
main.main.func1()
/go/src/github.com/ncarlier/feedpushr/main.go:113 +0xbf
created by main.main
/go/src/github.com/ncarlier/feedpushr/main.go:107 +0x631
goroutine 53 [select, 12 minutes]:
github.com/ncarlier/feedpushr/v3/pkg/output.(*Processor).start.func1()
/go/src/github.com/ncarlier/feedpushr/pkg/output/processor.go:105 +0xdf
created by github.com/ncarlier/feedpushr/v3/pkg/output.(*Processor).start
/go/src/github.com/ncarlier/feedpushr/pkg/output/processor.go:102 +0x7b
goroutine 55 [select, 5 minutes]:
github.com/ncarlier/feedpushr/v3/pkg/output.(*Processor).start.func1()
/go/src/github.com/ncarlier/feedpushr/pkg/output/processor.go:105 +0xdf
created by github.com/ncarlier/feedpushr/v3/pkg/output.(*Processor).start
/go/src/github.com/ncarlier/feedpushr/pkg/output/processor.go:102 +0x7b
goroutine 66 [chan receive]:
github.com/ncarlier/feedpushr/v3/pkg/aggregator.(*FeedAggregator).run.func1()
/go/src/github.com/ncarlier/feedpushr/pkg/aggregator/runner.go:100 +0x34
created by github.com/ncarlier/feedpushr/v3/pkg/aggregator.(*FeedAggregator).run
/go/src/github.com/ncarlier/feedpushr/pkg/aggregator/runner.go:97 +0x5b
goroutine 82 [chan receive]:
github.com/ncarlier/feedpushr/v3/pkg/aggregator.(*FeedAggregator).run.func1()
/go/src/github.com/ncarlier/feedpushr/pkg/aggregator/runner.go:100 +0x34
created by github.com/ncarlier/feedpushr/v3/pkg/aggregator.(*FeedAggregator).run
/go/src/github.com/ncarlier/feedpushr/pkg/aggregator/runner.go:97 +0x5b
goroutine 26 [chan receive, 1992 minutes]:
github.com/ncarlier/feedpushr/v3/pkg/aggregator.(*FeedAggregator).run.func1()
/go/src/github.com/ncarlier/feedpushr/pkg/aggregator/runner.go:100 +0x34
created by github.com/ncarlier/feedpushr/v3/pkg/aggregator.(*FeedAggregator).run
/go/src/github.com/ncarlier/feedpushr/pkg/aggregator/runner.go:97 +0x5b
goroutine 27 [select, 12 minutes]:
github.com/ncarlier/feedpushr/v3/pkg/aggregator.(*FeedAggregator).running.func1()
/go/src/github.com/ncarlier/feedpushr/pkg/aggregator/runner.go:85 +0x4ca
created by github.com/ncarlier/feedpushr/v3/pkg/aggregator.(*FeedAggregator).running
/go/src/github.com/ncarlier/feedpushr/pkg/aggregator/runner.go:58 +0x65
goroutine 86 [chan receive]:
github.com/ncarlier/feedpushr/v3/pkg/aggregator.(*FeedAggregator).run.func1()
/go/src/github.com/ncarlier/feedpushr/pkg/aggregator/runner.go:100 +0x34
created by github.com/ncarlier/feedpushr/v3/pkg/aggregator.(*FeedAggregator).run
/go/src/github.com/ncarlier/feedpushr/pkg/aggregator/runner.go:97 +0x5b
goroutine 56 [chan receive]:
github.com/ncarlier/feedpushr/v3/pkg/aggregator.(*FeedAggregator).run.func1()
/go/src/github.com/ncarlier/feedpushr/pkg/aggregator/runner.go:100 +0x34
created by github.com/ncarlier/feedpushr/v3/pkg/aggregator.(*FeedAggregator).run
/go/src/github.com/ncarlier/feedpushr/pkg/aggregator/runner.go:97 +0x5b
goroutine 90 [chan receive, 1992 minutes]:
github.com/ncarlier/feedpushr/v3/pkg/aggregator.(*FeedAggregator).run.func1()
/go/src/github.com/ncarlier/feedpushr/pkg/aggregator/runner.go:100 +0x34
created by github.com/ncarlier/feedpushr/v3/pkg/aggregator.(*FeedAggregator).run
/go/src/github.com/ncarlier/feedpushr/pkg/aggregator/runner.go:97 +0x5b
goroutine 91 [select, 12 minutes]:
github.com/ncarlier/feedpushr/v3/pkg/aggregator.(*FeedAggregator).running.func1()
/go/src/github.com/ncarlier/feedpushr/pkg/aggregator/runner.go:85 +0x4ca
created by github.com/ncarlier/feedpushr/v3/pkg/aggregator.(*FeedAggregator).running
/go/src/github.com/ncarlier/feedpushr/pkg/aggregator/runner.go:58 +0x65
goroutine 4368 [runnable]:
github.com/ncarlier/feedpushr/v3/pkg/aggregator.(*FeedAggregator).Stop(0xc000612400)
/go/src/github.com/ncarlier/feedpushr/pkg/aggregator/runner.go:126 +0x3c
github.com/ncarlier/feedpushr/v3/pkg/aggregator.(*Manager).UnRegisterFeedAggregator(0xc0005c0640, {0xc000604260, 0x20})
/go/src/github.com/ncarlier/feedpushr/pkg/aggregator/manager.go:67 +0x50
created by github.com/ncarlier/feedpushr/v3/pkg/aggregator.(*Manager).Shutdown
/go/src/github.com/ncarlier/feedpushr/pkg/aggregator/manager.go:95 +0x288
goroutine 4402 [runnable]:
github.com/ncarlier/feedpushr/v3/pkg/aggregator.(*Manager).Shutdown·dwrap·2()
/go/src/github.com/ncarlier/feedpushr/pkg/aggregator/manager.go:95
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1581 +0x1
created by github.com/ncarlier/feedpushr/v3/pkg/aggregator.(*Manager).Shutdown
/go/src/github.com/ncarlier/feedpushr/pkg/aggregator/manager.go:95 +0x288
goroutine 4349 [chan receive]:
github.com/ncarlier/feedpushr/v3/pkg/aggregator.(*FeedAggregator).run.func1()
/go/src/github.com/ncarlier/feedpushr/pkg/aggregator/runner.go:100 +0x34
created by github.com/ncarlier/feedpushr/v3/pkg/aggregator.(*FeedAggregator).run
/go/src/github.com/ncarlier/feedpushr/pkg/aggregator/runner.go:97 +0x5b
goroutine 4367 [runnable]:
github.com/ncarlier/feedpushr/v3/pkg/aggregator.(*Manager).Shutdown·dwrap·2()
/go/src/github.com/ncarlier/feedpushr/pkg/aggregator/manager.go:95
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1581 +0x1
created by github.com/ncarlier/feedpushr/v3/pkg/aggregator.(*Manager).Shutdown
/go/src/github.com/ncarlier/feedpushr/pkg/aggregator/manager.go:95 +0x288
I dont know how to get plugins for docker to work. If i add this to my docker compose the container wont start
environment:
- FP_PLUGINS=`./plugins/feedpushr-twiter.so,./plugins/feedpushr-rake.so`
Installation
Copy the feedpushr-rake.so file into your Feedpushr working directory.
I can not fine a file called feedpushr-rake.so
Just in case this is useful to anyone. I used the swagger.json doc to generate a ruby api client gem here - https://github.com/bluengreen/feedpushr_client
Thanks for the great project.
Hi,
Hope you are all well and congrats for this new release :-) !
While building the plugins, I have the following error:
feedpushr % make plugins
>>> Building: feedpushr-twitter.so 7a823e0 for linux-amd64 ...
# github.com/ncarlier/feedpushr-contrib/twitter
loadinternal: cannot find runtime/cgo
/usr/local/Cellar/go/1.14/libexec/pkg/tool/darwin_amd64/link: running clang failed: exit status 1
ld: unknown option: -z
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [plugin] Error 2
make: *** [plugins] Error 2
Any reason why ? Is there a way to sort it out ?
Cheers,
X
I think of the ios App "Fiery Feeds" .
Do i need feedpushr and reeder or can feedpushr installed seperatly ?
Do you have a demo instace of feedpushr ?
Hey! I'm really liking Feedpushr for RSS. It's done nicely, it's fast and scrapes a lot of content very accurately. But there's a lack of any auth - literally anyone can access my UI and play with my RSS feeds, get to know my API key etc.
I think it would be a good move to require some kind of auth, like login and password.
Hi again,
Hope you are still all well !
I have developed a couple of plugins that require to throttle the output.
For example, I have written a plugin twitter-selenium. It launch one chrome instance but it needs to wait that one tweet is written/sent before having another tweet to be triggered.
Also, this apply for the yake module, if too much requests are sent to the service, it makes the rest service unavailable quickly because we do not have an option to throttle the output.
This feature is really important as it gonna be required for many potential plugins.
Thanks again if you can push that feature.
Cheers,
Luc
I've added this feed and it seems both http
and rdbms
output keep repeating the same entries over and over on every interval.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.