{"id":15436333,"url":"https://github.com/zigai/twitch-scraper","last_synced_at":"2025-04-19T19:04:31.376Z","repository":{"id":161090145,"uuid":"515896362","full_name":"zigai/twitch-scraper","owner":"zigai","description":"Twitch clip/profile scraper","archived":false,"fork":false,"pushed_at":"2025-02-14T16:20:02.000Z","size":73,"stargazers_count":4,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-29T12:03:27.554Z","etag":null,"topics":["twitch","twitch-api","twitch-api-helix","twitch-bot","twitch-clips","twitch-downloader","twitch-scraper"],"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/zigai.png","metadata":{"files":{"readme":"README.md","changelog":null,"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":"2022-07-20T08:26:01.000Z","updated_at":"2025-02-14T16:20:06.000Z","dependencies_parsed_at":"2025-01-18T11:21:10.339Z","dependency_job_id":"bb5976bc-b879-4d24-81bb-77cd80a4af59","html_url":"https://github.com/zigai/twitch-scraper","commit_stats":{"total_commits":42,"total_committers":1,"mean_commits":42.0,"dds":0.0,"last_synced_commit":"56563a0f629184d1154b1082b80665de4b944eaa"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zigai%2Ftwitch-scraper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zigai%2Ftwitch-scraper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zigai%2Ftwitch-scraper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zigai%2Ftwitch-scraper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zigai","download_url":"https://codeload.github.com/zigai/twitch-scraper/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249239321,"owners_count":21235841,"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":["twitch","twitch-api","twitch-api-helix","twitch-bot","twitch-clips","twitch-downloader","twitch-scraper"],"created_at":"2024-10-01T18:49:59.248Z","updated_at":"2025-04-16T12:31:05.188Z","avatar_url":"https://github.com/zigai.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Twitch scraper\nTwitch clip/profile scraper.\nTwitch API credentials are required.\n\n# Installation\n```\npip install git+https://github.com/zigai/twitch-scraper.git\n```\n# CLI usage\n```\nusage: twitch-scraper [-h] [-d] [-c] [--verbose | --no-verbose] SAVE-DIR CLIENT-ID BEARER {clips,profiles} ...\n\n _            _ _       _\n| |___      _(_) |_ ___| |__    ___  ___ _ __ __ _ _ __   ___ _ __\n| __\\ \\ /\\ / / | __/ __| '_ \\  / __|/ __| '__/ _` | '_ \\ / _ \\ '__|\n| |_ \\ V  V /| | || (__| | | | \\__ \\ (__| | | (_| | |_) |  __/ |\n \\__| \\_/\\_/ |_|\\__\\___|_| |_| |___/\\___|_|  \\__,_| .__/ \\___|_|\n                                                  |_|\n\npositional arguments:\n  SAVE-DIR                              directory to save files [type: str] (*)\n  CLIENT-ID                             twitch.tv client ID [type: str] (*)\n  BEARER                                twitch.tv bearer token [type: str] (*)\n  {clips,profiles} ...\n\noptions:\n  -h, --help                            show this help message and exit\n  -d, --delay                           delay between requests (seconds) [type: float, default=0.5]\n  -c, --cache                           path to cache file [type: str?]\n  --verbose, --no-verbose               print status messages.\n\ncommands:\n   clips            Scrape Twitch.tv clips.\n   profiles         Scrape Twitch.tv user profiles\n```\n\n```\nusage: twitch-scraper SAVE-DIR CLIENT-ID BEARER clips [-h] [-u] [-g] [-s] [-e] [-l]\n\nScrape Twitch.tv clips.\n\noptions:\n  -h, --help            show this help message and exit\n  -u, --username    username of the streamer [type: str?]\n  -g, --game        Name of the game [type: str?]\n  -s, --started-at  starting date/time [type: datetime?]\n  -e, --ended-at    ending date/time [type: datetime?]\n  -l, --limit       maximum number of clips to scrape [type: int, default=1000]\n```\n\n```\nusage: twitch-scraper SAVE-DIR CLIENT-ID BEARER profiles [-h] [USERNAMES ...]\n\nScrape Twitch.tv user profiles\n\npositional arguments:\n  USERNAMES   usernames of profiles to scrape [type: list[str]] (*)\n\noptions:\n  -h, --help  show this help message and exit\n```\n\n# Library usage\n```python\nfrom datetime import datetime, timedelta\nfrom twitch_scraper import TwitchScraper\n\nscraper = TwitchScraper(\n    save_dir=\"./clips\",\n    client_id=...,\n    bearer=...,\n)\n\ntoday = datetime.today()\nscraper.clips(\n    game=\"League of Legends\",\n    started_at=today - timedelta(days=7),\n    ended_at=today,\n    limit=50,\n)\n```\n\n\n# License\n[MIT License](https://github.com/zigai/twitch-scraper/blob/master/LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzigai%2Ftwitch-scraper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzigai%2Ftwitch-scraper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzigai%2Ftwitch-scraper/lists"}