aa-rss-to-discord 2.3.32.3.3__tar.gz → 2.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/.gitignore +2 -0
  2. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/PKG-INFO +11 -9
  3. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/README.md +3 -3
  4. aa_rss_to_discord-2.4.0/aa_rss_to_discord/__init__.py +10 -0
  5. aa_rss_to_discord-2.4.0/aa_rss_to_discord/apps.py +22 -0
  6. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/constants.py +1 -1
  7. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/locale/cs_CZ/LC_MESSAGES/django.po +2 -2
  8. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/locale/de/LC_MESSAGES/django.po +2 -2
  9. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/locale/django.pot +3 -3
  10. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/locale/es/LC_MESSAGES/django.po +2 -2
  11. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/locale/fr_FR/LC_MESSAGES/django.po +2 -2
  12. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/locale/it_IT/LC_MESSAGES/django.po +2 -2
  13. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/locale/ja/LC_MESSAGES/django.po +2 -2
  14. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/locale/ko_KR/LC_MESSAGES/django.po +2 -2
  15. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/locale/nl_NL/LC_MESSAGES/django.po +2 -2
  16. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/locale/pl_PL/LC_MESSAGES/django.po +2 -2
  17. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/locale/ru/LC_MESSAGES/django.po +2 -2
  18. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/locale/sk/LC_MESSAGES/django.po +2 -2
  19. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/locale/uk/LC_MESSAGES/django.mo +0 -0
  20. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/locale/uk/LC_MESSAGES/django.po +7 -7
  21. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/locale/zh_Hans/LC_MESSAGES/django.po +2 -2
  22. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/managers.py +1 -1
  23. aa_rss_to_discord-2.4.0/aa_rss_to_discord/providers.py +43 -0
  24. aa_rss_to_discord-2.4.0/aa_rss_to_discord/tasks.py +131 -0
  25. aa_rss_to_discord-2.4.0/aa_rss_to_discord/tests/__init__.py +41 -0
  26. aa_rss_to_discord-2.4.0/aa_rss_to_discord/tests/test_auth_hooks.py +49 -0
  27. aa_rss_to_discord-2.4.0/aa_rss_to_discord/tests/test_managers.py +32 -0
  28. aa_rss_to_discord-2.4.0/aa_rss_to_discord/tests/test_models.py +165 -0
  29. aa_rss_to_discord-2.4.0/aa_rss_to_discord/tests/test_providers.py +99 -0
  30. aa_rss_to_discord-2.4.0/aa_rss_to_discord/tests/test_tasks.py +176 -0
  31. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/pyproject.toml +7 -5
  32. aa_rss_to_discord-2.3.32.3.3/aa_rss_to_discord/__init__.py +0 -9
  33. aa_rss_to_discord-2.3.32.3.3/aa_rss_to_discord/apps.py +0 -19
  34. aa_rss_to_discord-2.3.32.3.3/aa_rss_to_discord/tasks.py +0 -207
  35. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/LICENSE +0 -0
  36. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/admin.py +0 -0
  37. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/auth_hooks.py +0 -0
  38. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/discordbot/cogs/__init__.py +0 -0
  39. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/discordbot/cogs/rss.py +0 -0
  40. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/locale/cs_CZ/LC_MESSAGES/django.mo +0 -0
  41. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/locale/de/LC_MESSAGES/django.mo +0 -0
  42. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/locale/es/LC_MESSAGES/django.mo +0 -0
  43. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/locale/fr_FR/LC_MESSAGES/django.mo +0 -0
  44. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/locale/it_IT/LC_MESSAGES/django.mo +0 -0
  45. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/locale/ja/LC_MESSAGES/django.mo +0 -0
  46. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/locale/ko_KR/LC_MESSAGES/django.mo +0 -0
  47. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/locale/nl_NL/LC_MESSAGES/django.mo +0 -0
  48. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/locale/pl_PL/LC_MESSAGES/django.mo +0 -0
  49. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/locale/ru/LC_MESSAGES/django.mo +0 -0
  50. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/locale/sk/LC_MESSAGES/django.mo +0 -0
  51. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/locale/zh_Hans/LC_MESSAGES/django.mo +0 -0
  52. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/migrations/0001_initial.py +0 -0
  53. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/migrations/0002_enable_disable_rss_feeds.py +0 -0
  54. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/migrations/__init__.py +0 -0
  55. {aa_rss_to_discord-2.3.32.3.3 → aa_rss_to_discord-2.4.0}/aa_rss_to_discord/models.py +0 -0
@@ -16,3 +16,5 @@ __pycache__
16
16
  alliance_auth.sqlite3
17
17
 
18
18
  /aa_rss_to_discord/locale/en/
19
+ .esi-compatibility-date
20
+ .make/myauth-path
@@ -1,13 +1,15 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aa-rss-to-discord
3
- Version: 2.3.32.3.3
3
+ Version: 2.4.0
4
4
  Summary: Alliance Auth module to post news from RSS feeds to your Discord
5
5
  Project-URL: Changelog, https://github.com/ppfeufer/aa-rss-to-discord/blob/master/CHANGELOG.md
6
+ Project-URL: Codecov, https://codecov.io/gh/ppfeufer/aa-rss-to-discord
7
+ Project-URL: Discord, https://discord.gg/fjnHAmk
6
8
  Project-URL: Documentation, https://github.com/ppfeufer/aa-rss-to-discord/blob/master/README.md
7
- Project-URL: Donations, https://ko-fi.com/ppfeufer
8
- Project-URL: Homepage, https://github.com/ppfeufer/aa-rss-to-discord
9
- Project-URL: Source, https://github.com/ppfeufer/aa-rss-to-discord.git
9
+ Project-URL: Donation, https://ko-fi.com/ppfeufer
10
+ Project-URL: GitHub, https://github.com/ppfeufer/aa-rss-to-discord
10
11
  Project-URL: Tracker, https://github.com/ppfeufer/aa-rss-to-discord/issues
12
+ Project-URL: Translation, https://weblate.ppfeufer.de/projects/alliance-auth-apps/aa-rss-to-discord/
11
13
  Author-email: Peter Pfeufer <develop@ppfeufer.de>
12
14
  License: GNU GENERAL PUBLIC LICENSE
13
15
  Version 3, 29 June 2007
@@ -699,11 +701,11 @@ Classifier: Programming Language :: Python :: 3.12
699
701
  Classifier: Programming Language :: Python :: 3.13
700
702
  Classifier: Topic :: Internet :: WWW/HTTP
701
703
  Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
702
- Requires-Python: >=3.10
703
- Requires-Dist: allianceauth-app-utils>=1.14.2
704
+ Requires-Python: <3.14,>=3.10
704
705
  Requires-Dist: allianceauth-discordbot>=3.0.5
705
706
  Requires-Dist: allianceauth<5,>=4.3.1
706
707
  Requires-Dist: feedparser
708
+ Requires-Dist: py-cord>=2.7.0rc2; python_version == '3.13'
707
709
  Provides-Extra: tests-allianceauth-latest
708
710
  Requires-Dist: coverage; extra == 'tests-allianceauth-latest'
709
711
  Requires-Dist: django-webtest; extra == 'tests-allianceauth-latest'
@@ -718,7 +720,7 @@ Description-Content-Type: text/markdown
718
720
  ![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)
719
721
  [![pre-commit.ci status](https://results.pre-commit.ci/badge/github/ppfeufer/aa-rss-to-discord/master.svg)](https://results.pre-commit.ci/latest/github/ppfeufer/aa-rss-to-discord/master)
720
722
  [![Code Style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](http://black.readthedocs.io/en/latest/)
721
- [![Discord](https://img.shields.io/discord/790364535294132234?label=discord)](https://discord.gg/zmh52wnfvM)
723
+ [![Discord](https://img.shields.io/discord/399006117012832262?label=discord)](https://discord.gg/fjnHAmk)
722
724
  [![Checks](https://github.com/ppfeufer/aa-rss-to-discord/actions/workflows/automated-checks.yml/badge.svg)](https://github.com/ppfeufer/aa-rss-to-discord/actions/workflows/automated-checks.yml)
723
725
  [![codecov](https://codecov.io/gh/ppfeufer/aa-rss-to-discord/branch/master/graph/badge.svg?token=LVEQ6W55ZB)](https://codecov.io/gh/ppfeufer/aa-rss-to-discord)
724
726
  [![Badge: Translation Status]][weblate engage]
@@ -771,7 +773,7 @@ Make sure you're in the virtual environment (venv) of your Alliance Auth
771
773
  installation Then install the latest release directly from PyPi.
772
774
 
773
775
  ```shell
774
- pip install aa-rss-to-discord
776
+ pip install aa-rss-to-discord==2.4.0
775
777
  ```
776
778
 
777
779
  ### Step 2: Configure Alliance Auth<a name="step-2-configure-alliance-auth"></a>
@@ -826,7 +828,7 @@ To update your existing installation of Alliance Auth RSS to Discord, first enab
826
828
  virtual environment (venv) of your Alliance Auth installation.
827
829
 
828
830
  ```bash
829
- pip install -U aa-rss-to-discord
831
+ pip install aa-rss-to-discord==2.4.0
830
832
 
831
833
  python manage.py migrate
832
834
  ```
@@ -7,7 +7,7 @@
7
7
  ![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)
8
8
  [![pre-commit.ci status](https://results.pre-commit.ci/badge/github/ppfeufer/aa-rss-to-discord/master.svg)](https://results.pre-commit.ci/latest/github/ppfeufer/aa-rss-to-discord/master)
9
9
  [![Code Style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](http://black.readthedocs.io/en/latest/)
10
- [![Discord](https://img.shields.io/discord/790364535294132234?label=discord)](https://discord.gg/zmh52wnfvM)
10
+ [![Discord](https://img.shields.io/discord/399006117012832262?label=discord)](https://discord.gg/fjnHAmk)
11
11
  [![Checks](https://github.com/ppfeufer/aa-rss-to-discord/actions/workflows/automated-checks.yml/badge.svg)](https://github.com/ppfeufer/aa-rss-to-discord/actions/workflows/automated-checks.yml)
12
12
  [![codecov](https://codecov.io/gh/ppfeufer/aa-rss-to-discord/branch/master/graph/badge.svg?token=LVEQ6W55ZB)](https://codecov.io/gh/ppfeufer/aa-rss-to-discord)
13
13
  [![Badge: Translation Status]][weblate engage]
@@ -60,7 +60,7 @@ Make sure you're in the virtual environment (venv) of your Alliance Auth
60
60
  installation Then install the latest release directly from PyPi.
61
61
 
62
62
  ```shell
63
- pip install aa-rss-to-discord
63
+ pip install aa-rss-to-discord==2.4.0
64
64
  ```
65
65
 
66
66
  ### Step 2: Configure Alliance Auth<a name="step-2-configure-alliance-auth"></a>
@@ -115,7 +115,7 @@ To update your existing installation of Alliance Auth RSS to Discord, first enab
115
115
  virtual environment (venv) of your Alliance Auth installation.
116
116
 
117
117
  ```bash
118
- pip install -U aa-rss-to-discord
118
+ pip install aa-rss-to-discord==2.4.0
119
119
 
120
120
  python manage.py migrate
121
121
  ```
@@ -0,0 +1,10 @@
1
+ """
2
+ App init
3
+ """
4
+
5
+ # Django
6
+ from django.utils.translation import gettext_lazy as _
7
+
8
+ __version__ = "2.4.0"
9
+ __title__ = "RSS to Discord"
10
+ __title_translated__ = _("RSS to Discord")
@@ -0,0 +1,22 @@
1
+ """
2
+ app config
3
+ """
4
+
5
+ # Django
6
+ from django.apps import AppConfig
7
+ from django.utils.text import format_lazy
8
+
9
+ # AA RSS to Discord
10
+ from aa_rss_to_discord import __title_translated__, __version__
11
+
12
+
13
+ class AaRssToDiscordConfig(AppConfig):
14
+ """
15
+ application config
16
+ """
17
+
18
+ name = "aa_rss_to_discord"
19
+ label = "aa_rss_to_discord"
20
+ verbose_name = format_lazy(
21
+ "{app_title} v{version}", app_title=__title_translated__, version=__version__
22
+ )
@@ -9,7 +9,7 @@ from feedparser import USER_AGENT as feedparser_user_agent
9
9
  from aa_rss_to_discord import __version__
10
10
 
11
11
  APP_NAME = "aa-rss-to-discord"
12
- APP_NAME_USERAGENT = "AA-RSS-to-Discord"
12
+ APP_NAME_USERAGENT = "AaRssToDiscord"
13
13
  GITHUB_URL = f"https://github.com/ppfeufer/{APP_NAME}"
14
14
  USER_AGENT = (
15
15
  f"{APP_NAME_USERAGENT}/{__version__} (+{GITHUB_URL}) via {feedparser_user_agent}"
@@ -7,7 +7,7 @@ msgid ""
7
7
  msgstr ""
8
8
  "Project-Id-Version: AA RSS to Discord 2.2.0\n"
9
9
  "Report-Msgid-Bugs-To: https://github.com/ppfeufer/aa-rss-to-discord/issues\n"
10
- "POT-Creation-Date: 2025-08-05 10:15+0200\n"
10
+ "POT-Creation-Date: 2025-12-02 08:06+0100\n"
11
11
  "PO-Revision-Date: 2024-05-10 14:10+0000\n"
12
12
  "Last-Translator: Anonymous <noreply@weblate.org>\n"
13
13
  "Language-Team: Czech <https://weblate.ppfeufer.de/projects/alliance-auth-apps/aa-rss-to-discord/cs/>\n"
@@ -18,7 +18,7 @@ msgstr ""
18
18
  "Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
19
19
  "X-Generator: Weblate 5.5.3\n"
20
20
 
21
- #: aa_rss_to_discord/__init__.py:9
21
+ #: aa_rss_to_discord/__init__.py:10
22
22
  msgid "RSS to Discord"
23
23
  msgstr ""
24
24
 
@@ -6,7 +6,7 @@ msgid ""
6
6
  msgstr ""
7
7
  "Project-Id-Version: AA RSS to Discord 2.2.0\n"
8
8
  "Report-Msgid-Bugs-To: https://github.com/ppfeufer/aa-rss-to-discord/issues\n"
9
- "POT-Creation-Date: 2025-08-05 10:15+0200\n"
9
+ "POT-Creation-Date: 2025-12-02 08:06+0100\n"
10
10
  "PO-Revision-Date: 2025-04-25 14:24+0000\n"
11
11
  "Last-Translator: Peter Pfeufer <info@ppfeufer.de>\n"
12
12
  "Language-Team: German <https://weblate.ppfeufer.de/projects/alliance-auth-apps/aa-rss-to-discord/de/>\n"
@@ -17,7 +17,7 @@ msgstr ""
17
17
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
18
18
  "X-Generator: Weblate 5.11\n"
19
19
 
20
- #: aa_rss_to_discord/__init__.py:9
20
+ #: aa_rss_to_discord/__init__.py:10
21
21
  msgid "RSS to Discord"
22
22
  msgstr "RSS zu Discord"
23
23
 
@@ -6,9 +6,9 @@
6
6
  #, fuzzy
7
7
  msgid ""
8
8
  msgstr ""
9
- "Project-Id-Version: AA RSS to Discord 2.3.32.3.3\n"
9
+ "Project-Id-Version: AA RSS to Discord 2.4.0\n"
10
10
  "Report-Msgid-Bugs-To: https://github.com/ppfeufer/aa-rss-to-discord/issues\n"
11
- "POT-Creation-Date: 2025-08-05 10:15+0200\n"
11
+ "POT-Creation-Date: 2025-12-02 08:06+0100\n"
12
12
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13
13
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
14
  "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,7 +17,7 @@ msgstr ""
17
17
  "Content-Type: text/plain; charset=UTF-8\n"
18
18
  "Content-Transfer-Encoding: 8bit\n"
19
19
 
20
- #: aa_rss_to_discord/__init__.py:9
20
+ #: aa_rss_to_discord/__init__.py:10
21
21
  msgid "RSS to Discord"
22
22
  msgstr ""
23
23
 
@@ -6,7 +6,7 @@ msgid ""
6
6
  msgstr ""
7
7
  "Project-Id-Version: AA RSS to Discord 2.2.0\n"
8
8
  "Report-Msgid-Bugs-To: https://github.com/ppfeufer/aa-rss-to-discord/issues\n"
9
- "POT-Creation-Date: 2025-08-05 10:15+0200\n"
9
+ "POT-Creation-Date: 2025-12-02 08:06+0100\n"
10
10
  "PO-Revision-Date: 2024-05-10 14:10+0000\n"
11
11
  "Last-Translator: Zigor Fernandez Moreno <sietehierros@gmail.com>\n"
12
12
  "Language-Team: Spanish <https://weblate.ppfeufer.de/projects/alliance-auth-apps/aa-rss-to-discord/es/>\n"
@@ -17,7 +17,7 @@ msgstr ""
17
17
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
18
18
  "X-Generator: Weblate 5.5.3\n"
19
19
 
20
- #: aa_rss_to_discord/__init__.py:9
20
+ #: aa_rss_to_discord/__init__.py:10
21
21
  msgid "RSS to Discord"
22
22
  msgstr ""
23
23
 
@@ -9,7 +9,7 @@ msgid ""
9
9
  msgstr ""
10
10
  "Project-Id-Version: AA RSS to Discord 2.2.0\n"
11
11
  "Report-Msgid-Bugs-To: https://github.com/ppfeufer/aa-rss-to-discord/issues\n"
12
- "POT-Creation-Date: 2025-08-05 10:15+0200\n"
12
+ "POT-Creation-Date: 2025-12-02 08:06+0100\n"
13
13
  "PO-Revision-Date: 2025-08-03 04:24+0000\n"
14
14
  "Last-Translator: The “Devcutter” Guy <mick162534@gmail.com>\n"
15
15
  "Language-Team: French <https://weblate.ppfeufer.de/projects/alliance-auth-apps/aa-rss-to-discord/fr/>\n"
@@ -20,7 +20,7 @@ msgstr ""
20
20
  "Plural-Forms: nplurals=2; plural=n > 1;\n"
21
21
  "X-Generator: Weblate 5.12.2\n"
22
22
 
23
- #: aa_rss_to_discord/__init__.py:9
23
+ #: aa_rss_to_discord/__init__.py:10
24
24
  msgid "RSS to Discord"
25
25
  msgstr "RSS vers Discord"
26
26
 
@@ -7,7 +7,7 @@ msgid ""
7
7
  msgstr ""
8
8
  "Project-Id-Version: AA RSS to Discord 2.2.0\n"
9
9
  "Report-Msgid-Bugs-To: https://github.com/ppfeufer/aa-rss-to-discord/issues\n"
10
- "POT-Creation-Date: 2025-08-05 10:15+0200\n"
10
+ "POT-Creation-Date: 2025-12-02 08:06+0100\n"
11
11
  "PO-Revision-Date: 2024-05-10 14:10+0000\n"
12
12
  "Last-Translator: Anonymous <noreply@weblate.org>\n"
13
13
  "Language-Team: Italian <https://weblate.ppfeufer.de/projects/alliance-auth-apps/aa-rss-to-discord/it/>\n"
@@ -18,7 +18,7 @@ msgstr ""
18
18
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
19
19
  "X-Generator: Weblate 5.5.3\n"
20
20
 
21
- #: aa_rss_to_discord/__init__.py:9
21
+ #: aa_rss_to_discord/__init__.py:10
22
22
  msgid "RSS to Discord"
23
23
  msgstr ""
24
24
 
@@ -6,7 +6,7 @@ msgid ""
6
6
  msgstr ""
7
7
  "Project-Id-Version: AA RSS to Discord 2.2.0\n"
8
8
  "Report-Msgid-Bugs-To: https://github.com/ppfeufer/aa-rss-to-discord/issues\n"
9
- "POT-Creation-Date: 2025-08-05 10:15+0200\n"
9
+ "POT-Creation-Date: 2025-12-02 08:06+0100\n"
10
10
  "PO-Revision-Date: 2024-08-05 10:10+0000\n"
11
11
  "Last-Translator: Anata_no_Usiro <yt23542354m@gmail.com>\n"
12
12
  "Language-Team: Japanese <https://weblate.ppfeufer.de/projects/alliance-auth-apps/aa-rss-to-discord/ja/>\n"
@@ -17,7 +17,7 @@ msgstr ""
17
17
  "Plural-Forms: nplurals=1; plural=0;\n"
18
18
  "X-Generator: Weblate 5.6.2\n"
19
19
 
20
- #: aa_rss_to_discord/__init__.py:9
20
+ #: aa_rss_to_discord/__init__.py:10
21
21
  msgid "RSS to Discord"
22
22
  msgstr "RSS から Discord へ"
23
23
 
@@ -7,7 +7,7 @@ msgid ""
7
7
  msgstr ""
8
8
  "Project-Id-Version: AA RSS to Discord 2.2.0\n"
9
9
  "Report-Msgid-Bugs-To: https://github.com/ppfeufer/aa-rss-to-discord/issues\n"
10
- "POT-Creation-Date: 2025-08-05 10:15+0200\n"
10
+ "POT-Creation-Date: 2025-12-02 08:06+0100\n"
11
11
  "PO-Revision-Date: 2024-05-10 14:10+0000\n"
12
12
  "Last-Translator: Hue Radient <seataoji@gmail.com>\n"
13
13
  "Language-Team: Korean <https://weblate.ppfeufer.de/projects/alliance-auth-apps/aa-rss-to-discord/ko/>\n"
@@ -18,7 +18,7 @@ msgstr ""
18
18
  "Plural-Forms: nplurals=1; plural=0;\n"
19
19
  "X-Generator: Weblate 5.5.3\n"
20
20
 
21
- #: aa_rss_to_discord/__init__.py:9
21
+ #: aa_rss_to_discord/__init__.py:10
22
22
  msgid "RSS to Discord"
23
23
  msgstr "디스코드로 RSS피드보내기"
24
24
 
@@ -7,7 +7,7 @@ msgid ""
7
7
  msgstr ""
8
8
  "Project-Id-Version: AA RSS to Discord 2.2.0\n"
9
9
  "Report-Msgid-Bugs-To: https://github.com/ppfeufer/aa-rss-to-discord/issues\n"
10
- "POT-Creation-Date: 2025-08-05 10:15+0200\n"
10
+ "POT-Creation-Date: 2025-12-02 08:06+0100\n"
11
11
  "PO-Revision-Date: 2024-05-10 14:10+0000\n"
12
12
  "Last-Translator: Anonymous <noreply@weblate.org>\n"
13
13
  "Language-Team: Dutch <https://weblate.ppfeufer.de/projects/alliance-auth-apps/aa-rss-to-discord/nl/>\n"
@@ -18,7 +18,7 @@ msgstr ""
18
18
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
19
19
  "X-Generator: Weblate 5.5.3\n"
20
20
 
21
- #: aa_rss_to_discord/__init__.py:9
21
+ #: aa_rss_to_discord/__init__.py:10
22
22
  msgid "RSS to Discord"
23
23
  msgstr ""
24
24
 
@@ -7,7 +7,7 @@ msgid ""
7
7
  msgstr ""
8
8
  "Project-Id-Version: AA RSS to Discord 2.2.0\n"
9
9
  "Report-Msgid-Bugs-To: https://github.com/ppfeufer/aa-rss-to-discord/issues\n"
10
- "POT-Creation-Date: 2025-08-05 10:15+0200\n"
10
+ "POT-Creation-Date: 2025-12-02 08:06+0100\n"
11
11
  "PO-Revision-Date: 2024-05-10 14:10+0000\n"
12
12
  "Last-Translator: Anonymous <noreply@weblate.org>\n"
13
13
  "Language-Team: Polish <https://weblate.ppfeufer.de/projects/alliance-auth-apps/aa-rss-to-discord/pl/>\n"
@@ -18,7 +18,7 @@ msgstr ""
18
18
  "Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
19
19
  "X-Generator: Weblate 5.5.3\n"
20
20
 
21
- #: aa_rss_to_discord/__init__.py:9
21
+ #: aa_rss_to_discord/__init__.py:10
22
22
  msgid "RSS to Discord"
23
23
  msgstr ""
24
24
 
@@ -7,7 +7,7 @@ msgid ""
7
7
  msgstr ""
8
8
  "Project-Id-Version: AA RSS to Discord 2.2.0\n"
9
9
  "Report-Msgid-Bugs-To: https://github.com/ppfeufer/aa-rss-to-discord/issues\n"
10
- "POT-Creation-Date: 2025-08-05 10:15+0200\n"
10
+ "POT-Creation-Date: 2025-12-02 08:06+0100\n"
11
11
  "PO-Revision-Date: 2024-05-10 14:10+0000\n"
12
12
  "Last-Translator: Dromiel <dimhry@yandex.ru>\n"
13
13
  "Language-Team: Russian <https://weblate.ppfeufer.de/projects/alliance-auth-apps/aa-rss-to-discord/ru/>\n"
@@ -18,7 +18,7 @@ msgstr ""
18
18
  "Plural-Forms: nplurals=4; plural=n==1 ? 3 : (n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
19
19
  "X-Generator: Weblate 5.5.3\n"
20
20
 
21
- #: aa_rss_to_discord/__init__.py:9
21
+ #: aa_rss_to_discord/__init__.py:10
22
22
  msgid "RSS to Discord"
23
23
  msgstr "RSS к Дискорду"
24
24
 
@@ -7,7 +7,7 @@ msgid ""
7
7
  msgstr ""
8
8
  "Project-Id-Version: AA RSS to Discord 2.2.0\n"
9
9
  "Report-Msgid-Bugs-To: https://github.com/ppfeufer/aa-rss-to-discord/issues\n"
10
- "POT-Creation-Date: 2025-08-05 10:15+0200\n"
10
+ "POT-Creation-Date: 2025-12-02 08:06+0100\n"
11
11
  "PO-Revision-Date: 2024-05-10 14:10+0000\n"
12
12
  "Last-Translator: Anonymous <noreply@weblate.org>\n"
13
13
  "Language-Team: Slovak <https://weblate.ppfeufer.de/projects/alliance-auth-apps/aa-rss-to-discord/sk/>\n"
@@ -18,7 +18,7 @@ msgstr ""
18
18
  "Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\n"
19
19
  "X-Generator: Weblate 5.5.3\n"
20
20
 
21
- #: aa_rss_to_discord/__init__.py:9
21
+ #: aa_rss_to_discord/__init__.py:10
22
22
  msgid "RSS to Discord"
23
23
  msgstr ""
24
24
 
@@ -7,8 +7,8 @@ msgid ""
7
7
  msgstr ""
8
8
  "Project-Id-Version: AA RSS to Discord 2.2.0\n"
9
9
  "Report-Msgid-Bugs-To: https://github.com/ppfeufer/aa-rss-to-discord/issues\n"
10
- "POT-Creation-Date: 2025-08-05 10:15+0200\n"
11
- "PO-Revision-Date: 2025-04-10 07:05+0000\n"
10
+ "POT-Creation-Date: 2025-12-02 08:06+0100\n"
11
+ "PO-Revision-Date: 2025-08-27 20:43+0000\n"
12
12
  "Last-Translator: s0k0l -_- <salarysalo@gmail.com>\n"
13
13
  "Language-Team: Ukrainian <https://weblate.ppfeufer.de/projects/alliance-auth-apps/aa-rss-to-discord/uk/>\n"
14
14
  "Language: uk\n"
@@ -16,19 +16,19 @@ msgstr ""
16
16
  "Content-Type: text/plain; charset=UTF-8\n"
17
17
  "Content-Transfer-Encoding: 8bit\n"
18
18
  "Plural-Forms: nplurals=4; plural=n==1 ? 3 : (n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
19
- "X-Generator: Weblate 5.10.4\n"
19
+ "X-Generator: Weblate 5.13\n"
20
20
 
21
- #: aa_rss_to_discord/__init__.py:9
21
+ #: aa_rss_to_discord/__init__.py:10
22
22
  msgid "RSS to Discord"
23
23
  msgstr "RSS до Діскорду"
24
24
 
25
25
  #: aa_rss_to_discord/models.py:44
26
26
  msgid "RSS Feed"
27
- msgstr "RSS-канал"
27
+ msgstr "RSS-фід"
28
28
 
29
29
  #: aa_rss_to_discord/models.py:45
30
30
  msgid "RSS Feeds"
31
- msgstr "RSS-канали"
31
+ msgstr "RSS-фіди"
32
32
 
33
33
  #: aa_rss_to_discord/models.py:72
34
34
  msgid "Last Item"
@@ -36,4 +36,4 @@ msgstr "Останній елемент"
36
36
 
37
37
  #: aa_rss_to_discord/models.py:73
38
38
  msgid "Last Items"
39
- msgstr "Останні Елемети"
39
+ msgstr "Останні Елементи"
@@ -7,7 +7,7 @@ msgid ""
7
7
  msgstr ""
8
8
  "Project-Id-Version: AA RSS to Discord 2.2.0\n"
9
9
  "Report-Msgid-Bugs-To: https://github.com/ppfeufer/aa-rss-to-discord/issues\n"
10
- "POT-Creation-Date: 2025-08-05 10:15+0200\n"
10
+ "POT-Creation-Date: 2025-12-02 08:06+0100\n"
11
11
  "PO-Revision-Date: 2024-05-10 14:10+0000\n"
12
12
  "Last-Translator: Anonymous <noreply@weblate.org>\n"
13
13
  "Language-Team: Chinese (Simplified) <https://weblate.ppfeufer.de/projects/alliance-auth-apps/aa-rss-to-discord/zh_Hans/>\n"
@@ -18,7 +18,7 @@ msgstr ""
18
18
  "Plural-Forms: nplurals=1; plural=0;\n"
19
19
  "X-Generator: Weblate 5.5.3\n"
20
20
 
21
- #: aa_rss_to_discord/__init__.py:9
21
+ #: aa_rss_to_discord/__init__.py:10
22
22
  msgid "RSS to Discord"
23
23
  msgstr ""
24
24
 
@@ -8,7 +8,7 @@ from django.db import models
8
8
 
9
9
  class RssFeedsManager(models.Manager):
10
10
  """
11
- AFatManager
11
+ RssFeedsManager
12
12
  """
13
13
 
14
14
  def select_enabled(self):
@@ -0,0 +1,43 @@
1
+ """
2
+ Providers for the AA RSS to Discord app.
3
+ """
4
+
5
+ # Standard Library
6
+ import logging
7
+
8
+
9
+ class AppLogger(logging.LoggerAdapter):
10
+ """
11
+ Custom logger adapter that adds a prefix to log messages.
12
+
13
+ Taken from the `allianceauth-app-utils` package.
14
+ Credits to: Erik Kalkoken
15
+ """
16
+
17
+ def __init__(self, my_logger, prefix):
18
+ """
19
+ Initializes the AppLogger with a logger and a prefix.
20
+
21
+ :param my_logger: Logger instance
22
+ :type my_logger: logging.Logger
23
+ :param prefix: Prefix string to add to log messages
24
+ :type prefix: str
25
+ """
26
+
27
+ super().__init__(my_logger, {})
28
+
29
+ self.prefix = prefix
30
+
31
+ def process(self, msg, kwargs):
32
+ """
33
+ Prepares the log message by adding the prefix.
34
+
35
+ :param msg: Log message
36
+ :type msg: str
37
+ :param kwargs: Additional keyword arguments
38
+ :type kwargs: dict
39
+ :return: Prefixed log message and kwargs
40
+ :rtype: tuple
41
+ """
42
+
43
+ return f"[{self.prefix}] {msg}", kwargs
@@ -0,0 +1,131 @@
1
+ """
2
+ AA RSS To Discord Tasks
3
+ """
4
+
5
+ # Standard Library
6
+ import re
7
+
8
+ # Third Party
9
+ import feedparser
10
+ from aadiscordbot.tasks import send_message
11
+ from celery import shared_task
12
+
13
+ # Alliance Auth
14
+ from allianceauth.services.hooks import get_extension_logger
15
+ from allianceauth.services.tasks import QueueOnce
16
+
17
+ # AA RSS to Discord
18
+ from aa_rss_to_discord import __title__
19
+ from aa_rss_to_discord.constants import USER_AGENT
20
+ from aa_rss_to_discord.models import LastItem, RssFeeds
21
+ from aa_rss_to_discord.providers import AppLogger
22
+
23
+ logger = AppLogger(get_extension_logger(__name__), __title__)
24
+
25
+
26
+ def remove_emoji(string):
27
+ """
28
+ Removing these dumb as fuck emojis from the title string.
29
+ Like honestly, who in the hell needs that shit?
30
+
31
+ :param string:
32
+ :type string:
33
+ :return:
34
+ :rtype:
35
+ """
36
+
37
+ emoji_pattern = re.compile(
38
+ pattern="["
39
+ "\U0001f600-\U0001f64f" # Emoticons
40
+ "\U0001f300-\U0001f5ff" # Symbols & pictographs
41
+ "\U0001f680-\U0001f6ff" # Transport & map symbols
42
+ "\U0001f1e0-\U0001f1ff" # Flags (iOS)
43
+ "\U00002500-\U00002bef" # Chinese char
44
+ "\U00002702-\U000027b0"
45
+ "\U00002702-\U000027b0"
46
+ "\U000024c2-\U0001f251"
47
+ "\U0001f926-\U0001f937"
48
+ "\U00010000-\U0010ffff"
49
+ "\u2640-\u2642"
50
+ "\u2600-\u2b55"
51
+ "\u200d"
52
+ "\u23cf"
53
+ "\u23e9"
54
+ "\u231a"
55
+ "\ufe0f" # Dingbats
56
+ "\u3030"
57
+ "]+",
58
+ flags=re.UNICODE,
59
+ )
60
+
61
+ return emoji_pattern.sub(repl=r"", string=string)
62
+
63
+
64
+ @shared_task(**{"base": QueueOnce})
65
+ def fetch_rss() -> None:
66
+ """
67
+ Fetch RSS feeds and post new entries to Discord channels.
68
+
69
+ :return:
70
+ :rtype:
71
+ """
72
+
73
+ rss_feeds = RssFeeds.objects.select_enabled()
74
+
75
+ if not rss_feeds:
76
+ logger.debug("No RSS feeds found to parse.")
77
+
78
+ return
79
+
80
+ for rss_feed in rss_feeds:
81
+ logger.info(f'Fetching RSS Feed "{rss_feed.name}"')
82
+ feed = feedparser.parse(rss_feed.url, agent=USER_AGENT)
83
+
84
+ try:
85
+ latest_entry = feed.entries[0]
86
+ feed_entry_title = remove_emoji(latest_entry.get("title", "No title"))
87
+ feed_entry_link = latest_entry.get("link")
88
+ feed_entry_time = latest_entry.get("published", latest_entry.updated)
89
+ feed_entry_guid = latest_entry.get("id")
90
+ except (AttributeError, IndexError) as exc:
91
+ logger.debug(f'Error processing feed "{rss_feed.name}": {exc}')
92
+
93
+ continue
94
+
95
+ try:
96
+ last_item = LastItem.objects.get(rss_feed=rss_feed)
97
+ is_duplicate = (
98
+ last_item.rss_item_time == feed_entry_time
99
+ and last_item.rss_item_title == feed_entry_title
100
+ and last_item.rss_item_link == feed_entry_link
101
+ and last_item.rss_item_guid == feed_entry_guid
102
+ )
103
+
104
+ if is_duplicate:
105
+ logger.debug(
106
+ f'News item "{feed_entry_title}" for RSS Feed "{rss_feed.name}" '
107
+ "has already been posted to your Discord"
108
+ )
109
+
110
+ continue
111
+ except LastItem.DoesNotExist:
112
+ logger.debug("This seems to be a completely new RSS feed.")
113
+
114
+ logger.info(
115
+ f"New entry found, posting to Discord channel {rss_feed.discord_channel}"
116
+ )
117
+
118
+ LastItem.objects.update_or_create(
119
+ rss_feed=rss_feed,
120
+ defaults={
121
+ "rss_item_time": feed_entry_time,
122
+ "rss_item_title": feed_entry_title,
123
+ "rss_item_link": feed_entry_link,
124
+ "rss_item_guid": feed_entry_guid,
125
+ },
126
+ )
127
+
128
+ send_message(
129
+ channel_id=rss_feed.discord_channel.channel,
130
+ message=f"**{rss_feed.name}**\n{feed_entry_link}",
131
+ )