nkanaev / yarr Goto Github PK
View Code? Open in Web Editor NEWyet another rss reader
License: MIT License
yet another rss reader
License: MIT License
Great project!!!!
When I try to create the Dockerfile, it doesn't work
thanks
I've removed a folder with 2 feeds inside. I complete read the 2 feeds. After deleting the folder all articles are marked as unread
That would allow yarr to be built and run headless on linux.
(Loving this so far though!)
Hi,
I was reading through your rationale and discovered your initial goal:
a desktop application accessible via web browser
That somehow sparked the question and idea to support yarr as a PWA, adding features like:
Checking pages like pwabuilder.com the minimum requirement would be:
Have you considered making yarr a PWA?
I could help providing the necessary files, but have honestly no idea how to include them via GO.
Anyway, wanted to check with you upfront.
What do you think?
Is there any way you could add a license to the project? Without one, even if the source is available, other people can't really use it.
https://choosealicense.com/ is a really good resource for picking one.
Running this using the dockerfile results in the browser getting no response, and the container returns errors like these:
2020/09/17 16:14:26 http: panic serving 172.17.0.1:47948: open assets/index.html: no such file or directory
goroutine 12 [running]:
net/http.(*conn).serve.func1(0xc000210320)
/usr/local/go/src/net/http/server.go:1801 +0x147
panic(0x9f57e0, 0xc0001fb530)
/usr/local/go/src/runtime/panic.go:975 +0x3e9
html/template.Must(...)
/usr/local/go/src/html/template/template.go:372
github.com/nkanaev/yarr/server.IndexHandler(0xb158c0, 0xc0001be380, 0xc000228100)
/src/server/handlers.go:99 +0x78a
github.com/nkanaev/yarr/server.Handler.ServeHTTP(0x7ffc5096696f, 0xc, 0xc000051c60, 0xc000070cd0, 0xc000067200, 0xc000212098, 0xb158c0, 0xc0001be380, 0xc000228000)
/src/server/server.go:46 +0x222
net/http.serverHandler.ServeHTTP(0xc0001be2a0, 0xb158c0, 0xc0001be380, 0xc000228000)
/usr/local/go/src/net/http/server.go:2843 +0xa3
net/http.(*conn).serve(0xc000210320, 0xb16a40, 0xc000064b40)
/usr/local/go/src/net/http/server.go:1925 +0x8ad
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:2969 +0x36c
Increase YouTube embedded player size in Steam feed. Also clicking 'Read Here' shows nothing.
Anybody can help me? thanks!
sss@debian:~/yarr/yarr$ docker build .
Sending build context to Docker daemon 4.681MB
Step 1/8 : FROM golang:1.15 AS build
1.15: Pulling from library/golang
57df1a1f1ad8: Pull complete
71e126169501: Pull complete
1af28a55c3f3: Pull complete
03f1c9932170: Pull complete
f4773b341423: Pull complete
fb320882041b: Pull complete
24b0ad6f9416: Pull complete
Digest: sha256:da7ff43658854148b401f24075c0aa390e3b52187ab67cab0043f2b15e754a68
Status: Downloaded newer image for golang:1.15
---> 05c8f6d2538a
Step 2/8 : RUN apt install gcc -y
---> Running in fb424d048250
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
Reading package lists...
Building dependency tree...
Reading state information...
gcc is already the newest version (4:8.3.0-1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Removing intermediate container fb424d048250
---> cd28b72488e2
Step 3/8 : WORKDIR /src
---> Running in f036049afdc7
Removing intermediate container f036049afdc7
---> 9f315d926022
Step 4/8 : COPY . .
---> b472aa9fe3a4
Step 5/8 : RUN make build_linux
---> Running in f1f3ee2244fe
go run scripts/bundle_assets.go >/dev/null
go: github.com/mmcdole/[email protected]: parsing gofeed/go.mod: open /src/gofeed/go.mod: no such file or directory
make: *** [makefile:7: server/assets_bundle.go] Error 1
The command '/bin/sh -c make build_linux' returned a non-zero code: 2
Sorry for bad English, Thanks.
Could you provide the build for Raspberry Pi?
I am trying to setup dockerized Yarr behind a Nginx reverse proxy.
I have two Yarr docker images built right now: v1.4 and v2.0. Both versions work just fine when served directly, without reverse proxy.
Docker image built from tag v1.4 works as expected.
Nginx logs when accessing https://yarr.example.com
:
192.168.1.5 - - [25/Apr/2021:14:22:27 +0000] "GET / HTTP/2.0" 200 39565 "-" "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0" "-"
192.168.1.5 - - [25/Apr/2021:14:22:27 +0000] "GET /static/stylesheets/app.css HTTP/2.0" 200 10437 "-" "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0" "-"
192.168.1.5 - - [25/Apr/2021:14:22:27 +0000] "GET /static/javascripts/fetch.umd.js HTTP/2.0" 200 17934 "-" "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0" "-"
192.168.1.5 - - [25/Apr/2021:14:22:27 +0000] "GET /static/javascripts/vue.min.js HTTP/2.0" 200 93670 "-" "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0" "-"
192.168.1.5 - - [25/Apr/2021:14:22:27 +0000] "GET /static/javascripts/purify.min.js HTTP/2.0" 200 16941 "-" "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0" "-"
192.168.1.5 - - [25/Apr/2021:14:22:27 +0000] "GET /static/javascripts/url-polyfill.min.js HTTP/2.0" 200 6358 "-" "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0" "-"
192.168.1.5 - - [25/Apr/2021:14:22:27 +0000] "GET /static/stylesheets/bootstrap.min.css HTTP/2.0" 200 160403 "-" "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0" "-"
192.168.1.5 - - [25/Apr/2021:14:22:27 +0000] "GET /static/javascripts/app.js HTTP/2.0" 200 18643 "-" "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0" "-"
192.168.1.5 - - [25/Apr/2021:14:22:27 +0000] "GET /static/javascripts/popper.min.js HTTP/2.0" 200 17883 "-" "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0" "-"
192.168.1.5 - - [25/Apr/2021:14:22:27 +0000] "GET /static/javascripts/api.js HTTP/2.0" 200 2967 "-" "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0" "-"
192.168.1.5 - - [25/Apr/2021:14:22:27 +0000] "GET /static/javascripts/vue-lazyload.js HTTP/2.0" 200 20764 "-" "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0" "-"
192.168.1.5 - - [25/Apr/2021:14:22:27 +0000] "GET /static/javascripts/Readability.min.js HTTP/2.0" 200 27755 "-" "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0" "-"
192.168.1.5 - - [25/Apr/2021:14:22:27 +0000] "GET /static/javascripts/keybindings.js HTTP/2.0" 200 4904 "-" "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0" "-"
192.168.1.5 - - [25/Apr/2021:14:22:28 +0000] "GET /static/javascripts/bootstrap-vue.min.js HTTP/2.0" 200 381485 "-" "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0" "-"
192.168.1.5 - - [25/Apr/2021:14:22:28 +0000] "GET /api/feeds HTTP/2.0" 200 3 "-" "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0" "-"
192.168.1.5 - - [25/Apr/2021:14:22:28 +0000] "GET /api/status HTTP/2.0" 200 25 "-" "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0" "-"
192.168.1.5 - - [25/Apr/2021:14:22:28 +0000] "GET /api/folders HTTP/2.0" 200 3 "-" "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0" "-"
192.168.1.5 - - [25/Apr/2021:14:22:28 +0000] "GET /api/settings HTTP/2.0" 200 162 "-" "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0" "-"
192.168.1.5 - - [25/Apr/2021:14:22:28 +0000] "GET /api/items? HTTP/2.0" 200 37 "-" "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0" "-"
192.168.1.5 - - [25/Apr/2021:14:22:28 +0000] "GET /static/graphicarts/anchor.png HTTP/2.0" 200 395 "-" "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0" "-"
With v2.0, when I proceed to https://yarr.example.com
, Firefox tries to download application/octet-stream
file with a random name, without extension (for example dE9ike23
). It seems to be a valid HTML file – see this gist.
Nginx logs:
192.168.1.5 - - [25/Apr/2021:14:23:59 +0000] "GET / HTTP/2.0" 200 5897 "-" "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:88.0) Gecko/20100101 Firefox/88.0" "-"
Relevant part of the docker-compose file:
[...]
yarr:
container_name: yarr
image: yarr2 # or yarr1
restart: always
networks:
- nginx
expose:
- 7070
volumes:
- yarr:/data
[...]
Relevant part of the Nginx config file:
[...]
server {
listen 443 ssl http2;
server_name yarr.example.com;
location / {
proxy_pass http://yarr:7070;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
[...]
Please let me know if above information is sufficient, or should I include anything else.
quiterss can setting proxy, hope yarr too.
It will be nice to have an option (or several options) to mark all entries older than a certain amount of days as read.
Example use case
You go on holidays, camping or something similar. You come back after a week and some of the items in the feeds are now obsolete.
So it can sync with online feed readers.
I prefer deb packages to binary files. Because it is easier to install and update.
I tried running this service with more than 300 links and out of three times, it crashed twice.
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x89bd17]
goroutine 24 [running]:
github.com/nkanaev/yarr/server.findFavicon(0xc000406ba0, 0x1c, 0xc0002d1260, 0x29, 0x0, 0x0, 0x0)
/var/home/minioin/workspace/yarr/server/crawler.go:170 +0x5d7
github.com/nkanaev/yarr/server.(*Handler).startJobs.func2()
/var/home/minioin/workspace/yarr/server/server.go:76 +0x3aa
created by github.com/nkanaev/yarr/server.(*Handler).startJobs
/var/home/minioin/workspace/yarr/server/server.go:97 +0x149
Thanks.
I'd love to store my feeds in my dotfiles repository: feeds.opml. Currently, I use akregator to do this. The feed list just an akregator's config file, and is updated when I add/remove feeds.
If yarr had a similar feature, I would consider switching to it ;) Especially if was able to canonicalize xml before writing the file out: akregator loves to just permute xml attributes without semantic changes, which makes storing this file in git pretty annoying.
If yarr
cannot open 127.0.0.1:7070
it will exit with no explanation and with exit code 0 (successful). Please provide an explanation and let yarr
exit with a non-zero exit code, preferrably 1.
$ _output/linux/yarr # prompt return immediately
$ echo $? # let's eee the exit code
0
$ _output/linux/yarr -version
v1.0 (9c7d95f6)
$ go version
go version go1.15.2 linux/amd64
$ uname -a
Linux syskon 5.8.10-arch1-1 #1 SMP PREEMPT Thu, 17 Sep 2020 18:01:06 +0000 x86_64 GNU/Linux
If I delete a feed through Manage Feeds, the feed disappears from the UI, but reloading the page it appears again.
Any method to install via docker?
hope to support http proxy.
thk.
Any plans to build a docker image so we can host this ourselves over a web ui?
Hi, I understand that #57 means the app is feature complete from your perspective.
That said, I added some features in my branch and I thought it would be nice to at least point them here, in case there's something that interests you. I wouldn't mind making a PR for any of them:
p
and n
m
If anything makes sense to you here, please let me know.
If there's no interest in any of them, it's all good. :)
Thanks for the great project.
Hey sorry if this isn't the right place to ask for suggestions, but I think podcasts would be a nice addition to yarr. Normally they would be in the XML tag enclosure.
<enclosure length="[LENGTH, eg 26546304]" type="audio/mpeg" url="[URL]"/>
Like 'O' to open an article's link in background.
Would you please publish docker images to hub.docker.com?
thx.
yarr is unable to load RSS feed from Nitter (https://github.com/zedeus/nitter/) instances.
Example links:
In the unread section, when you scroll down after reading a few articles some of them will not show up.
I could take a shot at trying to fix it and I've thought of two ways this can be fixed.
Any thoughts as to which would be better, or maybe a different solution?
Lastly, in rare cases the unread counter can go below 0. I haven't been able to reproduce it consistently and I don't know if it's related to this specific issue. Have you noticed that at all?
Yarr currently does not support night mode (I didn't find it anyway). It is dazzling to watch the screen at night. I hope to add night mode. In addition, I also hope to add a login function.
Hi! First off, thanks a ton for the project. It's dead easy to install and use - loving this a lot! Please, keep it up and never overcomplicate things like others tend to do.
I would very much appreciate the ability to set auto extract full content for certain feeds so that the experience is more immersive. Instead of having to manually click "Read Here" it'd be done by default.
BTW: I'd have one more little feature request related to scroll bar (specifically hiding it for the articles part). I believe it's trivial to implement and would look much better.
Thanks again!
I successfully compiled yarr using docker, but failed to run the image.
runner@fv-az99-810:~/work/yarr$ docker run yarr
2021/07/18 04:08:43 main.go:86: using db file /data/yarr.db
2021/07/18 04:08:43 migration.go:28: db version is 0. migrating to 6
2021/07/18 04:08:43 migration.go:37: [migration:1] starting
2021/07/18 04:08:43 migration.go:63: [migration:1] failed to start transaction
2021/07/18 04:08:43 main.go:114: Failed to initialise database: unable to open database file: no such file or directory
Hello! Thank you for this project, it's very nice!
Would you think it's possible to add a setting to remove the reading pane?
I see that support for tray icons on linux was removed shortly before release. I personally would love to see this feature back :)
thank you for your interest in the project. unfortunately, i cannot accept any more new features.
the project was created due to lack of the application that i wanted, and it's already serving my own needs. i'd like to keep it simple.
yarr is not being deprecated. it's my go-to feed reader, and i'll gladly fix bugs & accept patches to improve the existing functionality.
my only requests for contributors would be:
if you'd like to introduce new features, please do so by forking it. i won't guarantee that it'd be merged to the upstream though.
I added Merriam-Webster's Word of the Day feed to my yarr instance and upon doing so it added the list of words from the past few days just fine. Upon fetching new updates now, the new word of the day is appearing twice in yarr even though it only appears once in the feed.
Feed URL: https://www.merriam-webster.com/wotd/feed/rss2
Notice the two most recent words, progeny and inveigle, are duplicated. (I added the feed two days ago, when abrupt was the word of the day.)
I looked at the DB and do in fact see two rows for each of those words. In the feed, I Ctrl+F'd the GUIDs for each row and, as expected, only one for each word is found. I'm not sure where the duplicate rows/different GUIDs are coming from. Is there anything I can do to troubleshoot this further?
https://www.smarthomebeginner.com/feed/
Getting "No feeds found at the given url." error even-though its accepting in QuiteRSS and Feedbro extension.
Like double clicking the All Feeds button to expand / collapse all folders.
Like UP and DOWN arrow to browse an article content.
It seems one of my feeds returns nothing and so triggers a panic because of a missing length check in src/parser/feed.go:21
.
panic: runtime error: index out of range [0] with length 0
goroutine 343937 [running]:
github.com/nkanaev/yarr/src/parser.sniff(0xc00016f7ba, 0x2, 0x2, 0xc00016f7ba, 0x2)
github.com/nkanaev/yarr/src/parser/feed.go:21 +0x390
github.com/nkanaev/yarr/src/parser.Parse(0x3da0c0, 0xc00049ff80, 0xc000642d80, 0x18, 0x3da440)
github.com/nkanaev/yarr/src/parser/feed.go:59 +0x245
github.com/nkanaev/yarr/src/worker.listItems(0x4c, 0xc0002f4318, 0xc000642030, 0x14, 0x0, 0x0, 0xc0003fc0a0, 0x1d, 0xc0000240f0, 0
x23, ...)
github.com/nkanaev/yarr/src/worker/crawler.go:193 +0x385
github.com/nkanaev/yarr/src/worker.(*Worker).worker(0xc00007dd10, 0xc000361c80, 0xc00037a060)
github.com/nkanaev/yarr/src/worker/worker.go:136 +0x145
created by github.com/nkanaev/yarr/src/worker.(*Worker).refresher
github.com/nkanaev/yarr/src/worker/worker.go:117 +0xcf
2021/06/30 09:43:24 main.go:86: using db file /var/db/yarr/storage.db
2021/06/30 09:43:24 main.go:133: starting server at http://10.192.0.5:7070
2021/06/30 09:43:24 worker.go:105: Refreshing feeds
2021/06/30 09:43:24 worker.go:76: auto-refresh 30m: starting
I simply added a length check that fixes it for me.
--- src/parser/feed.go.orig 2021-06-07 09:07:20 UTC
+++ src/parser/feed.go
@@ -18,6 +18,11 @@ type processor func(r io.Reader) (*Feed, error)
func sniff(lookup string) (string, processor) {
lookup = strings.TrimSpace(lookup)
lookup = strings.TrimLeft(lookup, "\x00\xEF\xBB\xBF\xFE\xFF")
+
+ if len(lookup) < 1 {
+ return "", nil
+ }
+
switch lookup[0] {
case '<':
decoder := xmlDecoder(strings.NewReader(lookup))
When starting yarr with the parameter -auth-file, the expected login page remains empty.
/usr/local/bin/yarr -addr 127.0.0.1:7070 -db /data/yarr.db -auth-file /share/yarr/auth
I am using version v1.2
Uncertain here, but the makefile doesn't include the login.html for the assets. Or is my run call wrong?
How would you feel about the idea of adding keyboard shortcuts? I find them very handy in NetNewsWire.
Not asking you to necessarily do the implementation; more curious about your opinion of the capability.
You can edit feed names and arrange them, but you can't edit the feed URL (after adding them), I think this is a basic feature of feed readers.
I have set up yarr behind reverse proxy on a non-root path. For illustration, it could be http://example.com/my/yarr/
. The HTML seems to refer to resources by relative path (./static/...
), but particularly api.js seems to refer to absolute paths, such as /api/feeds/...
. These URLs are then resolved to http://example.com/api/feeds/...
, which is not where my yarr instance is found.
I request that yarr supports being proxied behind a non-root path like I have set up.
It is possible to implement this by making all URLs used fully relative. A common alternative is to take the root address as a configuration input (i.e. root = http://example.com/my/yarr/
) and use that to generate fully absolute URLs.
YouTube feeds showing empty screen.
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.