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 from functools import partial
import logging import logging
import re import re
from typing import Dict, List, Optional from typing import Dict, List, Optional, Sequence
import urllib.parse as url import urllib.parse as url
from tinytinypy import Connection from tinytinypy import Connection, UpdateField, UpdateMode
from tinytinypy.main import Headline from tinytinypy.main import Headline
@ -115,3 +115,14 @@ class TtRssUri:
def request(self, params: TtRssConnectionParameter, **kwargs) -> HeadlineList: def request(self, params: TtRssConnectionParameter, **kwargs) -> HeadlineList:
return self.kind.request(self.id)(params, **self.options, **kwargs) 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 if self.__label_filter
in (label_marker[0] for label_marker in headline.labels) 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( return ExtractedData(
extractor_name=self.name, extractor_name=self.name,
object_key=uri, object_key=uri,
@ -79,8 +70,14 @@ class TtRssCollectionExtractor(CollectionExtractor[HeadlineList]):
if not object.title: if not object.title:
object.title = object.uri object.title = object.uri
logging.debug(f"Got {len(data)} headlines") logging.debug(f"Got {len(data)} headlines")
rss_uri = self.__decode_uri(object.uri)
readed_headlines = list[int]()
for headline in data: 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() orm.commit()
if self.__mark_as_read:
rss_uri.set_read(self.__params, readed_headlines)
if object.watch_in_order_auto: if object.watch_in_order_auto:
object.watch_in_order = False # no order available object.watch_in_order = False # no order available

Loading…
Cancel
Save