gudvinr
ed3bf59356
refactor(reader): use time.Duration instead of minutes count
...
In general, duration is used as time unit representation.
At some places when int is returned, there's no documentation which unit is used.
So just convert to time.Duration ASAP.
2025-08-20 19:45:24 -07:00
jvoisin
112494bb66
perf(feed): save 16 bytes in the Feed struct
...
before:
```
// feed.go:25 | Size: 560 (Optimal: 544)
type Feed struct {
ID int64 ■ ■ ■ ■ ■ ■ ■ ■
UserID int64 ■ ■ ■ ■ ■ ■ ■ ■
FeedURL string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
SiteURL string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Title string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Description string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
CheckedAt time.Time ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
NextCheckAt time.Time ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
EtagHeader string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
LastModifiedHeader string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
ParsingErrorMsg string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
ParsingErrorCount int ■ ■ ■ ■ ■ ■ ■ ■
ScraperRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
RewriteRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Crawler bool ■ □ □ □ □ □ □ □
BlocklistRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
KeeplistRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
BlockFilterEntryRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
KeepFilterEntryRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
UrlRewriteRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
UserAgent string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Cookie string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Username string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Password string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Disabled bool ■
NoMediaPlayer bool ■
IgnoreHTTPCache bool ■
AllowSelfSignedCertificates bool ■
FetchViaProxy bool ■
HideGlobally bool ■
DisableHTTP2 bool ■ □
AppriseServiceURLs string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
WebhookURL string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
NtfyEnabled bool ■ □ □ □ □ □ □ □
NtfyPriority int ■ ■ ■ ■ ■ ■ ■ ■
NtfyTopic string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
PushoverEnabled bool ■ □ □ □ □ □ □ □
PushoverPriority int ■ ■ ■ ■ ■ ■ ■ ■
ProxyURL string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Category *Category ■ ■ ■ ■ ■ ■ ■ ■
Icon *FeedIcon ■ ■ ■ ■ ■ ■ ■ ■
Entries Entries ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
TTL int ■ ■ ■ ■ ■ ■ ■ ■
IconURL string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
UnreadCount int ■ ■ ■ ■ ■ ■ ■ ■
ReadCount int ■ ■ ■ ■ ■ ■ ■ ■
NumberOfVisibleEntries int ■ ■ ■ ■ ■ ■ ■ ■
}
```
after:
```
// feed.go:25 | Size: 544
type Feed struct {
ID int64 ■ ■ ■ ■ ■ ■ ■ ■
UserID int64 ■ ■ ■ ■ ■ ■ ■ ■
FeedURL string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
SiteURL string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Title string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Description string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
CheckedAt time.Time ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
NextCheckAt time.Time ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
EtagHeader string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
LastModifiedHeader string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
ParsingErrorMsg string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
ParsingErrorCount int ■ ■ ■ ■ ■ ■ ■ ■
ScraperRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
RewriteRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
BlocklistRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
KeeplistRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
BlockFilterEntryRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
KeepFilterEntryRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
UrlRewriteRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
UserAgent string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Cookie string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Username string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Password string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Disabled bool ■
NoMediaPlayer bool ■
IgnoreHTTPCache bool ■
AllowSelfSignedCertificates bool ■
FetchViaProxy bool ■
HideGlobally bool ■
DisableHTTP2 bool ■
PushoverEnabled bool ■
NtfyEnabled bool ■
Crawler bool ■ □ □ □ □ □ □
AppriseServiceURLs string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
WebhookURL string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
NtfyPriority int ■ ■ ■ ■ ■ ■ ■ ■
NtfyTopic string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
PushoverPriority int ■ ■ ■ ■ ■ ■ ■ ■
ProxyURL string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Category *Category ■ ■ ■ ■ ■ ■ ■ ■
Icon *FeedIcon ■ ■ ■ ■ ■ ■ ■ ■
Entries Entries ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
TTL int ■ ■ ■ ■ ■ ■ ■ ■
IconURL string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
UnreadCount int ■ ■ ■ ■ ■ ■ ■ ■
ReadCount int ■ ■ ■ ■ ■ ■ ■ ■
NumberOfVisibleEntries int ■ ■ ■ ■ ■ ■ ■ ■
}
```
2025-06-29 16:10:35 -07:00
jvoisin
9f7ecdb75a
perf(model): save 16 bytes in the FeedCreationRequest struct
...
before:
```
// feed.go:154 | Size: 240 (Optimal: 224)
type FeedCreationRequest struct {
FeedURL string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
CategoryID int64 ■ ■ ■ ■ ■ ■ ■ ■
UserAgent string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Cookie string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Username string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Password string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Crawler bool ■
Disabled bool ■
NoMediaPlayer bool ■
IgnoreHTTPCache bool ■
AllowSelfSignedCertificates bool ■
FetchViaProxy bool ■ □ □
UrlRewriteRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
DisableHTTP2 bool ■ □ □ □ □ □ □ □
ScraperRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
RewriteRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
BlocklistRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
KeeplistRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
BlockFilterEntryRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
KeepFilterEntryRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
HideGlobally bool ■ □ □ □ □ □ □ □
ProxyURL string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
}
```
after:
```
// feed.go:154 | Size: 224
type FeedCreationRequest struct {
FeedURL string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
CategoryID int64 ■ ■ ■ ■ ■ ■ ■ ■
UserAgent string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Cookie string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Username string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Password string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
Crawler bool ■
Disabled bool ■
NoMediaPlayer bool ■
IgnoreHTTPCache bool ■
AllowSelfSignedCertificates bool ■
FetchViaProxy bool ■
HideGlobally bool ■
DisableHTTP2 bool ■
ScraperRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
RewriteRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
BlocklistRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
KeeplistRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
BlockFilterEntryRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
KeepFilterEntryRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
UrlRewriteRules string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
ProxyURL string ■ ■ ■ ■ ■ ■ ■ ■
■ ■ ■ ■ ■ ■ ■ ■
}
```
2025-06-29 16:10:35 -07:00
Frédéric Guillot
2a9d91c783
feat: add entry filters at the feed level
2025-06-19 15:15:16 -07:00
Frédéric Guillot
c87c93d85f
feat(config): add SCHEDULER_ROUND_ROBIN_MAX_INTERVAL
option
...
Add option to cap maximum refresh interval when RSS TTL, Retry-After, Cache-Control, or Expires headers specify excessively high values.
2025-04-11 15:40:32 -07:00
Frédéric Guillot
ef22e95f8b
feat: implement proxy URL per feed
2025-04-06 21:05:19 -07:00
Uziskull
55a3f9fcc9
feat(integrations/ntfy): make ntfy topics configurable per feed, with default one as fallback
2025-02-24 16:29:08 -08:00
Sergio Moura
3387201634
feat(pushover): add integration with pushover.net
2025-02-13 20:50:37 -08:00
Wesley van Tilburg
459284ab96
feat(integration): add webhook URL per feed
2025-01-31 16:33:11 -08:00
Julien Voisin
e6185b1393
refactor: use min/max instead of math.Min/math.Max
...
This saves a couple of back'n'forth casts.
2024-12-11 19:43:14 -08:00
Frédéric Guillot
e1050e21b5
feat: take Retry-After
header into consideration for rate limited feeds
2024-10-05 22:26:05 -07:00
Frédéric Guillot
f16735fd6d
feat: update feed icon during force refresh
2024-10-04 20:51:40 -07:00
Frédéric Guillot
968355f9b9
feat(integration): add ntfy integration
2024-07-13 17:51:17 -07:00
Jan-Lukas Else
a33b1adf13
Add description field to feed settings
...
This adds a new "description" field to the feed settings. This allows to
save custom description regarding a feed. It is also exported and
imported as "description" in OPML.
2024-05-06 15:40:36 -07:00
jvoisin
8e28e41b02
Use struct embedding to reduce code duplication
2024-03-18 16:23:44 -07:00
Frédéric Guillot
eae4cb1417
Add feed option to disable HTTP/2 to avoid fingerprinting
2024-02-24 22:30:26 -08:00
Shizun Ge
27ec6dbd7d
Setting NextCheckAt due to TTL of a feed in feed.go.
...
Add unit tests.
2023-12-01 12:22:30 -08:00
Shizun Ge
70b69ecd19
Add SCHEDULER_ROUND_ROBIN_MIN_INTERVAL
...
Separated from POLLING_FREQUENCY.
2023-11-29 19:52:14 -08:00
Frédéric Guillot
ba65556eac
Show number of visible entries instead of number of read entries in feed list
2023-11-08 16:34:27 +01:00
Frédéric Guillot
eeaab72a9f
Refactor feed discovery and avoid an extra HTTP request if the url provided is the feed
2023-10-22 18:05:37 -07:00
Frédéric Guillot
14e25ab9fe
Refactor HTTP Client and LocalizedError packages
2023-10-22 13:09:30 -07:00
Frédéric Guillot
5e6c054345
Take RSS TTL field into consideration to schedule next check date
2023-10-20 20:11:05 -07:00
Frédéric Guillot
cc44d14722
Avoid excessive manual polling with default scheduler
2023-10-16 21:41:18 -07:00
Frédéric Guillot
ca6af9684a
Add feed information into webhook event
2023-09-10 13:20:04 -07:00
fuchsrot
32d33104a4
Apprise Service Urls per feed
2023-09-09 10:59:04 -07:00
Dror Levin
bea9017b48
Add factor for entry_frequency scheduler
...
Allow the user to increase the frequency of the entry_frequency
scheduler by a configurable factor in order to shorten the time between
updates.
2023-08-31 20:27:09 -07:00
Frédéric Guillot
168a870c02
Move internal packages to an internal folder
...
For reference: https://go.dev/doc/go1.4#internalpackages
2023-08-10 20:29:34 -07:00