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