{"id":29754141,"url":"https://github.com/hmaach/wget","last_synced_at":"2025-07-26T15:18:16.541Z","repository":{"id":306425675,"uuid":"1021446002","full_name":"hmaach/wget","owner":"hmaach","description":"A Java-based clone of wget for downloading files and mirroring websites via HTTP","archived":false,"fork":false,"pushed_at":"2025-07-25T16:37:00.000Z","size":18,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-25T17:44:52.631Z","etag":null,"topics":["01-edu","java","unix","wget","zone01oujda"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hmaach.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-17T12:07:06.000Z","updated_at":"2025-07-25T16:37:04.000Z","dependencies_parsed_at":"2025-07-25T17:45:08.861Z","dependency_job_id":"22533554-35f7-4d38-b998-794a351d8578","html_url":"https://github.com/hmaach/wget","commit_stats":null,"previous_names":["hmaach/wget"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/hmaach/wget","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hmaach%2Fwget","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hmaach%2Fwget/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hmaach%2Fwget/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hmaach%2Fwget/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hmaach","download_url":"https://codeload.github.com/hmaach/wget/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hmaach%2Fwget/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267184360,"owners_count":24049174,"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","status":"online","status_checked_at":"2025-07-26T02:00:08.937Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["01-edu","java","unix","wget","zone01oujda"],"created_at":"2025-07-26T15:18:03.761Z","updated_at":"2025-07-26T15:18:16.536Z","avatar_url":"https://github.com/hmaach.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# wget-java\n\nA Java implementation of the wget utility for downloading files from the web with support for HTTP/HTTPS protocols.\n\n## Features\n\n- ✅ Download single files from URLs\n- ✅ Save files with custom names (-O flag)\n- ✅ Specify download directory (-P flag)\n- ✅ Background downloads with logging (-B flag)\n- ✅ Rate limiting (--rate-limit flag)\n- ✅ Multiple file downloads from input file (-i flag)\n- ✅ Website mirroring (--mirror flag)\n- ✅ Progress tracking with visual progress bar\n- ✅ Concurrent/asynchronous downloads\n\n## Requirements\n\n- Java 8 or higher\n- Internet connection for downloads\n\n## Installation\n\n1. Clone the repository:\n```bash\ngit clone \u003crepository-url\u003e\ncd wget-java\n```\n\n2. Compile the project:\n```bash\njavac -d build -cp \"lib/*\" src/**/*.java\n```\n\n3. Run the application:\n```bash\njava -cp \"build:lib/*\" Main \u003carguments\u003e\n```\n\n## Usage\n\n### Basic Download\n```bash\njava -cp \"build:lib/*\" Main https://example.com/file.zip\n```\n\n### Download with Custom Name\n```bash\njava -cp \"build:lib/*\" Main -O=custom_name.zip https://example.com/file.zip\n```\n\n### Download to Specific Directory\n```bash\njava -cp \"build:lib/*\" Main -P=/path/to/directory/ https://example.com/file.zip\n```\n\n### Background Download\n```bash\njava -cp \"build:lib/*\" Main -B https://example.com/file.zip\n# Output will be written to \"wget-log\"\n```\n\n### Rate Limited Download\n```bash\njava -cp \"build:lib/*\" Main --rate-limit=500k https://example.com/file.zip\n# Supports: k (kilobytes), M (megabytes)\n```\n\n### Multiple Files Download\n```bash\njava -cp \"build:lib/*\" Main -i=urls.txt\n# urls.txt contains one URL per line\n```\n\n### Mirror Website\n```bash\njava -cp \"build:lib/*\" Main --mirror https://example.com\n```\n\n### Mirror with Options\n```bash\n# Reject specific file types\njava -cp \"build:lib/*\" Main --mirror -R=jpg,gif,png https://example.com\n\n# Exclude directories\njava -cp \"build:lib/*\" Main --mirror -X=/js,/css https://example.com\n\n# Convert links for offline viewing\njava -cp \"build:lib/*\" Main --mirror --convert-links https://example.com\n```\n\n## Flags\n\n| Flag | Description | Example |\n|------|-------------|---------|\n| `-O` | Save file with custom name | `-O=myfile.zip` |\n| `-P` | Specify download directory | `-P=/downloads/` |\n| `-B` | Download in background | `-B` |\n| `-i` | Download multiple files from file | `-i=urls.txt` |\n| `--rate-limit` | Limit download speed | `--rate-limit=400k` |\n| `--mirror` | Mirror entire website | `--mirror` |\n| `-R` | Reject file types (with --mirror) | `-R=jpg,gif` |\n| `-X` | Exclude directories (with --mirror) | `-X=/js,/css` |\n| `--convert-links` | Convert links for offline (with --mirror) | `--convert-links` |\n\n## Output Format\n\n```\nstart at 2024-01-15 14:30:25\nsending request, awaiting response... status 200 OK\ncontent size: 1048576 [~1.0MB]\nsaving file to: ./example.zip\n 1.00 MiB / 1.00 MiB [===============================================] 100.00% 2.5 MiB/s 0s\n\nDownloaded [https://example.com/file.zip]\nfinished at 2024-01-15 14:30:26\n```\n\n## Project Structure\n\n```\nwget-java/\n├── src/\n│   ├── Main.java                 # Entry point\n│   ├── WgetApplication.java      # Main application logic\n│   ├── cli/                      # Command line parsing\n│   ├── download/                 # Core download functionality\n│   ├── network/                  # HTTP operations\n│   ├── mirror/                   # Website mirroring\n│   ├── concurrent/               # Multi-threading support\n│   ├── utils/                    # Utility functions\n│   └── models/                   # Data models\n├── test/                         # Unit tests\n├── lib/                          # External dependencies\n└── build/                        # Compiled classes\n```\n\n## Dependencies\n\n- Apache Commons CLI - Command line argument parsing\n- JSoup - HTML parsing for website mirroring\n- Apache Commons IO - File operations utilities\n\n## Building\n\n### Simple Compilation\n```bash\njavac -d build -cp \"lib/*\" src/**/*.java\n```\n\n### Running Tests\n```bash\njava -cp \"build:lib/*\" org.junit.runner.JUnitCore download.DownloaderTest\n```\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Add tests for new functionality\n5. Submit a pull request\n\n## Author\n\nHamza Maach","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhmaach%2Fwget","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhmaach%2Fwget","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhmaach%2Fwget/lists"}