{"id":18663346,"url":"https://github.com/c3kay/hoyolab-rss-feeds","last_synced_at":"2026-04-01T20:32:51.597Z","repository":{"id":40201779,"uuid":"392071602","full_name":"c3kay/hoyolab-rss-feeds","owner":"c3kay","description":"RSS feed (JSON \u0026 Atom) generator for official game news from Hoyolab.","archived":false,"fork":false,"pushed_at":"2026-03-19T20:29:37.000Z","size":268,"stargazers_count":30,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-03-20T11:24:27.873Z","etag":null,"topics":["atom-feed","genshin-impact","honkai-impact","honkai-starrail","hoyolab","json-feed","rss","rss-generator","zenless-zone-zero"],"latest_commit_sha":null,"homepage":"https://c3kay.de/hoyolab-rss-feeds","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/c3kay.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-08-02T19:32:28.000Z","updated_at":"2026-01-27T13:36:47.000Z","dependencies_parsed_at":"2024-01-07T15:22:49.655Z","dependency_job_id":"bd91855d-3867-46ca-853a-239470f236b5","html_url":"https://github.com/c3kay/hoyolab-rss-feeds","commit_stats":{"total_commits":141,"total_committers":1,"mean_commits":141.0,"dds":0.0,"last_synced_commit":"ecf761001c745f1db5a76f02863275c39e9ea189"},"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/c3kay/hoyolab-rss-feeds","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/c3kay%2Fhoyolab-rss-feeds","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/c3kay%2Fhoyolab-rss-feeds/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/c3kay%2Fhoyolab-rss-feeds/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/c3kay%2Fhoyolab-rss-feeds/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/c3kay","download_url":"https://codeload.github.com/c3kay/hoyolab-rss-feeds/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/c3kay%2Fhoyolab-rss-feeds/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31291677,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["atom-feed","genshin-impact","honkai-impact","honkai-starrail","hoyolab","json-feed","rss","rss-generator","zenless-zone-zero"],"created_at":"2024-11-07T08:16:09.395Z","updated_at":"2026-04-01T20:32:51.526Z","avatar_url":"https://github.com/c3kay.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Hoyolab RSS Feeds\n\n[![PyPI](https://img.shields.io/pypi/v/hoyolab-rss-feeds)](https://pypi.org/project/hoyolab-rss-feeds/)\n[![Python Version](https://img.shields.io/pypi/pyversions/hoyolab-rss-feeds)](https://pypi.org/project/hoyolab-rss-feeds/)\n[![Tests Status](https://img.shields.io/github/actions/workflow/status/c3kay/hoyolab-rss-feeds/build.yaml)](https://github.com/c3kay/hoyolab-rss-feeds/actions/workflows/build.yaml)\n[![Codecov](https://codecov.io/gh/c3kay/hoyolab-rss-feeds/graph/badge.svg?token=Q8YYARNJ9P)](https://codecov.io/gh/c3kay/hoyolab-rss-feeds)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![Checked with mypy](http://www.mypy-lang.org/static/mypy_badge.svg)](http://mypy-lang.org/)\n\nGenerate RSS news feeds for Hoyoverse games like Genshin Impact or Honkai Starrail based\non the official [Hoyolab](https://www.hoyolab.com) forum posts. Available feed formats\nare [Atom](https://datatracker.ietf.org/doc/html/rfc4287) and [JSON Feed](https://jsonfeed.org).\nThis application is supposed to run periodically by a cronjob for example.\n\nThere are [feeds of some games](https://c3kay.de/hoyolab-rss-feeds) already hosted by myself!\n\n## Installation \u0026 Usage\n\n### Python Module\n\nYou can install the package from PyPI with:\n\n```shell\npip install hoyolab-rss-feeds\n```\n\n... and run the application like this:\n\n```shell\nhoyolab-rss-feeds\n```\n\n... or explicitly as module:\n\n```shell\npython -m hoyolabrssfeeds\n```\n\nIf no configuration can be found, the application will create a default config\nin your current directory (`./hoyolab-rss-feeds.toml`) and will exit afterward.\n\nYou can specify a path for the config file with a parameter:\n\n```shell\nhoyolab-rss-feeds -c path/to/config.toml\n```\n\nIt is also possible to generate the feeds directly in your Python code:\n\n```python\nfrom pathlib import Path\nfrom hoyolabrssfeeds import FeedConfigLoader, GameFeed, GameFeedCollection, Game\n\nasync def generate_feeds():\n    loader = FeedConfigLoader(Path(\"path/to/config.toml\"))\n    \n    # all games in config\n    all_configs = await loader.get_all_feed_configs()\n    feed_collection = GameFeedCollection.from_configs(all_configs)\n    await feed_collection.create_feeds()\n    \n    # only a single game\n    genshin_config = await loader.get_feed_config(Game.GENSHIN)\n    genshin_feed = GameFeed.from_config(genshin_config)\n    await genshin_feed.create_feed()\n```\n\n[Here](https://gist.github.com/c3kay/2cd9833ef1c527e210aebf7a866336ed)\nyou can find an example on how to create a feed without using the TOML config file.\n\n### Docker\n\nThe application is also available as Docker image and can be run like this:\n\n```shell\ndocker run \\\n  -v \"/path/to/config.toml:/app/config.toml\" \\\n  -v \"/path/to/data:/data\" \\\n  ghcr.io/c3kay/hoyolab-rss-feeds\n```\n\nThe config file should be mounted to the default path `/app/config.toml`.\nThe `/data` directory should be used as the target directory for the generated\nfeeds and also need to be configured like so in the config file\n(see option `feed.\u003cformat\u003e.path` below).\n\nPlease note that you still need some kind of scheduler like cron or Kubernetes\nto run the image in fixed intervals to refresh the feeds!\n\n## Configuration\n\nIn the TOML config file you can define for which games you want to create a feed\nand in which format the feeds should be. Here is an example config:\n\n```toml\nlanguage = \"de-de\"\ncategory_size = 15\n\n[genshin]\nfeed.json.path = \"path/to/genshin.json\"\nfeed.json.url = \"https://example.org/genshin.json\"\ncategories = [\"Info\", \"Notices\"]\ncategory_size = 5\ntitle = \"Genshin Impact News\"\nicon = \"https://example.org/icon.png\"\n\n[starrail]\nfeed.json.path = \"path/to/starrail.json\"\nfeed.json.url = \"https://example.org/starrail.json\"\nfeed.atom.path = \"path/to/starrail.xml\"\nfeed.atom.url = \"https://example.org/starrail.xml\"\n```\n\nA minimal configuration requires at least one game section with a `feed.\u003cformat\u003e.path`\nentry. Available feed formats are currently `json` and `atom`. You can either use\none format or both.\n\nEntries defined at root level are considered default values and will apply to every\ngame section. The `feed` key can only be used in a game section. All other keys\ncan be defined at root level, and they can be overwritten by a game section.\n\nThe `categories` list defines the selected Hoyolab categories (*Info*, *Event* and\n*Notices*) for this feed. If this entry is omitted, all categories are selected.\nThe `category_size` entry defines the amount of feed items (default: 5) of a category\nfor each feed. \n\n**Note:** When using Windows file paths (like `C:\\\\path\\to\\config.toml`), single quotes\nshould be used to avoid wrong auto-escaping of backslashes. More info about the TOML\nformat can be found in the [official documentation](https://toml.io/en/).\n\n### Logging\n\nSimple logs at level `INFO` are written to the terminal by default. If a file path is given\nvia parameter (`-l /path/to/out.log`), the logs are written to this file.\n\nIf the application is run via code, the logger must be \n[configured](https://docs.python.org/3.11/howto/logging.html#configuring-logging) separately. \nThe application specific logger is available by:\n\n```python\nimport logging\nlogger = logging.getLogger(\"hoyolabrssfeeds\")\n```\n\n### Options\n\n#### Games\n\n| Game                | Section    |\n|---------------------|------------|\n| Genshin Impact      | `genshin`  |\n| Honkai Impact 3rd   | `honkai`   |\n| Tears of Themis     | `themis`   |\n| Honkai: Starrail    | `starrail` |\n| Zenless Zone Zero   | `zenless`  |\n| Honkai: Nexus Anima | `nexus`    |\n| Petit Planet        | `planet`   |\n\n#### Languages\n\n*English is the default language.*\n\n| Language     | Code    |\n|--------------|---------|\n| German       | `de-de` |\n| English      | `en-us` |\n| Spanish      | `es-es` |\n| French       | `fr-fr` |\n| Indonesian   | `id-id` |\n| Italian      | `it-it` |\n| Japanese     | `ja-jp` |\n| Korean       | `ko-kr` |\n| Portuguese   | `pt-pt` |\n| Russian      | `ru-ru` |\n| Thai         | `th-th` |\n| Turkish      | `tr-tr` |\n| Vietnamese   | `vi-vn` |\n| Chinese (CN) | `zh-cn` |\n| Chinese (TW) | `zh-tw` |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fc3kay%2Fhoyolab-rss-feeds","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fc3kay%2Fhoyolab-rss-feeds","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fc3kay%2Fhoyolab-rss-feeds/lists"}