mirror of
https://codeberg.org/Reuh/feather.git
synced 2025-10-27 10:09:32 +00:00
Compare commits
5 commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 13d82f9913 | |||
| 0cf1bc5003 | |||
| 595be10876 | |||
| 0db9881d09 | |||
| d77a92cb82 |
5 changed files with 25 additions and 18 deletions
|
|
@ -53,14 +53,13 @@ The now read articles can (surprisingly) be found in the trash. After marking an
|
|||
|
||||
#### Reading read articles
|
||||
|
||||
If you want to re-read your favorites articles directly in the Feather reader director, you can configure Feather to write articles files for read articles too:
|
||||
If you want to re-read your favorites articles directly in the Feather reader directory, you can configure Feather to write articles files for read articles too:
|
||||
|
||||
```toml
|
||||
# Write article HTML files for read articles
|
||||
[html]
|
||||
# Write article HTML files for read articles
|
||||
write_read_articles = true
|
||||
# Add a checkmark in the article filename indicating the read status
|
||||
[html]
|
||||
filename_template = "{% if unread %}☐{% else %}☑{% endif %} [{{ feed_title }}]\t{{ title }} ({{ published }}).html"
|
||||
```
|
||||
|
||||
|
|
@ -73,8 +72,8 @@ Note that this also change the mark-as-unread behavior: since it is no longer po
|
|||
By default, Feather will only grab unread articles from the server, so the read articles you have access to locally are only the articles kept for the 3 days grace period after marking them as read (see the [handling read articles chapter](#handling-read-articles)). If you want to have access to _all_ articles from the server, you can add to your configuration:
|
||||
|
||||
```toml
|
||||
# Grab both read and unread articles from the server
|
||||
[server]
|
||||
# Grab both read and unread articles from the server
|
||||
only_sync_unread_articles = false
|
||||
```
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
[project]
|
||||
name = "feather"
|
||||
version = "1.1.0"
|
||||
version = "1.1.1"
|
||||
authors = [ { name = 'Étienne "Reuh" Fildadut' } ]
|
||||
description = "file-based RSS reader client"
|
||||
readme = "README.md"
|
||||
|
|
|
|||
|
|
@ -128,7 +128,7 @@ class FeatherApp:
|
|||
print("Synchronizing from server...")
|
||||
|
||||
new_articles, updated_articles = 0, 0
|
||||
grabbed_article_paths: set[ArticleId] = set()
|
||||
grabbed_article_ids: set[ArticleId] = set()
|
||||
|
||||
categories = client_session.list_categories()
|
||||
for category in categories:
|
||||
|
|
@ -148,7 +148,7 @@ class FeatherApp:
|
|||
remaining = False
|
||||
|
||||
for article in articles:
|
||||
grabbed_article_paths.add(article.id)
|
||||
grabbed_article_ids.add(article.id)
|
||||
json_path = article.json_path
|
||||
if not json_path.exists():
|
||||
article.write()
|
||||
|
|
@ -160,20 +160,26 @@ class FeatherApp:
|
|||
article.write()
|
||||
updated_articles += 1
|
||||
|
||||
# Remove articles that we didn't get from the server but are in the JSON directory
|
||||
# Remove or mark-as-read articles that we didn't get from the server but are in the JSON directory
|
||||
removed_articles = 0
|
||||
article_cutoff_timestamp = (
|
||||
datetime.now().timestamp() - config.keep_read_articles_for
|
||||
)
|
||||
for article in self.iter_articles():
|
||||
if (
|
||||
# we sync all articles: remove all articles that aren't on the server
|
||||
not config.only_sync_unread_articles
|
||||
# we only sync unread: only remove articles that are too old
|
||||
or article.last_write < article_cutoff_timestamp
|
||||
) and article.id not in grabbed_article_paths:
|
||||
article.delete()
|
||||
removed_articles += 1
|
||||
if article.id not in grabbed_article_ids:
|
||||
# we only sync unread: articles we didn't get from the server were read or purged
|
||||
if config.only_sync_unread_articles:
|
||||
if article.last_write < article_cutoff_timestamp:
|
||||
article.delete()
|
||||
removed_articles += 1
|
||||
elif article.unread:
|
||||
article.unread = False
|
||||
article.regenerate()
|
||||
updated_articles += 1
|
||||
# we sync all articles: articles we didn't get from the server were purged
|
||||
else:
|
||||
article.delete()
|
||||
removed_articles += 1
|
||||
|
||||
print(
|
||||
f"Synchronization successful ({new_articles} new articles, {updated_articles} updated, {removed_articles} removed)"
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
[server]
|
||||
# (Required) Server API to use. Either "googlereader" for the Google Reader API (FreshRSS, Miniflux, etc.) or "ttrss" for the TinyTiny-RSS API.
|
||||
# The Google Reader API do not support nested categories.
|
||||
# Can be set through the environment variable SERVER_API.
|
||||
api = "googlereader"
|
||||
# (Required) URL of your server's Google Reader API endpoint
|
||||
# Can be set through the environment variable SERVER_URL.
|
||||
|
|
@ -84,7 +85,7 @@ article_template = '''
|
|||
<body style="background-color:black; color:white; font-family:sans-serif; overflow-x:hidden;">
|
||||
<style>
|
||||
a {color:palevioletred; text-decoration:none;}
|
||||
.feather-content img {display:block; margin-left:50%; transform:translateX(-50%); max-width:100vw;}
|
||||
.feather-content img, .feather-content video {display:block; margin-left:50%; transform:translateX(-50%); max-width:100vw;}
|
||||
</style>
|
||||
<article style="max-width:min(60rem,100%); margin:auto;">
|
||||
<p style="display:flex; flex-direction:row; justify-content:space-between;">
|
||||
|
|
@ -138,6 +139,7 @@ hide_empty_categories = true
|
|||
# Can be set through the environment variable HTML_MAX_FILENAME_LENGTH.
|
||||
max_filename_length = 250
|
||||
# Table mapping characters to what they will be replaced with in filenames. Useful to remove/replace characters that are not allowed in filename by your filesystem. The default should be fine for most Unix filesystems.
|
||||
# Can not be set through environment variables, sorry!
|
||||
filename_replacement = { "/" = "⧸", "\u0000" = "" }
|
||||
|
||||
[datetime]
|
||||
|
|
|
|||
2
uv.lock
generated
2
uv.lock
generated
|
|
@ -69,7 +69,7 @@ wheels = [
|
|||
|
||||
[[package]]
|
||||
name = "feather"
|
||||
version = "1.1.0"
|
||||
version = "1.1.1"
|
||||
source = { editable = "." }
|
||||
dependencies = [
|
||||
{ name = "google-reader" },
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue