Skip to content

Commit 81cdb62

Browse files
pull[bot]Rongronggg9dependabot[bot]hellodwordgallegonovato
authored
[pull] dev from Rongronggg9:dev (#30)
* fix(command/inner/utils): `calculate_update` cannot handle empty entries A completely empty entry will make `calculate_update` use `entry.content` as an alternative hash source. Though it is always a list, it was mistakenly assumed to be a string, making such a fallback causing AttributeError. Fix it by extracting the first non-empty `content.value` in such a circumstance. Signed-off-by: Rongrong <i@rong.moe> * docs(deployment-guide): prefer `python3 -m pip` On some broken system environments, `pip` or `pip3` may use a different Python installation other than the one used by `python3`. Signed-off-by: Rongrong <i@rong.moe> * docs(deployment-guide): highlight blockquotes with GitHub-spcific syntax Signed-off-by: Rongrong <i@rong.moe> * build(deps): Bump lxml from 5.2.1 to 5.2.2 (#458) Bumps [lxml](https://github.com/lxml/lxml) from 5.2.1 to 5.2.2. - [Release notes](https://github.com/lxml/lxml/releases) - [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt) - [Commits](https://github.com/lxml/lxml/compare/lxml-5.2.1...lxml-5.2.2) --- updated-dependencies: - dependency-name: lxml dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump rapidfuzz from 3.9.0 to 3.9.1 (#460) Bumps [rapidfuzz](https://github.com/rapidfuzz/RapidFuzz) from 3.9.0 to 3.9.1. - [Release notes](https://github.com/rapidfuzz/RapidFuzz/releases) - [Changelog](https://github.com/rapidfuzz/RapidFuzz/blob/main/CHANGELOG.rst) - [Commits](https://github.com/rapidfuzz/RapidFuzz/compare/v3.9.0...v3.9.1) --- updated-dependencies: - dependency-name: rapidfuzz dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * docs: update issue template Signed-off-by: Rongrong <i@rong.moe> * fix(root): exit with 0 when disconnected by server side bot.disconnected usually means the bot is logged out due to a network error or Telegram DC degradation, so we should exit with a non-zero code to indicate an error. Now the bot will exit with exit-code 100 when disconnected. This aims to avoid confusion when running the bot in a container or as a service. Signed-off-by: Rongrong <i@rong.moe> * feat(root): log signal name and exit with (128+signum) to indicate it Signed-off-by: Rongrong <i@rong.moe> * build(deps): Bump matplotlib from 3.8.4 to 3.9.0 (#459) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump emoji from 2.11.1 to 2.12.1 (#461) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump typing-extensions from 4.11.0 to 4.12.0 (#463) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump tortoise-orm[accel] from 0.20.1 to 0.21.2 (#464) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * docs: update issue template Signed-off-by: Rongrong <i@rong.moe> * docs: update issue template Signed-off-by: Rongrong <i@rong.moe> * fix(*): replace improper usage of float('inf') with (2 ** 63 - 1) float('inf') was used to represent a huge number, but caused some random errors (in particular, cannot be converted into an int). Replacing them with (2 ** 63 - 1) fixes these errors and still work as expected. Signed-off-by: Rongrong <i@rong.moe> * feat(root): print Telegram user info of bot Print the bot's Telegram user info when the bot is started. This is to help bot managers to find the bot's username and user ID when deploying the bot. Signed-off-by: Rongrong <i@rong.moe> * feat(monitor): rewrite monitoring routine using queue The next step should be rewriting the notifying routine as well. Signed-off-by: Rongrong <i@rong.moe> * feat(monitor): rewrite MonitoringStat; bring back per-minute summary The minute-by-minute summary was removed in the last commit due to the simplification of MonitoringStat. This patch rewrites MonitoringStat, bringing it back with a much more straightforward implementation in the meantime. The patch also fixes the accuracy of the sum of monitoring tasks. Signed-off-by: Rongrong <i@rong.moe> * feat(monitor): make the monitoring queue accept feeds in bulk This should slightly reduce the overhead. Signed-off-by: Rongrong <i@rong.moe> * feat(monitor): count in-progress tasks in task summary This should help measure the load of the bot. Signed-off-by: Rongrong <i@rong.moe> * feat(monitor): refine setting strategy of lock-up period Use callback to set the lock-up period, and subtract 10s from it to prevent locks from being released too late (i.e., released only after causing a new task being deferred). Signed-off-by: Rongrong <i@rong.moe> * feat(monitor): improve style of periodic summary of monitoring subtasks Improve the style of the periodic summary of monitoring subtasks to make the relationship between different metrics clearer. In particular, deferred and resubmitted subtasks are no longer counted as finished - they will finish sooner or later, but not when they are counted. The term "subtask" should have been used in some comments, logs, and variable names, but in fact, "task" was used. This is also corrected. Signed-off-by: Rongrong <i@rong.moe> * feat(monitor): perform garbage collection every periodic monitoring task i.e., perform garbage collection every minute. Signed-off-by: Rongrong <i@rong.moe> * feat: add helper and decorator to queue calls to coroutines So that we don't need to maintain a queue in Monitor and may reuse the helper and decorator in the future. Signed-off-by: Rongrong <i@rong.moe> * feat(monitor): make Monitor garbage-collection-friendly The methods of Monitor were not garbage-collection-friendly because: 1. Unnecessary references to asyncio.Task and db.Feed were kept. 2. A slow coroutine was called at the end of another coroutine (tail call), making the frame of the latter keep referencing all db.Feed objects produced there before the former is done. This patch fixes the above issues. Signed-off-by: Rongrong <i@rong.moe> * feat(monitor): balance subtasks to every second within every minute Previously, all subtasks were submitted at once, resulting in request and message flooding. Such flooding eventually made subtasks more likely to fail if there were a lot of feeds. The patch fixes the issue. Signed-off-by: Rongrong <i@rong.moe> * chore: add devcontainer (#469) Co-authored-by: Rongrong <i@rong.moe> * ci(pre-commit): enable more hooks and refine commit msg Signed-off-by: Rongrong <i@rong.moe> * style: pre-commit end-of-file-fixer Signed-off-by: Rongrong <i@rong.moe> * style: prefer literal syntax as per pre-commit check-builtin-literals Signed-off-by: Rongrong <i@rong.moe> * feat(helpers/queue): make Queued{Helper,Decorator} generic classes Signed-off-by: Rongrong <i@rong.moe> * fix(helpers/queue): QueuedHelper: fix the name of consumer task Signed-off-by: Rongrong <i@rong.moe> * perf(helpers/queue): QueuedHelper: caching attributes in consumer task Speed up the consumer task by caching instance attributes as local variables in the consumer task. These instance attributes are accessed frequently, so caching them can avoid the overhead of attribute access. Signed-off-by: Rongrong <i@rong.moe> * feat: add context manager to apply timeout to batch async calls The codes are actually extracted from command.monitor.Monitor. Make an asynchronous context manager so that it can be reused with ease. Signed-off-by: Rongrong <i@rong.moe> * ci(pre-commit): allow missing aws credentials Signed-off-by: Rongrong <i@rong.moe> * refactor(parsing): simplify emojify() and the map used by it Signed-off-by: Rongrong <i@rong.moe> * perf(parsing): use one-pass substitution (re.sub) to speed up emojify() Signed-off-by: Rongrong <i@rong.moe> * chore(*): prefer `python -m pip` to upgrade pip Signed-off-by: Rongrong <i@rong.moe> * build(deps): Bump tortoise-orm[accel] from 0.21.2 to 0.21.3 (#475) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump rapidfuzz from 3.9.1 to 3.9.3 (#476) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump typing-extensions from 4.12.0 to 4.12.2 (#478) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump telethon from 1.35.0 to 1.36.0 (#479) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump docker/build-push-action from 5 to 6 (#480) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * feat(helpers/queue): QueuedHelper: trace background tasks Signed-off-by: Rongrong <i@rong.moe> * refactor(helpers): extract BgHelper as base class from QueuedHelper Signed-off-by: Rongrong <i@rong.moe> * refactor(helpers): extract BgDecorator from QueuedDecorator as base class Signed-off-by: Rongrong <i@rong.moe> * refactor(monitor): decorate _do_monitor_task with bg to reduce overhead The `queued` decorator has a slightly higher overhead due to the use of `asyncio.Queue`. Since the execution of monitoring tasks is completely unlimited now, we can use the simpler `bg` decorator to avoid the extra overhead of `queued`. Signed-off-by: Rongrong <i@rong.moe> * feat(helpers): BatchTimeout: cancel all tasks when exit with exception Signed-off-by: Rongrong <i@rong.moe> * feat(helpers): BgHelper: log uncaught exception Signed-off-by: Rongrong <i@rong.moe> * refactor(*): turn monitor into a package Signed-off-by: Rongrong <i@rong.moe> * refactor(monitor): split stat classes into another file Signed-off-by: Rongrong <i@rong.moe> * refactor(monitor): split notifying functions into Notifier class Signed-off-by: Rongrong <i@rong.moe> * refactor(monitor): extract Stat as base class from MonitoringStat Signed-off-by: Rongrong <i@rong.moe> * feat(monitor): Notifier: adopt bg decorator and BatchTimeout manager Also add statistics to it. Signed-off-by: Rongrong <i@rong.moe> * refactor(helpers): make BgDecorator and QueuedDecorator more generic Signed-off-by: Rongrong <i@rong.moe> * feat(monitor): log trigger reasons before and after each task Signed-off-by: Rongrong <i@rong.moe> * docs(CHANGELOG): rewrite monitor for flexibility and robustness Signed-off-by: Rongrong <i@rong.moe> * fix(helpers): Notifier: describe subtask Signed-off-by: Rongrong <i@rong.moe> * refactor(helpers): rename Notifying* -> Notifier* Signed-off-by: Rongrong <i@rong.moe> * refactor(helpers): rename Monitoring* -> Monitor* Signed-off-by: Rongrong <i@rong.moe> * build(deps): Bump asyncstdlib from 3.12.3 to 3.12.4 (#481) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * feat(helpers): add SameFuncPipelineContextManager Signed-off-by: Rongrong <i@rong.moe> * feat(monitor): retain post order when notifying Signed-off-by: Rongrong <i@rong.moe> * fix(monitor.Notifier): outdated callback signature Signed-off-by: Rongrong <i@rong.moe> * refactor(monitor.Notifier): nitpick Signed-off-by: Rongrong <i@rong.moe> * feat(helpers.pipeline): add exception handling Signed-off-by: Rongrong <i@rong.moe> * style(helpers.timeout): nitpick Signed-off-by: Rongrong <i@rong.moe> * fix(*): some TypeVar not marked covariant Signed-off-by: Rongrong <i@rong.moe> * fix(helpers.timeout): BatchTimeout: too strict type annotation on cb Signed-off-by: Rongrong <i@rong.moe> * build(deps): Bump python-socks[asyncio] from 2.4.4 to 2.5.0 (#483) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(FUNDING): add ko-fi Signed-off-by: Rongrong <i@rong.moe> * feat(notifier): continue sub notifying pipeline on execption Signed-off-by: Rongrong <i@rong.moe> * docs(CHANGELOG): retain post order when notifying Signed-off-by: Rongrong <i@rong.moe> * chore: release v2.8.0 Signed-off-by: Rongrong <i@rong.moe> * fix(env): empty `VERSION` when `.version` not exist and pwd not in proj Signed-off-by: Rongrong <i@rong.moe> * docs(CHANGELOG): amend missing BREAKING CHANGES section in v2.8.0 Signed-off-by: Rongrong <i@rong.moe> * fix(`/set*`): bot manager can still set intervals shorter than limit Signed-off-by: Rongrong <i@rong.moe> * chore(i18n): update l10n for `es` Translated using Weblate (es, Spanish) Currently translated at 100.0% (197 of 197 strings) Co-authored-by: gallegonovato <fran-carro@hotmail.es> Translate-URL: https://hosted.weblate.org/projects/rss-to-telegram-bot/glossary/es/ Translation: RSS to Telegram Bot/RSS to Telegram Bot * chore(i18n): update l10n for `tr` Translated using Weblate (tr, Turkish) Currently translated at 100.0% (197 of 197 strings) Co-authored-by: Abdullah Koyuncu <wisewebworks@outlook.com> Translate-URL: https://hosted.weblate.org/projects/rss-to-telegram-bot/glossary/tr/ Translation: RSS to Telegram Bot/RSS to Telegram Bot * build(deps): Bump pillow from 10.3.0 to 10.4.0 (#484) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump rapidfuzz from 3.9.3 to 3.9.4 (#485) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump tortoise-orm[accel] from 0.21.3 to 0.21.4 (#486) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump matplotlib from 3.9.0 to 3.9.1 (#487) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * refactor(*): mv __init__.py entrypoint.py Signed-off-by: Rongrong <i@rong.moe> * chore: add missing copyright headers The whole project, namely, RSS to Telegram Bot, has licensed under GNU Affero General Public License version 3 or (at your option) any later version since 604b2ea9d82f37cfe41f1a3ddca7b1e5bd42d655 ("Change the license to AGPL"). Add missing copyright headers to prevent potential issues. Signed-off-by: Rongrong <i@rong.moe> * docs(README): clarify licensing Signed-off-by: Rongrong <i@rong.moe> * fix(helpers.pipeline): StopPipeline caught too early StopPipeline was derived from Exception. As a result, a normal "catch-all" routine (try...except Exception...) would catch it, preventing it from being propagated to SameFuncPipelineContextManager. Fixes it by deriving StopPipeline from BaseException. Signed-off-by: Rongrong <i@rong.moe> * chore(i18n): update l10n for `he` (#489) Co-authored-by: Rongrong <i@rong.moe> * feat(parsing.utils): sanitize post title and author Some feeds have their title/item.title/item.author containing HTML, which violates the best practice of RSS. Stripping any HTML elements so that they won't break Telegram messages or Telegraph posts. See also: https://www.rssboard.org/rss-profile#data-types-characterdata Fixes #493 Signed-off-by: Rongrong <i@rong.moe> * chore(i18n): update l10n for `tr` Translated using Weblate (tr, Turkish) Currently translated at 100.0% (197 of 197 strings) Co-authored-by: Abdullah Koyuncu <wisewebworks@outlook.com> Translate-URL: https://hosted.weblate.org/projects/rss-to-telegram-bot/glossary/tr/ Translation: RSS to Telegram Bot/RSS to Telegram Bot * chore(i18n): update l10n for `it` Translated using Weblate (it, Italian) Currently translated at 100.0% (197 of 197 strings) Co-authored-by: Tommaso <tommaso.uno@tuta.com> Translate-URL: https://hosted.weblate.org/projects/rss-to-telegram-bot/glossary/it/ Translation: RSS to Telegram Bot/RSS to Telegram Bot * chore(i18n): update l10n for `it` Translated using Weblate (it, Italian) Currently translated at 100.0% (197 of 197 strings) Co-authored-by: Manuel Tassi <mannivuwiki@gmail.com> Translate-URL: https://hosted.weblate.org/projects/rss-to-telegram-bot/glossary/it/ Translation: RSS to Telegram Bot/RSS to Telegram Bot * chore(i18n): update l10n for `ru` Translated using Weblate (ru, Russian) Currently translated at 100.0% (197 of 197 strings) Co-authored-by: Maxim Borozdin <m.n.borozdin@gmail.com> Translate-URL: https://hosted.weblate.org/projects/rss-to-telegram-bot/glossary/ru/ Translation: RSS to Telegram Bot/RSS to Telegram Bot * build(deps): Bump cachetools from 5.3.3 to 5.4.0 (#491) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump tortoise-orm[accel] from 0.21.4 to 0.21.5 (#494) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * style(db.models): Sub: add type hint stubs for foreign keys Signed-off-by: Rongrong <i@rong.moe> * refactor(command.utils): improve readability and maintainability Signed-off-by: Rongrong <i@rong.moe> * refactor(command.misc): improve readability and maintainability Signed-off-by: Rongrong <i@rong.moe> * refactor(command): improve readability and maintainability Signed-off-by: Rongrong <i@rong.moe> * fix(command.utils): describe_user: missing right parenthesis Signed-off-by: Rongrong <i@rong.moe> * style(db.models): improve readability and maintainability Signed-off-by: Rongrong <i@rong.moe> * feat(aio_helper): add one more thread to pool to improve responsiveness Though multithreading in CPython cannot improve performance due to GIL, having more threads is still useful for improving responsiveness under high loads. Add one more thread to the thread pool (aioThreadExecutor) so that it has two threads now (previously 1). Signed-off-by: Rongrong <i@rong.moe> * build(deps): Bump rapidfuzz from 3.9.4 to 3.9.5 (#496) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump aiohttp[speedups] and aiohttp-socks aiohttp-socks 0.9.0 requires aiohttp>=3.10.0, so bump them together. aiohttp[speedups]: from 3.9.5 to 3.10.1 aiohttp-socks: from 0.8.4 to 0.9.0 Signed-off-by: Rongrong <i@rong.moe> * feat(web): new env var VERIFY_TLS (default: 1) Fixes #498 Signed-off-by: Rongrong <i@rong.moe> * perf(parsing.utils): ensure_plain: use run_async only if processing HTML Utilizing aio_helper.run_async() actually means that the function call will be queued until the ThreadPoolExecutor is free to pick it up. The queue can be extremely long under high loads. Preventing ensure_plain from utilizing aio_helper.run_async() when unneeded, so that the pressure of ThreadPoolExecutor won't be too high. Signed-off-by: Rongrong <i@rong.moe> * build(deps): Bump matplotlib from 3.9.1 to 3.9.1.post1 (#502) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump rapidfuzz from 3.9.5 to 3.9.6 (#501) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump aiohttp[speedups] from 3.10.1 to 3.10.3 (#504) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump isal from 1.6.1 to 1.7.0 (#505) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump lxml from 5.2.2 to 5.3.0 (#506) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump matplotlib from 3.9.1.post1 to 3.9.2 (#507) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * feat(command.utils.command_gatekeeper): loosen default timeout to 120s The default timeout is just too short under high server loads. In particular, considering that all feed parsing tasks are queued due to aio_helper, `/sub` is very likely to exceed the timeout. Signed-off-by: Rongrong <i@rong.moe> * chore(i18n): update l10n for `ja` (#508) Translated using Weblate (ja, Japanese) Currently translated at 100.0% (197 of 197 strings) Translate-URL: https://hosted.weblate.org/projects/rss-to-telegram-bot/glossary/ja/ Translation: RSS to Telegram Bot/RSS to Telegram Bot Co-authored-by: 欠陥電気 <Misaka13514@gmail.com> * fix(web.req): regression: IPV6_PRIOR|R_PROXY causes AssertionError Happy eyeballs, available since aiohttp 3.10, cause AssertionError when setting both proxy and socket family. Make them mutually exclusive (proxy takes precedence) since it is always meaningless to set them together. TODO: Is it time to deprecate IPV6_PRIOR and completely rely on Happy Eyeballs (RFC 8305)? Fixes the regression introduced in 88fdb2ce191e395a30e03ec00c10fae225be256d. Signed-off-by: Rongrong <i@rong.moe> * feat(env): select a valid DATABASE_URL when deployed on Railway.app Railway.app provides DATABASE_PRIVATE_URL, DATABASE_URL and/or DATABASE_PUBLIC_URL. DATABASE_PRIVATE_URL is for private networking, while DATABASE_PUBLIC_URL is for public networking. If private networking is disabled, the former still exists but is invalid (i.e., missing host). If public networking is disabled, both host and port are missing in the latter, resulting in an invalid URL too. A legacy Postgres addon may provide only DATABASE_URL (for PUBLIC networking) and DATABASE_PRIVATE_URL, while a modern one may provide only DATABASE_URL (for PRIVATE networking) and DATABASE_PUBLIC_URL. Thus, we need to select a valid one from them. This should solve most database connection issues on Railway.app. Signed-off-by: Rongrong <i@rong.moe> * build(deps): Bump uvloop from 0.19.0 to 0.20.0 (#509) Bumps [uvloop](https://github.com/MagicStack/uvloop) from 0.19.0 to 0.20.0. - [Release notes](https://github.com/MagicStack/uvloop/releases) - [Commits](https://github.com/MagicStack/uvloop/compare/v0.19.0...v0.20.0) --- updated-dependencies: - dependency-name: uvloop dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump tortoise-orm[accel] from 0.21.5 to 0.21.6 (#511) Bumps [tortoise-orm[accel]](https://github.com/tortoise/tortoise-orm) from 0.21.5 to 0.21.6. - [Release notes](https://github.com/tortoise/tortoise-orm/releases) - [Changelog](https://github.com/tortoise/tortoise-orm/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/tortoise/tortoise-orm/compare/0.21.5...0.21.6) --- updated-dependencies: - dependency-name: tortoise-orm[accel] dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump cachetools from 5.4.0 to 5.5.0 (#513) Bumps [cachetools](https://github.com/tkem/cachetools) from 5.4.0 to 5.5.0. - [Changelog](https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst) - [Commits](https://github.com/tkem/cachetools/compare/v5.4.0...v5.5.0) --- updated-dependencies: - dependency-name: cachetools dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump aiohttp[speedups] from 3.10.3 to 3.10.5 (#514) Bumps [aiohttp[speedups]](https://github.com/aio-libs/aiohttp) from 3.10.3 to 3.10.5. - [Release notes](https://github.com/aio-libs/aiohttp/releases) - [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst) - [Commits](https://github.com/aio-libs/aiohttp/compare/v3.10.3...v3.10.5) --- updated-dependencies: - dependency-name: aiohttp[speedups] dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump python-socks[asyncio] from 2.5.0 to 2.5.1 (#515) Bumps [python-socks[asyncio]](https://github.com/romis2012/python-socks) from 2.5.0 to 2.5.1. - [Release notes](https://github.com/romis2012/python-socks/releases) - [Commits](https://github.com/romis2012/python-socks/compare/v2.5.0...v2.5.1) --- updated-dependencies: - dependency-name: python-socks[asyncio] dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * style(Dockerfile): uppercase all keywords Signed-off-by: Rongrong <i@rong.moe> * build(deps): Bump asyncstdlib from 3.12.4 to 3.12.5 (#516) Bumps [asyncstdlib](https://github.com/maxfischer2781/asyncstdlib) from 3.12.4 to 3.12.5. - [Release notes](https://github.com/maxfischer2781/asyncstdlib/releases) - [Commits](https://github.com/maxfischer2781/asyncstdlib/compare/v3.12.4...v3.12.5) --- updated-dependencies: - dependency-name: asyncstdlib dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump yarl from 1.9.4 to 1.9.7 (#517) Bumps [yarl](https://github.com/aio-libs/yarl) from 1.9.4 to 1.9.7. - [Release notes](https://github.com/aio-libs/yarl/releases) - [Changelog](https://github.com/aio-libs/yarl/blob/master/CHANGES.rst) - [Commits](https://github.com/aio-libs/yarl/compare/v1.9.4...v1.9.7) --- updated-dependencies: - dependency-name: yarl dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump rapidfuzz from 3.9.6 to 3.9.7 (#518) Bumps [rapidfuzz](https://github.com/rapidfuzz/RapidFuzz) from 3.9.6 to 3.9.7. - [Release notes](https://github.com/rapidfuzz/RapidFuzz/releases) - [Changelog](https://github.com/rapidfuzz/RapidFuzz/blob/main/CHANGELOG.rst) - [Commits](https://github.com/rapidfuzz/RapidFuzz/compare/v3.9.6...v3.9.7) --- updated-dependencies: - dependency-name: rapidfuzz dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump yarl from 1.9.7 to 1.9.11 (#522) Bumps [yarl](https://github.com/aio-libs/yarl) from 1.9.7 to 1.9.11. - [Release notes](https://github.com/aio-libs/yarl/releases) - [Changelog](https://github.com/aio-libs/yarl/blob/master/CHANGES.rst) - [Commits](https://github.com/aio-libs/yarl/compare/v1.9.7...v1.9.11) --- updated-dependencies: - dependency-name: yarl dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix!(parsing.tgraph): media upload to Telegraph no longer feasible Details: https://t.me/durov/343 This partially reverts "feat(parsing/tgraph): upload media to Telegraph" (2968401724cc075294f94918cdc547c533e0490d) and "docs(README): highlights: media upload to Telegraph" (b2d3efc82427b8b89a1b7af62ec8a0dfad045d96). Signed-off-by: Rongrong <i@rong.moe> * build(deps): Bump yarl from 1.9.11 to 1.11.0 (#524) Bumps [yarl](https://github.com/aio-libs/yarl) from 1.9.11 to 1.11.0. - [Release notes](https://github.com/aio-libs/yarl/releases) - [Changelog](https://github.com/aio-libs/yarl/blob/master/CHANGES.rst) - [Commits](https://github.com/aio-libs/yarl/compare/v1.9.11...v1.11.0) --- updated-dependencies: - dependency-name: yarl dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore: release v2.9.0 Signed-off-by: Rongrong <i@rong.moe> * chore(i18n): update l10n for `ar` (#527) Translated using Weblate (ar, Arabic) Currently translated at 98.4% (194 of 197 strings) Translate-URL: https://hosted.weblate.org/projects/rss-to-telegram-bot/glossary/ar/ Translation: RSS to Telegram Bot/RSS to Telegram Bot Co-authored-by: Biscuittttt <biscuitwithtea.tall310@passinbox.com> * build(deps): Bump multidict from 6.0.5 to 6.1.0 (#525) Bumps [multidict](https://github.com/aio-libs/multidict) from 6.0.5 to 6.1.0. - [Release notes](https://github.com/aio-libs/multidict/releases) - [Changelog](https://github.com/aio-libs/multidict/blob/master/CHANGES.rst) - [Commits](https://github.com/aio-libs/multidict/compare/v6.0.5...v6.1.0) --- updated-dependencies: - dependency-name: multidict dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump yarl from 1.11.0 to 1.11.1 (#526) Bumps [yarl](https://github.com/aio-libs/yarl) from 1.11.0 to 1.11.1. - [Release notes](https://github.com/aio-libs/yarl/releases) - [Changelog](https://github.com/aio-libs/yarl/blob/master/CHANGES.rst) - [Commits](https://github.com/aio-libs/yarl/compare/v1.11.0...v1.11.1) --- updated-dependencies: - dependency-name: yarl dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix(db): canonical `DATABASE_URL` not recognized See also: - https://datatracker.ietf.org/doc/html/rfc1808#section-2.2 - https://datatracker.ietf.org/doc/html/rfc2396#section-3 - https://datatracker.ietf.org/doc/html/rfc3986#section-3 - https://datatracker.ietf.org/doc/html/rfc8089#appendix-B Fixes #528 Signed-off-by: Rongrong <i@rong.moe> * fix(parsing.tgraph): no longer proxies images from `*.wp.com` Signed-off-by: Rongrong <i@rong.moe> * chore(i18n): update l10n for `id` Translated using Weblate (id, Indonesian) Currently translated at 97.4% (192 of 197 strings) chore(i18n): update l10n for `id` Translated using Weblate (id, Indonesian) Currently translated at 94.9% (187 of 197 strings) Co-authored-by: Doctorredits_here <alkaf.alkaf2018@tutamail.com> Translate-URL: https://hosted.weblate.org/projects/rss-to-telegram-bot/glossary/id/ Translation: RSS to Telegram Bot/RSS to Telegram Bot * chore(i18n): update l10n for `be` Translated using Weblate (be, Belarusian) Currently translated at 96.4% (190 of 197 strings) chore(i18n): add l10n for `be` Added translation using Weblate (be, Belarusian) Currently translated at 100.0% (0 of 0 strings) Co-authored-by: Zerynthia Polyxena <paparac.repository@outlook.com> Translate-URL: https://hosted.weblate.org/projects/rss-to-telegram-bot/glossary/be/ Translation: RSS to Telegram Bot/RSS to Telegram Bot * chore(i18n): update l10n for `lv` Translated using Weblate (lv, Latvian) Currently translated at 15.7% (31 of 197 strings) chore(i18n): add l10n for `lv` Added translation using Weblate (lv, Latvian) Currently translated at 100.0% (0 of 0 strings) Co-authored-by: ℂ𝕠𝕠𝕠𝕝 (𝕘𝕚𝕥𝕙𝕦𝕓.𝕔𝕠𝕞/ℂ𝕠𝕠𝕠𝕝) <coool@mail.lv> Translate-URL: https://hosted.weblate.org/projects/rss-to-telegram-bot/glossary/lv/ Translation: RSS to Telegram Bot/RSS to Telegram Bot * chore(i18n): update l10n for `it` Translated using Weblate (it, Italian) Currently translated at 100.0% (197 of 197 strings) Co-authored-by: Manuel Tassi <mannivuwiki@gmail.com> Translate-URL: https://hosted.weblate.org/projects/rss-to-telegram-bot/glossary/it/ Translation: RSS to Telegram Bot/RSS to Telegram Bot * chore(i18n): update l10n for `ca` Translated using Weblate (ca, Catalan) Currently translated at 100.0% (197 of 197 strings) Co-authored-by: raf <rafroset@gmail.com> Translate-URL: https://hosted.weblate.org/projects/rss-to-telegram-bot/glossary/ca/ Translation: RSS to Telegram Bot/RSS to Telegram Bot * chore(i18n): update l10n for `zh-Hant` (#562) Fix typos * build(deps): Bump rapidfuzz from 3.9.7 to 3.10.0 (#533) Bumps [rapidfuzz](https://github.com/rapidfuzz/RapidFuzz) from 3.9.7 to 3.10.0. - [Release notes](https://github.com/rapidfuzz/RapidFuzz/releases) - [Changelog](https://github.com/rapidfuzz/RapidFuzz/blob/main/CHANGELOG.rst) - [Commits](https://github.com/rapidfuzz/RapidFuzz/compare/v3.9.7...v3.10.0) --- updated-dependencies: - dependency-name: rapidfuzz dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump telethon from 1.36.0 to 1.37.0 (#534) Bumps [telethon](https://github.com/LonamiWebs/Telethon) from 1.36.0 to 1.37.0. - [Release notes](https://github.com/LonamiWebs/Telethon/releases) - [Commits](https://github.com/LonamiWebs/Telethon/compare/v1.36.0...v1.37.0) --- updated-dependencies: - dependency-name: telethon dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump isal from 1.7.0 to 1.7.1 (#537) Bumps [isal](https://github.com/pycompression/python-isal) from 1.7.0 to 1.7.1. - [Release notes](https://github.com/pycompression/python-isal/releases) - [Changelog](https://github.com/pycompression/python-isal/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/pycompression/python-isal/compare/v1.7.0...v1.7.1) --- updated-dependencies: - dependency-name: isal dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump python-socks[asyncio] from 2.5.1 to 2.5.3 (#546) Bumps [python-socks[asyncio]](https://github.com/romis2012/python-socks) from 2.5.1 to 2.5.3. - [Release notes](https://github.com/romis2012/python-socks/releases) - [Commits](https://github.com/romis2012/python-socks/compare/v2.5.1...v2.5.3) --- updated-dependencies: - dependency-name: python-socks[asyncio] dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * ci(pre-commit): bump pre-commit-hooks from 4.6.0 to 5.0.0 Signed-off-by: Rongrong <i@rong.moe> * build(deps): Bump tortoise-orm[accel] from 0.21.6 to 0.21.7 (#554) Bumps [tortoise-orm[accel]](https://github.com/tortoise/tortoise-orm) from 0.21.6 to 0.21.7. - [Release notes](https://github.com/tortoise/tortoise-orm/releases) - [Changelog](https://github.com/tortoise/tortoise-orm/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/tortoise/tortoise-orm/compare/0.21.6...0.21.7) --- updated-dependencies: - dependency-name: tortoise-orm[accel] dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump yarl from 1.11.1 to 1.16.0 (#561) Bumps [yarl](https://github.com/aio-libs/yarl) from 1.11.1 to 1.16.0. - [Release notes](https://github.com/aio-libs/yarl/releases) - [Changelog](https://github.com/aio-libs/yarl/blob/master/CHANGES.rst) - [Commits](https://github.com/aio-libs/yarl/compare/v1.11.1...v1.16.0) --- updated-dependencies: - dependency-name: yarl dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump emoji from 2.12.1 to 2.14.0 (#544) Bumps [emoji](https://github.com/carpedm20/emoji) from 2.12.1 to 2.14.0. - [Release notes](https://github.com/carpedm20/emoji/releases) - [Changelog](https://github.com/carpedm20/emoji/blob/master/CHANGES.md) - [Commits](https://github.com/carpedm20/emoji/compare/v2.12.1...v2.14.0) --- updated-dependencies: - dependency-name: emoji dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump uvloop from 0.20.0 to 0.21.0 (#555) Bumps [uvloop](https://github.com/MagicStack/uvloop) from 0.20.0 to 0.21.0. - [Release notes](https://github.com/MagicStack/uvloop/releases) - [Commits](https://github.com/MagicStack/uvloop/compare/v0.20.0...v0.21.0) --- updated-dependencies: - dependency-name: uvloop dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump asyncpg from 0.29.0 to 0.30.0 (#560) Bumps [asyncpg](https://github.com/MagicStack/asyncpg) from 0.29.0 to 0.30.0. - [Release notes](https://github.com/MagicStack/asyncpg/releases) - [Commits](https://github.com/MagicStack/asyncpg/compare/v0.29.0...v0.30.0) --- updated-dependencies: - dependency-name: asyncpg dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump dnspython[idna] from 2.6.1 to 2.7.0 (#547) Bumps [dnspython[idna]](https://github.com/rthalley/dnspython) from 2.6.1 to 2.7.0. - [Release notes](https://github.com/rthalley/dnspython/releases) - [Changelog](https://github.com/rthalley/dnspython/blob/main/doc/whatsnew.rst) - [Commits](https://github.com/rthalley/dnspython/compare/v2.6.1...v2.7.0) --- updated-dependencies: - dependency-name: dnspython[idna] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump pillow from 10.4.0 to 11.0.0 (#557) Bumps [pillow](https://github.com/python-pillow/Pillow) from 10.4.0 to 11.0.0. - [Release notes](https://github.com/python-pillow/Pillow/releases) - [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst) - [Commits](https://github.com/python-pillow/Pillow/compare/10.4.0...11.0.0) --- updated-dependencies: - dependency-name: pillow dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump aiohttp[speedups] from 3.10.5 to 3.10.10 (#551) Bumps [aiohttp[speedups]](https://github.com/aio-libs/aiohttp) from 3.10.5 to 3.10.10. - [Release notes](https://github.com/aio-libs/aiohttp/releases) - [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst) - [Commits](https://github.com/aio-libs/aiohttp/compare/v3.10.5...v3.10.10) --- updated-dependencies: - dependency-name: aiohttp[speedups] dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(i18n): sync l10n strings among identical keys Signed-off-by: Rongrong <i@rong.moe> * build(deps): Bump cryptg from 0.4.0 to 0.5.0.post0 (#564) Bumps [cryptg](https://github.com/cher-nov/cryptg) from 0.4.0 to 0.5.0.post0. - [Release notes](https://github.com/cher-nov/cryptg/releases) - [Commits](https://github.com/cher-nov/cryptg/compare/v0.4...v0.5.post0) --- updated-dependencies: - dependency-name: cryptg dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(env): include repo link in the default UA Signed-off-by: Rongrong <i@rong.moe> * build(deps): Bump asyncstdlib from 3.12.5 to 3.13.0 (#565) Bumps [asyncstdlib](https://github.com/maxfischer2781/asyncstdlib) from 3.12.5 to 3.13.0. - [Release notes](https://github.com/maxfischer2781/asyncstdlib/releases) - [Commits](https://github.com/maxfischer2781/asyncstdlib/compare/v3.12.5...v3.13.0) --- updated-dependencies: - dependency-name: asyncstdlib dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump rapidfuzz from 3.10.0 to 3.10.1 (#567) Bumps [rapidfuzz](https://github.com/rapidfuzz/RapidFuzz) from 3.10.0 to 3.10.1. - [Release notes](https://github.com/rapidfuzz/RapidFuzz/releases) - [Changelog](https://github.com/rapidfuzz/RapidFuzz/blob/main/CHANGELOG.rst) - [Commits](https://github.com/rapidfuzz/RapidFuzz/compare/v3.10.0...v3.10.1) --- updated-dependencies: - dependency-name: rapidfuzz dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * perf(monitor): avoid calling datetime.now() multiple times Signed-off-by: Rongrong <i@rong.moe> * perf(web.utils): WebResponse: adopt propcache.cached_property Signed-off-by: Rongrong <i@rong.moe> * feat(web.utils): WebResponse: improve expiration calculation Signed-off-by: Rongrong <i@rong.moe> * feat(monitor): use exponential delay for feed.next_check_time on error Signed-off-by: Rongrong <i@rong.moe> * refactor: move calc_next_check_as_per_server_side_cache into web.WebFeed Signed-off-by: Rongrong <i@rong.moe> * fix(`/sub`): monitoring not deferred as per server-side cache Since d6aa15ce, monitoring tasks will be deferred when aggressive server-side caches (e.g., Cloudflare and RSSHub, which make it futile to check for updates before cache expiration) are detected. However, the first monitoring task for a newly subscribed feed was not being deferred. This has been fixed and the first monitoring task now waits for the server-side cache to expire. Signed-off-by: Rongrong <i@rong.moe> * build(deps): Bump colorlog from 6.8.2 to 6.9.0 (#570) Bumps [colorlog](https://github.com/borntyping/python-colorlog) from 6.8.2 to 6.9.0. - [Release notes](https://github.com/borntyping/python-colorlog/releases) - [Commits](https://github.com/borntyping/python-colorlog/compare/v6.8.2...v6.9.0) --- updated-dependencies: - dependency-name: colorlog dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump yarl from 1.16.0 to 1.17.1 (#571) Bumps [yarl](https://github.com/aio-libs/yarl) from 1.16.0 to 1.17.1. - [Release notes](https://github.com/aio-libs/yarl/releases) - [Changelog](https://github.com/aio-libs/yarl/blob/master/CHANGES.rst) - [Commits](https://github.com/aio-libs/yarl/compare/v1.16.0...v1.17.1) --- updated-dependencies: - dependency-name: yarl dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix(web.utils): WebFeed: TypeError Signed-off-by: Rongrong <i@rong.moe> * perf: use itertools.chain.from_iterable() instead of unpacking Signed-off-by: Rongrong <i@rong.moe> * perf(parsing.utils): utilize ranged sets ([x-y]) in re patterns Signed-off-by: Rongrong <i@rong.moe> * fix(parsing.utils): hashtag-breaking '・' not escaped Signed-off-by: Rongrong <i@rong.moe> * feat(parsing.utils): support chat-specific hashtags by allowing '@' Telegram recently added a feature called "chat-specific hashtags," formatting as `#hashtag@username`. However, '@' was escaped, resulting in these hashtags being broken. Properly supports such hashtags by allowing '@' in hashtags. Signed-off-by: Rongrong <i@rong.moe> * fix(command.utils): typo in log messages Signed-off-by: Rongrong <i@rong.moe> * chore(i18n): update l10n for `uk` Translated using Weblate (uk, Ukrainian) Currently translated at 100.0% (197 of 197 strings) Co-authored-by: Максим Горпиніч <mgorpinic2005@gmail.com> Translate-URL: https://hosted.weblate.org/projects/rss-to-telegram-bot/glossary/uk/ Translation: RSS to Telegram Bot/RSS to Telegram Bot * chore(i18n): update l10n for `de` Translated using Weblate (de, German) Currently translated at 100.0% (197 of 197 strings) Co-authored-by: floriegl <floriegl@live.at> Translate-URL: https://hosted.weblate.org/projects/rss-to-telegram-bot/glossary/de/ Translation: RSS to Telegram Bot/RSS to Telegram Bot * refactor(parsing.utils): parse_entry: improve readability Signed-off-by: Rongrong <i@rong.moe> * feat(parsing.utils): parse_entry: improve <media:thumbnail> support Fixes #597 Signed-off-by: Rongrong <i@rong.moe> * build(deps): Bump aiohttp-retry from 2.8.3 to 2.9.1 (#573) Bumps [aiohttp-retry](https://github.com/inyutin/aiohttp_retry) from 2.8.3 to 2.9.1. - [Release notes](https://github.com/inyutin/aiohttp_retry/releases) - [Commits](https://github.com/inyutin/aiohttp_retry/compare/v2.8.3...v2.9.1) --- updated-dependencies: - dependency-name: aiohttp-retry dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * docs(CHANGELOG): add missing changes Signed-off-by: Rongrong <i@rong.moe> * build(deps): Bump telethon from 1.37.0 to 1.38.1 (#581) Bumps [telethon](https://github.com/LonamiWebs/Telethon) from 1.37.0 to 1.38.1. - [Release notes](https://github.com/LonamiWebs/Telethon/releases) - [Commits](https://github.com/LonamiWebs/Telethon/commits) --- updated-dependencies: - dependency-name: telethon dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump apscheduler from 3.10.4 to 3.11.0 (#587) Bumps [apscheduler](https://github.com/agronholm/apscheduler) from 3.10.4 to 3.11.0. - [Release notes](https://github.com/agronholm/apscheduler/releases) - [Changelog](https://github.com/agronholm/apscheduler/blob/3.11.0/docs/versionhistory.rst) - [Commits](https://github.com/agronholm/apscheduler/compare/3.10.4...3.11.0) --- updated-dependencies: - dependency-name: apscheduler dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump matplotlib from 3.9.2 to 3.9.3 (#590) Bumps [matplotlib](https://github.com/matplotlib/matplotlib) from 3.9.2 to 3.9.3. - [Release notes](https://github.com/matplotlib/matplotlib/releases) - [Commits](https://github.com/matplotlib/matplotlib/compare/v3.9.2...v3.9.3) --- updated-dependencies: - dependency-name: matplotlib dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump tortoise-orm[accel] from 0.21.7 to 0.22.2 (#596) Bumps [tortoise-orm[accel]](https://github.com/tortoise/tortoise-orm) from 0.21.7 to 0.22.2. - [Release notes](https://github.com/tortoise/tortoise-orm/releases) - [Changelog](https://github.com/tortoise/tortoise-orm/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/tortoise/tortoise-orm/compare/0.21.7...0.22.2) --- updated-dependencies: - dependency-name: tortoise-orm[accel] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump aiohttp-socks from 0.9.0 to 0.9.1 (#584) Bumps [aiohttp-socks](https://github.com/romis2012/aiohttp-socks) from 0.9.0 to 0.9.1. - [Release notes](https://github.com/romis2012/aiohttp-socks/releases) - [Commits](https://github.com/romis2012/aiohttp-socks/compare/v0.9.0...v0.9.1) --- updated-dependencies: - dependency-name: aiohttp-socks dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump propcache from 0.2.0 to 0.2.1 (#591) Bumps [propcache](https://github.com/aio-libs/propcache) from 0.2.0 to 0.2.1. - [Release notes](https://github.com/aio-libs/propcache/releases) - [Changelog](https://github.com/aio-libs/propcache/blob/master/CHANGES.rst) - [Commits](https://github.com/aio-libs/propcache/compare/v0.2.0...v0.2.1) --- updated-dependencies: - dependency-name: propcache dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump aerich from 0.7.2 to 0.8.0 (#594) Bumps [aerich](https://github.com/tortoise/aerich) from 0.7.2 to 0.8.0. - [Release notes](https://github.com/tortoise/aerich/releases) - [Changelog](https://github.com/tortoise/aerich/blob/dev/CHANGELOG.md) - [Commits](https://github.com/tortoise/aerich/compare/v0.7.2...v0.8.0) --- updated-dependencies: - dependency-name: aerich dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump aiohttp[speedups] from 3.10.10 to 3.11.10 (#595) Bumps [aiohttp[speedups]](https://github.com/aio-libs/aiohttp) from 3.10.10 to 3.11.10. - [Release notes](https://github.com/aio-libs/aiohttp/releases) - [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst) - [Commits](https://github.com/aio-libs/aiohttp/compare/v3.10.10...v3.11.10) --- updated-dependencies: - dependency-name: aiohttp[speedups] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump yarl from 1.17.1 to 1.18.3 (#593) Bumps [yarl](https://github.com/aio-libs/yarl) from 1.17.1 to 1.18.3. - [Release notes](https://github.com/aio-libs/yarl/releases) - [Changelog](https://github.com/aio-libs/yarl/blob/master/CHANGES.rst) - [Commits](https://github.com/aio-libs/yarl/compare/v1.17.1...v1.18.3) --- updated-dependencies: - dependency-name: yarl dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * refactor: replace deprecated datetime.utcnow() Signed-off-by: Rongrong <i@rong.moe> * feat(parsing.medium): add quirk for img.alicdn.com See #600 for more details. Signed-off-by: Rongrong <i@rong.moe> * build(deps): Bump rapidfuzz from 3.10.1 to 3.11.0 (#599) Bumps [rapidfuzz](https://github.com/rapidfuzz/RapidFuzz) from 3.10.1 to 3.11.0. - [Release notes](https://github.com/rapidfuzz/RapidFuzz/releases) - [Changelog](https://github.com/rapidfuzz/RapidFuzz/blob/main/CHANGELOG.rst) - [Commits](https://github.com/rapidfuzz/RapidFuzz/compare/v3.10.1...v3.11.0) --- updated-dependencies: - dependency-name: rapidfuzz dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump aiohttp[speedups] from 3.11.10 to 3.11.11 (#601) Bumps [aiohttp[speedups]](https://github.com/aio-libs/aiohttp) from 3.11.10 to 3.11.11. - [Release notes](https://github.com/aio-libs/aiohttp/releases) - [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst) - [Commits](https://github.com/aio-libs/aiohttp/compare/v3.11.10...v3.11.11) --- updated-dependencies: - dependency-name: aiohttp[speedups] dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * feat(parsing.utils): add JSON Feed support feedparser@develop has added support for JSON Feed before. However, entry.content maybe a bare dict this time, unlike Atom that use an array (list) of dicts. Add JSON Feed support by adding a case that deals with such behavior. With this patch and feedparser from its develop branch, we can finally gain the support for JSON Feed. See also #273. Signed-off-by: Rongrong <i@rong.moe> * fix(web.utils): YummyCookieJar: catch up with aiohttp 3.11.11 Fixes: b463cad5 Signed-off-by: Rongrong <i@rong.moe> * refactor(parsing.spliter): improve readability Signed-off-by: Rongrong <i@rong.moe> * fix(parsing.spliter): prevent splitter from being stuck This is only a quick hotfix, which identifies the situation and raises an error to rescue the bot from being stuck. The final fix is awaiting a rewrite of the splitter. Signed-off-by: Rongrong <i@rong.moe> * build(deps): Bump aiohttp-socks from 0.9.1 to 0.10.1 (#605) Bumps [aiohttp-socks](https://github.com/romis2012/aiohttp-socks) from 0.9.1 to 0.10.1. - [Release notes](https://github.com/romis2012/aiohttp-socks/releases) - [Commits](https://github.com/romis2012/aiohttp-socks/compare/v0.9.1...v0.10.1) --- updated-dependencies: - dependency-name: aiohttp-socks dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump aerich from 0.8.0 to 0.8.1 (#608) Bumps [aerich](https://github.com/tortoise/aerich) from 0.8.0 to 0.8.1. - [Release notes](https://github.com/tortoise/aerich/releases) - [Changelog](https://github.com/tortoise/aerich/blob/dev/CHANGELOG.md) - [Commits](https://github.com/tortoise/aerich/compare/v0.8.0...v0.8.1) --- updated-dependencies: - dependency-name: aerich dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump emoji from 2.14.0 to 2.14.1 (#610) Bumps [emoji](https://github.com/carpedm20/emoji) from 2.14.0 to 2.14.1. - [Release notes](https://github.com/carpedm20/emoji/releases) - [Changelog](https://github.com/carpedm20/emoji/blob/master/CHANGES.md) - [Commits](https://github.com/carpedm20/emoji/compare/v2.14.0...v2.14.1) --- updated-dependencies: - dependency-name: emoji dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump cachetools from 5.5.0 to 5.5.1 (#612) Bumps [cachetools](https://github.com/tkem/cachetools) from 5.5.0 to 5.5.1. - [Changelog](https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst) - [Commits](https://github.com/tkem/cachetools/compare/v5.5.0...v5.5.1) --- updated-dependencies: - dependency-name: cachetools dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump pillow from 11.0.0 to 11.1.0 (#609) Bumps [pillow](https://github.com/python-pillow/Pillow) from 11.0.0 to 11.1.0. - [Release notes](https://github.com/python-pillow/Pillow/releases) - [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst) - [Commits](https://github.com/python-pillow/Pillow/compare/11.0.0...11.1.0) --- updated-dependencies: - dependency-name: pillow dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump python-socks[asyncio] from 2.5.3 to 2.7.1 (#617) Bumps [python-socks[asyncio]](https://github.com/romis2012/python-socks) from 2.5.3 to 2.7.1. - [Release notes](https://github.com/romis2012/python-socks/releases) - [Commits](https://github.com/romis2012/python-socks/compare/v2.5.3...v2.7.1) --- updated-dependencies: - dependency-name: python-socks[asyncio] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump aiohttp[speedups] from 3.11.11 to 3.11.12 (#620) --- updated-dependencies: - dependency-name: aiohttp[speedups] dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump tortoise-orm[accel] from 0.22.2 to 0.24.0 (#613) Bumps [tortoise-orm[accel]](https://github.com/tortoise/tortoise-orm) from 0.22.2 to 0.24.0. - [Release notes](https://github.com/tortoise/tortoise-orm/releases) - [Changelog](https://github.com/tortoise/tortoise-orm/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/tortoise/tortoise-orm/compare/0.22.2...0.24.0) --- updated-dependencies: - dependency-name: tortoise-orm[accel] dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump rapidfuzz from 3.11.0 to 3.12.1 (#615) Bumps [rapidfuzz](https://github.com/rapidfuzz/RapidFuzz) from 3.11.0 to 3.12.1. - [Release notes](https://github.com/rapidfuzz/RapidFuzz/releases) - [Changelog](https://github.com/rapidfuzz/RapidFuzz/blob/main/CHANGELOG.rst) - [Commits](https://github.com/rapidfuzz/RapidFuzz/compare/v3.11.0...v3.12.1) --- updated-dependencies: - dependency-name: rapidfuzz dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump lxml from 5.3.0 to 5.3.1 (#621) Bumps [lxml](https://github.com/lxml/lxml) from 5.3.0 to 5.3.1. - [Release notes](https://github.com/lxml/lxml/releases) - [Changelog](https://github.com/lxml/lxml/blob/master/CHANGES.txt) - [Commits](https://github.com/lxml/lxml/compare/lxml-5.3.0...lxml-5.3.1) --- updated-dependencies: - dependency-name: lxml dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump cachetools from 5.5.1 to 5.5.2 (#622) Bumps [cachetools](https://github.com/tkem/cachetools) from 5.5.1 to 5.5.2. - [Changelog](https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst) - [Commits](https://github.com/tkem/cachetools/compare/v5.5.1...v5.5.2) --- updated-dependencies: - dependency-name: cachetools dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump propcache from 0.2.1 to 0.3.0 (#623) Bumps [propcache](https://github.com/aio-libs/propcache) from 0.2.1 to 0.3.0. - [Release notes](https://github.com/aio-libs/propcache/releases) - [Changelog](https://github.com/aio-libs/propcache/blob/master/CHANGES.rst) - [Commits](https://github.com/aio-libs/propcache/compare/v0.2.1...v0.3.0) --- updated-dependencies: - dependency-name: propcache dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump telethon from 1.38.1 to 1.39.0 (#624) Bumps [telethon](https://github.com/LonamiWebs/Telethon) from 1.38.1 to 1.39.0. - [Release notes](https://github.com/LonamiWebs/Telethon/releases) - [Commits](https://github.com/LonamiWebs/Telethon/commits) --- updated-dependencies: - dependency-name: telethon dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(i18n): update l10n for `it` Translated using Weblate (it, Italian) Currently translated at 100.0% (197 of 197 strings) Co-authored-by: Manuel Tassi <mannivuwiki@gmail.com> Co-authored-by: Hosted Weblate <hosted@weblate.org> Translate-URL: https://hosted.weblate.org/projects/rss-to-telegram-bot/glossary/it/ Translation: RSS to Telegram Bot/RSS to Telegram Bot * chore(i18n): update l10n for `pl` Translated using Weblate (pl, Polish) Currently translated at 58.3% (115 of 197 strings) Co-authored-by: Marcin Pająk <marcin.spajder@gmail.com> Co-authored-by: Hosted Weblate <hosted@weblate.org> Translate-URL: https://hosted.weblate.org/projects/rss-to-telegram-bot/glossary/pl/ Translation: RSS to Telegram Bot/RSS to Telegram Bot * chore(i18n): update l10n for `pl` Translated using Weblate (pl, Polish) Currently translated at 70.0% (138 of 197 strings) Co-authored-by: Piotr Strebski <strebski@gmail.com> Co-authored-by: Hosted Weblate <hosted@weblate.org> Translate-URL: https://hosted.weblate.org/projects/rss-to-telegram-bot/glossary/pl/ Translation: RSS to Telegram Bot/RSS to Telegram Bot * build(deps): Bump tortoise-orm[accel] from 0.24.0 to 0.24.1 (#627) Bumps [tortoise-orm[accel]](https://github.com/tortoise/tortoise-orm) from 0.24.0 to 0.24.1. - [Release notes](https://github.com/tortoise/tortoise-orm/releases) - [Changelog](https://github.com/tortoise/tortoise-orm/blob/develop/CHANGELOG.rst) - [Commits](https://github.com/tortoise/tortoise-orm/compare/0.24.0...0.24.1) --- updated-dependencies: - dependency-name: tortoise-orm[accel] dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump matplotlib from 3.9.3 to 3.9.4 (#629) Bumps [matplotlib](https://github.com/matplotlib/matplotlib) from 3.9.3 to 3.9.4. - [Release notes](https://github.com/matplotlib/matplotlib/releases) - [Commits](https://github.com/matplotlib/matplotlib/compare/v3.9.3...v3.9.4) --- updated-dependencies: - dependency-name: matplotlib dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * build(deps): Bump aiohttp[speedups] from 3.11.12 to 3.11.13 (#628) --- updated-dependencies: - dependency-name: aiohttp[speedups] dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix(monitor): incompatible callback signature Signed-off-by: Rongrong <i@rong.moe> * build(deps): Bump rapidfuzz from 3.12.1 to 3.12.2 (#632) Bumps [rapidfuzz](https://github.com/rapidfuzz/RapidFuzz) from 3.12.1 to 3.12.2. - [Release notes](https://github.com/rapidfuzz/RapidFuzz/releases) - [Changelog](https://github.com/rapidfuzz/RapidFuzz/blob/main/CHANGELOG.rst) - [Commits](https://github.com/rapidfuzz/RapidFuzz/compare/v3.12.1...v3.12.2) --- updated-dependencies: - dependency-name: rapidfuzz dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.git…
1 parent 8d47326 commit 81cdb62

File tree

160 files changed

+9743
-3709
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

160 files changed

+9743
-3709
lines changed

.devcontainer/devcontainer.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"image": "mcr.microsoft.com/devcontainers/python:3.12-bookworm",
3+
"onCreateCommand": {
4+
"install-python-packages": "pip install -r requirements.txt"
5+
}
6+
}

.env.sample

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
TOKEN=1234567890:A1BCd2EF3gH45IJK6lMN7oPqr8ST9UvWX0Yz0 # get it from @BotFather
2-
MANAGER=1234567890 # get it from @userinfobot
2+
MANAGER=1234567890 # get it from @userinfobot, can be a list (e.g., 1234567890;987654321)
33

44
# ↓------ To disable sending via Telegraph, comment out this area ------↓ #
55
# Get Telegraph API access tokens: https://api.telegra.ph/createAccount?short_name=RSStT&author_name=Generated%20by%20RSStT&author_url=https%3A%2F%2Fgithub.com%2FRongronggg9%2FRSS-to-Telegram-Bot
@@ -17,15 +17,17 @@ TELEGRAPH_TOKEN="
1717

1818
# Please read https://github.com/Rongronggg9/RSS-to-Telegram-Bot/blob/master/docs/advanced-settings.md for more details.
1919
# ↓------ Advanced settings ------↓ #
20+
#ERROR_LOGGING_CHAT=-1001234567890 # default: the first MANAGER
2021
#MULTIUSER=0 # default: 1
2122
#CRON_SECOND=30 # 0-59, default: 0
22-
#DATABASE_URL=postgres://username:password@host:port/db_name # default: sqlite://path/to/config/db.sqlite3
23+
#DATABASE_URL=postgres://username:password@host:port/db_name # default: sqlite:/path/to/config/db.sqlite3
2324
#API_ID=1025907 # get it from https://core.telegram.org/api/obtaining_api_id
2425
#API_HASH=452b0359b988148995f22ff0f4229750 # get it from https://core.telegram.org/api/obtaining_api_id
2526
#IMG_RELAY_SERVER=https://wsrv.nl/?url= # default: https://rsstt-img-relay.rongrong.workers.dev/
2627
#IMAGES_WESERV_NL=https://t0.nl/ # default: https://wsrv.nl/
27-
#USER_AGENT=Mozilla/5.0 (Android 12; Mobile; rv:68.0) Gecko/68.0 Firefox/96.0 # default: RSStT/2.2 RSS Reader
28+
#USER_AGENT=Mozilla/5.0 # default: RSStT/* RSS Reader (+https://git.io/RSStT)
2829
#IPV6_PRIOR=1 # default: 0
30+
#VERIFY_TLS=0 # default: 1
2931
#T_PROXY=socks5://172.17.0.1:1080 # Proxy used to connect to the Telegram API
3032
#R_PROXY=socks5://172.17.0.1:1080 # Proxy used to fetch feeds
3133
#PROXY_BYPASS_PRIVATE=1 # default: 0
@@ -39,5 +41,6 @@ TELEGRAPH_TOKEN="
3941
#MANAGER_PRIVILEGED=1 # default: 0
4042
#NO_UVLOOP=1 # default: 0
4143
#MULTIPROCESSING=1 # default: 0
44+
#EXECUTOR_NICENESS_INCREMENT=5 # default: 2
4245
#DEBUG=1 # debug logging, default: 0
4346
# ↑------ Advanced settings ------↑ #

.github/FUNDING.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
github: Rongronggg9
44
patreon: rongbot
55
open_collective: # Replace with a single Open Collective username
6-
ko_fi: # Replace with a single Ko-fi username
6+
ko_fi: rongbot
77
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
88
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
99
liberapay: # Replace with a single Liberapay username

.github/ISSUE_TEMPLATE/bug_report.md

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,38 @@ assignees: ''
77

88
---
99

10-
**Describe the bug**
11-
A clear and concise description of what the bug is.
10+
## Describe the bug
11+
> [!TIP]<!--- Remove this blockquote before submitting -->\
12+
> A clear and concise description of what the bug is.
1213
13-
**To Reproduce**
14-
Steps to reproduce the behavior:
14+
## To Reproduce
15+
> [!TIP]<!--- Remove this blockquote before submitting -->\
16+
> Steps to reproduce the behavior.
1517
1. Go to '...'
16-
2. Click on '....'
17-
3. Scroll down to '....'
18+
2. Click on '...'
19+
3. Scroll down to '...'
1820
4. See error
1921

20-
**Expected behavior**
21-
A clear and concise description of what you expected to happen.
22+
## Screenshots
23+
> [!TIP]<!--- Remove this blockquote before submitting -->\
24+
> If applicable, upload screenshots to help explain your problem.
2225
23-
**Important log**
24-
You may execute `docker logs [container name]` to get log.
25-
Choose that is important and paste it here.
26+
## Feed URL
27+
> [!TIP]<!--- Remove this blockquote before submitting -->\
28+
> If applicable, provide the feed URL that causes the bug.
29+
30+
## Expected behavior
31+
> [!TIP]<!--- Remove this blockquote before submitting -->\
32+
> A clear and concise description of what you expected to happen.
33+
34+
## Important log
35+
> [!IMPORTANT]<!--- Remove this blockquote before submitting -->\
36+
> Rerun RSStT with `DEBUG=1` set in the environment variables, and paste the log below.
37+
> If you are using Docker, you can get the log by executing:
38+
> ```sh
39+
> docker logs <container name>
40+
> ```
41+
42+
```
43+
PASTE LOG HERE
44+
```

.github/workflows/codeql.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,15 @@ jobs:
2727
uses: actions/checkout@v4
2828

2929
- name: Initialize CodeQL
30-
uses: github/codeql-action/init@v2
30+
uses: github/codeql-action/init@v3
3131
with:
3232
languages: ${{ matrix.language }}
3333
queries: +security-and-quality
3434

3535
- name: Autobuild
36-
uses: github/codeql-action/autobuild@v2
36+
uses: github/codeql-action/autobuild@v3
3737

3838
- name: Perform CodeQL Analysis
39-
uses: github/codeql-action/analyze@v2
39+
uses: github/codeql-action/analyze@v3
4040
with:
4141
category: "/language:${{ matrix.language }}"

.github/workflows/pr-test-docker-build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ jobs:
2424
id: buildx
2525
uses: docker/setup-buildx-action@v3
2626
- name: Test Docker build
27-
uses: docker/build-push-action@v5
27+
uses: docker/build-push-action@v6
2828
with:
2929
push: false
3030
context: .

.github/workflows/publish-docker-image.yml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ jobs:
4242
type=pep440,pattern={{major}}
4343
type=raw,value=latest,enable=${{ endsWith(github.ref, 'master') }}
4444
- name: Push to Docker Hub
45-
uses: docker/build-push-action@v5
45+
uses: docker/build-push-action@v6
4646
with:
4747
push: true
4848
context: .
@@ -52,33 +52,33 @@ jobs:
5252
cache-from: type=gha,scope=docker-release
5353
cache-to: type=gha,scope=docker-release,mode=max
5454
- name: Set Docker meta (exp-deps)
55-
if: ${{ endsWith(github.ref, 'dev') }}
56-
id: meta-fpe
55+
if: ${{ startsWith(github.ref, 'refs/heads') && github.ref_name != 'master' }}
56+
id: meta-exp
5757
uses: docker/metadata-action@v5
5858
with:
5959
images: ${{ secrets.DOCKER_USERNAME }}/rss-to-telegram
6060
flavor: latest=false
61-
tags: type=raw,value=exp-deps,enable=true
61+
tags: type=raw,value=${{ github.ref_name != 'dev' && format('{0}-', github.ref_name) || '' }}exp-deps,enable=true
6262
- name: Push to Docker Hub (exp-deps)
63-
if: ${{ endsWith(github.ref, 'dev') }}
64-
uses: docker/build-push-action@v5
63+
if: ${{ startsWith(github.ref, 'refs/heads') && github.ref_name != 'master' }}
64+
uses: docker/build-push-action@v6
6565
with:
6666
push: true
6767
context: .
6868
build-args: EXP_DEPS=1
6969
platforms: linux/amd64,linux/arm64
70-
tags: ${{ steps.meta-fpe.outputs.tags }}
71-
labels: ${{ steps.meta-fpe.outputs.labels }}
72-
cache-from: type=registry,ref=${{ secrets.DOCKER_USERNAME }}/rss-to-telegram:exp-deps
73-
cache-to: type=inline,ref=${{ secrets.DOCKER_USERNAME }}/rss-to-telegram:exp-deps
70+
tags: ${{ steps.meta-exp.outputs.tags }}
71+
labels: ${{ steps.meta-exp.outputs.labels }}
72+
cache-from: type=registry,ref=${{ steps.meta-exp.outputs.tags }} # only one tag, safe to use
73+
cache-to: type=inline
7474

7575
description:
7676
name: Update repository description on Docker Hub
7777
runs-on: ubuntu-latest
7878
steps:
7979
- uses: actions/checkout@v4
8080
- name: Update Docker Hub description
81-
uses: peter-evans/dockerhub-description@v3
81+
uses: peter-evans/dockerhub-description@v4
8282
with:
8383
username: ${{ secrets.DOCKER_USERNAME }}
8484
password: ${{ secrets.DOCKER_PASSWORD }}

.github/workflows/publish-to-pypi.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ jobs:
1010
runs-on: ubuntu-latest
1111
steps:
1212
- uses: actions/checkout@v4
13-
- name: Set up Python 3.11
14-
uses: actions/setup-python@v4
13+
- name: Set up Python 3.12
14+
uses: actions/setup-python@v5
1515
with:
16-
python-version: 3.11
16+
python-version: 3.12
1717
- name: Install pypa/build
1818
run: |
1919
python -m pip install build --user

.github/workflows/publish-to-test-pypi.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ jobs:
1616
- uses: actions/checkout@v4
1717
with:
1818
fetch-depth: 0
19-
- name: Set up Python 3.11
20-
uses: actions/setup-python@v4
19+
- name: Set up Python 3.12
20+
uses: actions/setup-python@v5
2121
with:
22-
python-version: 3.11
22+
python-version: 3.12
2323
- name: Install pypa/build
2424
run: |
2525
python -m pip install build --user

.github/workflows/rough-test.yml

Lines changed: 96 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
strategy:
1212
fail-fast: false
1313
matrix:
14-
version: [ '3.9', '3.10', '3.11' ]
14+
version: [ '3.9', '3.10', '3.11', '3.12' ]
1515
os: [ ubuntu-latest, macos-latest, windows-latest ]
1616
name: Python ${{ matrix.version }} on ${{ matrix.os }}
1717
runs-on: ${{ matrix.os }}
@@ -21,20 +21,105 @@ jobs:
2121
with:
2222
fetch-depth: 0
2323
- name: Set up Python ${{ matrix.version }}
24-
uses: actions/setup-python@v4
24+
uses: actions/setup-python@v5
2525
with:
2626
python-version: ${{ matrix.version }}
2727
cache: 'pip'
2828
- name: Install dependencies
29+
shell: bash
2930
run: |
30-
pip install --upgrade pip wheel setuptools
31+
set -eux
32+
python -m pip install --upgrade pip wheel setuptools
3133
pip install -r requirements.txt
32-
- name: Test
33-
run: |
34-
echo 'TOKEN=test' > .env
35-
echo 'MANAGER=-1' >> .env
36-
echo 'DEBUG=1' >> .env
37-
echo 'PORT=60088' >> .env
38-
echo 'TABLE_TO_IMAGE=1' >> .env
39-
echo 'MULTIPROCESSING=1' >> .env
34+
- name: Setup PostgreSQL
35+
if: matrix.os == 'ubuntu-latest'
36+
shell: bash
37+
run: |
38+
set -eux
39+
sudo apt-get -yq update
40+
sudo apt-get -yq install postgresql
41+
sudo systemctl start postgresql
42+
sudo -u postgres psql -c "CREATE USER test WITH PASSWORD 'test';"
43+
sudo -u postgres psql -c "CREATE DATABASE test OWNER test;"
44+
- name: Prepare environment
45+
shell: bash
46+
run: |
47+
set -eux
48+
echo 'TOKEN=test' > .env_sqlite
49+
echo 'MANAGER=-1' >> .env_sqlite
50+
echo 'DEBUG=1' >> .env_sqlite
51+
echo "PORT=$((RANDOM + 16384))" >> .env_sqlite
52+
echo 'TABLE_TO_IMAGE=1' >> .env_sqlite
53+
echo 'MULTIPROCESSING=1' >> .env_sqlite
54+
cp .env_sqlite .env_postgresql
55+
echo 'DATABASE_URL=postgres://test:test@localhost:5432/test' >> .env_postgresql
56+
ln -s src rsstt
57+
- name: Test RSS-to-Telegram-Bot (SQLite)
58+
shell: bash
59+
run: |
60+
set -eux
61+
cp .env_sqlite .env
62+
python3 -u telegramRSSbot.py
63+
- name: Test RSS-to-Telegram-Bot as a Python package (SQLite)
64+
shell: bash
65+
run: |
66+
set -eux
67+
python3 -m rsstt
68+
- name: Test RSS-to-Telegram-Bot (PostgreSQL)
69+
if: matrix.os == 'ubuntu-latest'
70+
shell: bash
71+
run: |
72+
set -eux
73+
cp .env_postgresql .env
74+
python3 -u telegramRSSbot.py
75+
- name: Test RSS-to-Telegram-Bot as a Python package (PostgreSQL)
76+
if: matrix.os == 'ubuntu-latest'
77+
shell: bash
78+
run: |
79+
set -eux
80+
python3 -m rsstt
81+
- name: Test scripts/aerich_helper.py (SQLite)
82+
shell: bash
83+
run: |
84+
set -eux
85+
./scripts/aerich_helper.py -h
86+
./scripts/aerich_helper.py -v history
87+
./scripts/aerich_helper.py -v heads
88+
./scripts/aerich_helper.py -v upgrade True
89+
- name: Test scripts/aerich_helper.py (PostgreSQL)
90+
if: matrix.os == 'ubuntu-latest'
91+
shell: bash
92+
run: |
93+
set -eux
94+
. .env_postgresql
95+
./scripts/aerich_helper.py -v -u "$DATABASE_URL" history
96+
./scripts/aerich_helper.py -v -u "$DATABASE_URL" heads
97+
./scripts/aerich_helper.py -v -u "$DATABASE_URL" upgrade True
98+
- name: Test aerich migration upgrade (SQLite)
99+
shell: bash
100+
run: |
101+
set -eux
102+
rm -rf config
103+
cp .env_sqlite .env
104+
CURR_REF="$(git rev-parse HEAD)"
105+
git checkout stale/aerich-0.6
106+
pip install -qr requirements.txt
107+
python3 -u telegramRSSbot.py
108+
git checkout "$CURR_REF"
109+
pip install -qr requirements.txt
110+
python3 -u telegramRSSbot.py
111+
- name: Test aerich migration upgrade (PostgreSQL)
112+
if: matrix.os == 'ubuntu-latest'
113+
shell: bash
114+
run: |
115+
set -eux
116+
sudo -u postgres psql -c "DROP DATABASE test;"
117+
sudo -u postgres psql -c "CREATE DATABASE test OWNER test;"
118+
cp .env_postgresql .env
119+
CURR_REF="$(git rev-parse HEAD)"
120+
git checkout stale/aerich-0.6
121+
pip install -qr requirements.txt
122+
python3 -u telegramRSSbot.py
123+
git checkout "$CURR_REF"
124+
pip install -qr requirements.txt
40125
python3 -u telegramRSSbot.py

0 commit comments

Comments
 (0)