{"id":13624535,"url":"https://github.com/lupohan44/GamesHub","last_synced_at":"2025-04-16T00:32:39.226Z","repository":{"id":44696273,"uuid":"384730126","full_name":"lupohan44/GamesHub","owner":"lupohan44","description":null,"archived":false,"fork":false,"pushed_at":"2024-07-10T08:36:54.000Z","size":1407,"stargazers_count":99,"open_issues_count":11,"forks_count":14,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-08-01T22:00:46.055Z","etag":null,"topics":["archisteamfarm","bot","steamdb","telegram"],"latest_commit_sha":null,"homepage":"","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/lupohan44.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog.md","contributing":null,"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}},"created_at":"2021-07-10T15:28:20.000Z","updated_at":"2024-07-31T10:08:47.000Z","dependencies_parsed_at":"2024-06-12T09:25:02.787Z","dependency_job_id":"d486bcd5-8e83-4c02-982d-959e70f5e25c","html_url":"https://github.com/lupohan44/GamesHub","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lupohan44%2FGamesHub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lupohan44%2FGamesHub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lupohan44%2FGamesHub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lupohan44%2FGamesHub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lupohan44","download_url":"https://codeload.github.com/lupohan44/GamesHub/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223691642,"owners_count":17186861,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["archisteamfarm","bot","steamdb","telegram"],"created_at":"2024-08-01T21:01:43.563Z","updated_at":"2024-11-08T13:30:40.504Z","avatar_url":"https://github.com/lupohan44.png","language":"Python","funding_links":["https://ko-fi.com/lupohan44"],"categories":["Python"],"sub_categories":[],"readme":"# GamesHub\n\n![GamesHub](https://socialify.git.ci/lupohan44/GamesHub/image?description=1\u0026descriptionEditable=Provide%20a%20framework%20to%20develop%20plugins%20to%20scrap%20games%20from%20different%20websites%20and%20send%20notifications%20to%20other%20plugins\u0026forks=1\u0026issues=1\u0026language=1\u0026logo=https%3A%2F%2Fgithub.com%2Flupohan44%2FGamesHub%2Fraw%2Fmain%2Fstatic_files%2Flogo.png\u0026name=1\u0026owner=1\u0026pattern=Plus\u0026pulls=1\u0026stargazers=1\u0026theme=Light)\n\n[![project](https://img.shields.io/badge/lupohan44-GamesHub-brightgreen)](https://github.com/lupohan44/GamesHub) [![GitHub license](https://img.shields.io/github/license/lupohan44/GamesHub)](https://github.com/lupohan44/GamesHub/blob/main/LICENSE) [![GitHub stars](https://img.shields.io/github/stars/lupohan44/GamesHub)](https://github.com/lupohan44/GamesHub/stargazers) [![docker](https://img.shields.io/badge/Docker-lupohan44%2Fgames_hub-blue?logo=docker)](https://hub.docker.com/r/lupohan44/games_hub) [![Build Status](https://api.travis-ci.com/lupohan44/GamesHub.svg)](https://travis-ci.com/github/lupohan44/GamesHub)\n\n[README](README.md) | [中文文档](README_zhCN.md)\n\nThis project is inspired by [SteamDB-FreeGames](https://github.com/azhuge233/SteamDB-FreeGames)\n\nTelegram discussion group: [https://t.me/GamesHubDiscussion](https://t.me/GamesHubDiscussion)\n\n## Star History\n[![Stargazers over time](https://starchart.cc/lupohan44/GamesHub.svg)](https://starchart.cc/lupohan44/GamesHub)\n\n## Features\nProvide a framework to develop plugins to scrap games from different websites and send notifications to other plugins\n\n## Official Plugins (Maintained by project)\n:white_check_mark: Gather Steam free games from [SteamDB](https://steamdb.info/upcoming/free/). (Not recommended)\n\n:white_check_mark: Gather free games from [Keylol](https://keylol.com/t572814-1-1). (recommended)\n\n:white_check_mark: Gather free games from [Reddit](https://www.reddit.com/r/freegames).\n\n:white_check_mark: Use [Apprise](https://github.com/caronc/apprise) to send free games information. [(Telegram demo channel)](https://t.me/GamesHubDemo)\n\n:white_check_mark: Use [ASF](https://github.com/JustArchiNET/ArchiSteamFarm) to redeem games\n\n:white_check_mark: Use [Steam](https://github.com/ValvePython/steam) to redeem games\n## Requirements\n\n- python3\n  - [requirements.txt](requirements.txt)\n\n## Usage\n### Direct run\n1. Clone repository\n   ```shell\n   git clone https://github.com/lupohan44/GamesHub.git\n   ```\n2. Go into GamesHub directory\n   ```shell\n   cd GamesHub\n   ```\n3. Install requirements\n   ```shell\n   pip3 install -r requirements.txt\n   playwright install webkit chromium firefox || python3 -m playwright install webkit chromium firefox\n   # Depends on the browser(s) you want to use\n   ```\n   or install minimum requirements\n   ```shell\n   pip install -r requirements-no_plugin.txt\n   ```\n   and install requirements for each plugin you want to enable\n4. Copy [config.example.json5](config.example.json5) to ```config.json5```, change settings in it according to the comment.\n5. Run\n   ```shell\n   python3 app.py\n   ```\n   Each enabled official plugin should create a folder in ```{WORKING_DIR}/plugins/{PLUGIN_PACKAGE_NAME}``` to store runtime files and configs\n6. Change plugins' config files from step 5\n7. Rerun step 5\n### Docker (For Linux only)\n1. Create a folder for record and config, let's say folder name is /var/GamesHub\n\n   _Please note that this folder name must be absolute path._\n      ```shell\n      export GAMES_HUB_FOLDER_NAME=/var/GamesHub\n      mkdir -p \"$GAMES_HUB_FOLDER_NAME\"\n      ```\n2. Download [config.example.json5](config.example.json5) and rename to ```config.json5``` into the folder created in step 1, change settings in it according to the comment.\n   ```shell\n   wget -c \"https://raw.githubusercontent.com/lupohan44/GamesHub/main/config.example.json5\" -O \"$STEAM_DB_FOLDER_NAME/config.json5\" || curl -o \"$STEAM_DB_FOLDER_NAME/config.json5\" \"https://raw.githubusercontent.com/lupohan44/GamesHub/main/config.example.json5\"\n   ```\n3. Run with docker\n   ```shell\n   docker pull lupohan44/games_hub:latest \u0026\u0026 docker run -v $GAMES_HUB_FOLDER_NAME:/home/wd --rm lupohan44/games_hub:latest\n   ```\n   All changes by script inside docker will be permanently save to this folder.  \n   Each enabled official plugin should create a folder in ```{WORKING_DIR}/plugins/{PLUGIN_PACKAGE_NAME}``` to store runtime files and configs\n4. Change plugins' config files from step 3\n5. Rerun step 3\n\n## Plugins structure example\n   ```\n   /var/GamesHub (working directory)\n   ├── config.json5\n   └── plugins\n       ├── gameshub.official.notification.apprise\n       │   └── config.json5\n       ├── gameshub.official.scraper.steamdb\n       │   └── config.json5\n       ├── gameshub.official.scraper.keylol\n       │   ├── config.json5\n       │   └── cookies.txt\n       └── gameshub.official.redeemer.asf\n           └── config.json5\n   ```\n## Known issue\n1. Playwright does not support CentOS. ([issue](https://github.com/microsoft/playwright/issues/6219))\n    - Use docker\n\n## Develop plugins\n1. Think a package name for your plugin, format should be like gameshub.unofficial.{plugin_purpose}.{plugin_description}[.{your_name}]\n2. Copy one of the official plugin in [plugins](plugins) folder and rename it to your package name\n3. Follow the official plugin's structure and modify it to your needs\n\n## [Changelog](ChangeLog.md)\n\n## Special Thanks\n- The logo is designed by 限免喜加一\n![WechatQrCode](static_files/wechat-QRcode.jpg)\n\n## Support me\n1. [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/lupohan44)\n2. Star this repository\n3. Contribute to this project by pull request\n\nEach of them is appreciated. Thank you.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flupohan44%2FGamesHub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flupohan44%2FGamesHub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flupohan44%2FGamesHub/lists"}