{"id":22831039,"url":"https://github.com/lysagxra/bunkrdownloader","last_synced_at":"2026-02-22T21:13:06.271Z","repository":{"id":259386840,"uuid":"876930436","full_name":"Lysagxra/BunkrDownloader","owner":"Lysagxra","description":"Downloader for Bunkr","archived":false,"fork":false,"pushed_at":"2025-03-31T00:09:14.000Z","size":1375,"stargazers_count":73,"open_issues_count":0,"forks_count":5,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-23T19:13:57.703Z","etag":null,"topics":["bulk","bulk-download","bulk-downloader","bunkr","bunkr-download","bunkr-downloader","concurrent-processing","downloader","parallel-processing","python","python3"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Lysagxra.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":"2024-10-22T19:41:42.000Z","updated_at":"2025-04-23T18:45:27.000Z","dependencies_parsed_at":"2024-10-25T02:17:51.218Z","dependency_job_id":"04d33146-fb92-4edc-b659-3e10aa719fd7","html_url":"https://github.com/Lysagxra/BunkrDownloader","commit_stats":null,"previous_names":["lysagxra/simplelinuxbunkrdownloader","lysagxra/bunkrdownloader"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lysagxra%2FBunkrDownloader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lysagxra%2FBunkrDownloader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lysagxra%2FBunkrDownloader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lysagxra%2FBunkrDownloader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Lysagxra","download_url":"https://codeload.github.com/Lysagxra/BunkrDownloader/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250496991,"owners_count":21440231,"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":["bulk","bulk-download","bulk-downloader","bunkr","bunkr-download","bunkr-downloader","concurrent-processing","downloader","parallel-processing","python","python3"],"created_at":"2024-12-12T20:17:07.714Z","updated_at":"2026-02-22T21:13:06.256Z","avatar_url":"https://github.com/Lysagxra.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bunkr Downloader\n\n\u003e A Python Bunkr downloader that fetches images and videos from URLs. It supports both Bunkr albums and individual file URLs, logs issues, and enables concurrent downloads for efficiency.\n\n![Demo](https://github.com/Lysagxra/BunkrDownloader/blob/8d07aaa4fe4e5b438e9ccc75bf0b71c845df942d/assets/demo.gif)\n\n## Features\n\n- Downloads multiple files from an album concurrently.\n- Supports [batch downloading](https://github.com/Lysagxra/BunkrDownloader?tab=readme-ov-file#batch-download) via a list of URLs.\n- Supports [selective files downloading](https://github.com/Lysagxra/BunkrDownloader/tree/main?tab=readme-ov-file#selective-download) based on filename criteria.\n- Supports [custom download location](https://github.com/Lysagxra/BunkrDownloader/tree/main?tab=readme-ov-file#file-download-location).\n- Provides [minimal UI](https://github.com/Lysagxra/BunkrDownloader/tree/main?tab=readme-ov-file#disable-ui-for-notebooks) for notebook environments.\n- Provides progress indication during downloads.\n- Automatically creates a directory structure for organized storage.\n- Logs URLs that encounter errors for troubleshooting.\n\n## Dependencies\n\n- Python 3\n- `BeautifulSoup` (bs4) - for HTML parsing\n- `requests` - for HTTP requests\n- `rich` - for progress display in the terminal\n\n\u003cdetails\u003e\n\n\u003csummary\u003eShow directory structure\u003c/summary\u003e\n\n```\nproject-root/\n├── helpers/\n│ ├── crawlers/\n| | ├── api_utils.py         # Utilities for handling API requests and responses\n│ │ └── crawler_utils.py     # Utilities for extracting media download links\n│ ├── downloaders/\n│ │ ├── album_downloader.py  # Manages the downloading of entire albums\n│ │ ├── download_utils.py    # Utilities for managing the download process\n│ │ └── media_downloader.py  # Manages the downloading of individual media files\n│ ├── managers/\n│ │ ├── live_manager.py      # Manages a real-time live display\n│ │ ├── log_manager.py       # Manages real-time log updates\n│ │ └── progress_manager.py  # Manages progress bars\n│ ├── bunkr_utils.py         # Utilities for checking Bunkr status\n│ ├── config.py              # Manages constants and settings used across the project\n│ ├── file_utils.py          # Utilities for managing file operations\n│ ├── general_utils.py       # Miscellaneous utility functions\n│ └── url_utils.py           # Utilities for Bunkr URLs\n├── downloader.py            # Module for initiating downloads from specified Bunkr URLs\n├── main.py                  # Main script to run the downloader\n├── URLs.txt                 # Text file listing album URLs to be downloaded\n└── session_log.txt          # Log file for recording session details\n```\n\n\u003c/details\u003e\n\n## Installation\n\n1. Clone the repository:\n\n```bash\ngit clone https://github.com/Lysagxra/BunkrDownloader.git\n```\n\n2. Navigate to the project directory:\n\n```bash\ncd BunkrDownloader\n```\n\n3. Install the required dependencies:\n\n```bash\npip install -r requirements.txt\n```\n\n## Single Download\n\nTo download a single media from an URL, you can use `downloader.py`, running the script with a valid album or media URL.\n\n### Usage\n\n```bash\npython3 downloader.py \u003cbunkr_url\u003e\n```\n\n### Examples\n\nYou can either download an entire album or a specific file:\n\n```\npython3 downloader.py https://bunkr.si/a/PUK068QE       # Download album\npython3 downloader.py https://bunkr.fi/f/gBrv5f8tAGlGW  # Download single media\n```\n\n## Selective Download\n\nThe script supports selective file downloads from an album, allowing you to exclude files using the [Ignore List](https://github.com/Lysagxra/BunkrDownloader?tab=readme-ov-file#ignore-list) and include specific files with the [Include List](https://github.com/Lysagxra/BunkrDownloader?tab=readme-ov-file#include-list).\n\n## Ignore List\n\nThe Ignore List is specified using the `--ignore` argument in the command line.\nThis allows you to skip the download of any file from an album if its filename contains at least one of the specified strings in the list.\nItem in the list should be separated by a space.\n\n### Usage\n\n```bash\npython3 downloader.py \u003cbunkr_album_url\u003e --ignore \u003cignore_list\u003e\n```\n\n### Example\n\nThis feature is particularly useful when you want to skip files with certain extensions, such as `.zip` files. For instance:\n\n```bash\npython3 downloader.py https://bunkr.si/a/PUK068QE --ignore .zip\n```\n\n## Include List\n\nThe Include List is specified using the `--include` argument in the command line.\nThis allows you to download a file from an album only if its filename contains at least one of the specified strings in the list.\nItems in the list should be separated by a space.\n\n### Usage\n\n```bash\npython3 downloader.py \u003cbunkr_album_url\u003e --include \u003cinclude_list\u003e\n```\n\n### Example\n\n```bash\npython3 downloader.py https://bunkr.si/a/PUK068QE --include FullSizeRender\n```\n\n## Batch Download\n\nTo batch download from multiple URLs, you can use the `main.py` script.\nThis script reads URLs from a file named `URLs.txt` and downloads each one using the media downloader.\n\n### Usage\n\n1. Create a file named `URLs.txt` in the root of your project, listing each URL on a new line.\n\n- Example of `URLs.txt`:\n\n```\nhttps://bunkr.si/a/PUK068QE\nhttps://bunkr.fi/f/gBrv5f8tAGlGW\nhttps://bunkr.fi/a/kVYLh49Q\n```\n\n- Ensure that each URL is on its own line without any extra spaces.\n- You can add as many URLs as you need, following the same format.\n\n2. Run the batch download script:\n\n```\npython3 main.py\n```\n\n## File Download Location\n\nIf the `--custom-path \u003ccustom_path\u003e` argument is used, the downloaded files will be saved in `\u003ccustom_path\u003e/Downloads`.\nOtherwise, the files will be saved in a `Downloads` folder created within the script's directory\n\n### Usage\n\n```bash\npython3 main.py --custom-path \u003ccustom_path\u003e\n```\n\n### Example\n\n```bash\npython3 main.py --custom-path /path/to/external/drive\n```\n\n## Disable UI for Notebooks\n\nWhen the script is executed in a notebook environment (such as Jupyter), excessive output may lead to performance issues or crashes.\n\n### Usage\n\nYou can run the script with the `--disable-ui` argument to disable the progress bar and minimize log messages.\n\nTo disable the UI, use the following command:\n\n```\npython3 main.py --disable-ui\n```\n\nTo download a single file or album without the UI, you can use this command:\n\n```bash\npython3 downloader.py \u003cbunkr_url\u003e --disable-ui\n```\n\n## Maximum Number of Retries\n\nWhen the download fails, by default there is 5 retry attempts to download each media file again.\nYou can control the number of maximum attempts with the `--max-retries` argument.\nIt may be useful when you would like to skip broken media faster for the very large media collection.\n\n### Usage\n\nAllowed values: 0 (don't re-download) and larger.\n\n```bash\npython3 downloader.py \u003cbunkr_url\u003e --max-retries 3\n```\n\n### Example:\n\n```bash\npython3 downloader.py https://bunkr.si/a/PUK068QE --max-retries 3\n```\n\n## Logging\n\nThe application logs any issues encountered during the download process in a file named `session.log`.\nCheck this file for any URLs that may have been blocked or had errors.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flysagxra%2Fbunkrdownloader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flysagxra%2Fbunkrdownloader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flysagxra%2Fbunkrdownloader/lists"}