Add capability to mark TT-RSS feed items as read

master
Felix Stupp 3 years ago
parent 321847446b
commit e486dccf8e
Signed by: zocker
GPG Key ID: 93E1BD26F6B02FB7

@ -5,10 +5,10 @@ from enum import Enum
from functools import partial
import logging
import re
from typing import Dict, List, Optional
from typing import Dict, List, Optional, Sequence
import urllib.parse as url
from tinytinypy import Connection
from tinytinypy import Connection, UpdateField, UpdateMode
from tinytinypy.main import Headline
@ -115,3 +115,14 @@ class TtRssUri:
def request(self, params: TtRssConnectionParameter, **kwargs) -> HeadlineList:
return self.kind.request(self.id)(params, **self.options, **kwargs)
def set_read(
self,
params: TtRssConnectionParameter,
article_ids: Sequence[int],
) -> None:
_build_connection(params=params).updateArticle(
article_ids=article_ids,
mode=UpdateMode.SET_TO_FALSE,
field=UpdateField.UNREAD,
)

@ -59,15 +59,6 @@ class TtRssCollectionExtractor(CollectionExtractor[HeadlineList]):
if self.__label_filter
in (label_marker[0] for label_marker in headline.labels)
]
if self.__mark_as_read:
parameters = {
"article_ids": ",".join(str(headline.feedId) for headline in data),
"field": "2", # unread
"mode": "0", # false
}
raise NotImplementedError(
"Cannot set articles as read with tinytinypy for now"
) # TODO
return ExtractedData(
extractor_name=self.name,
object_key=uri,
@ -79,8 +70,14 @@ class TtRssCollectionExtractor(CollectionExtractor[HeadlineList]):
if not object.title:
object.title = object.uri
logging.debug(f"Got {len(data)} headlines")
rss_uri = self.__decode_uri(object.uri)
readed_headlines = list[int]()
for headline in data:
self._add_episode(collection=object, uri=headline.url)
elem = self._add_episode(collection=object, uri=headline.url)
if elem is not None:
readed_headlines.append(headline.headlineId)
orm.commit()
if self.__mark_as_read:
rss_uri.set_read(self.__params, readed_headlines)
if object.watch_in_order_auto:
object.watch_in_order = False # no order available

Loading…
Cancel
Save