A web-based tool that allows users to download multiple MP3 files from webpages that donβt offer a bulk download option. It automates identification, selection, and downloading of MP3 files, improving convenience and efficiency.
-
Frontend (Next.js)
- Users enter a webpage URL for scraping in a simple, responsive UI.
- Displays MP3 filenames with download options.
- Uses Axios for API requests to the backend.
-
Backend (Flask API)
- Flask Web Server: Manages scraping, downloads, and API responses.
- Web Scraper (Async Python + BeautifulSoup + Playwright):
- Extracts MP3 links from static & JavaScript-rendered content.
- Handles hidden JSON API responses, iframes, and dynamically loaded MP3s.
- Automated Batch Downloads:
- All detected MP3 files are checked for availability before listing.
- Users can select specific MP3s instead of downloading everything.
-
Basic Logging & Error Handling
- Handles broken links, timeouts, and missing MP3s gracefully.
- Implements retry logic for failed requests.
β Outcome: A functional asynchronous web scraper with batch MP3 downloads, frontend UI, and improved efficiency.
- Selectable Downloads:
- Users see a list of MP3 files with checkboxes.
- They can choose specific files instead of downloading everything.
- Rename Before Downloading:
- Users can rename files before saving.
- Default: Original filename from the webpage.
- Download Confirmation Dialog:
- Instead of automatic downloads, a prompt confirms selections before saving.
- Bulk Download as ZIP:
- If multiple MP3s are found, they are compressed into a ZIP file.
β Outcome: More user control, improved usability, and efficient file management.
- Save MP3 Links for Future Access (instead of instant downloads).
- Users can create "Crates"βcollections of MP3 links for later retrieval.
- Options:
- Download an entire crate later.
- Delete old crates when done.
- Upgrading UI/UX:
- Uses Next.js (App Router) for a dynamic, responsive frontend.
- Styled with Tailwind CSS for a modern look.
β Outcome: Users can save, manage, and retrieve MP3 files, making the tool more practical.
- Users send a link via WhatsApp, Telegram, or a chatbot.
- The bot scrapes MP3s and returns them as a download link.
- Progress bars & animations for file downloads.
- Real-time notifications on scraping & download status.
- Dark mode & themes for better aesthetics.
- Asynchronous Downloads (Celery + Redis) for faster performance.
- Rate Limiting & CAPTCHA to prevent abuse.
β Outcome: A smarter, more interactive MP3 scraper with chatbot integration.
- YouTube MP3 Scraping via
yt-dlp. - Support for podcast feeds (RSS parsing).
- SoundCloud & Bandcamp scraping (if allowed).
- Display MP3 file size & duration before downloading.
- Filter files by bitrate, name, or length.
- Premium Version for faster speeds & cloud storage.
- Affiliate links to legal MP3 sources.
- Ad placement for revenue.
- Deploy Flask API on Render or Railway.
- Host MP3 storage on AWS S3 or Cloudflare R2.
- Deploy Next.js frontend on Vercel.
- Uses
.env.localfor dynamic API URLs.
- Cloud Storage for MP3s: AWS S3 / Cloudflare R2 / Firebase Storage.
- Database Support for storing user preferences: PostgreSQL / Firebase Firestore.
β Outcome: A scalable, cloud-hosted MP3 scraping platform with efficient storage.
β
Converted API to support async scraping (asyncio, aiohttp).
β
Implemented caching for failed URLs (avoids unnecessary retries).
β
Fixed async errors (RuntimeError: Install Flask with 'async' extra).
β
Auto-delete temporary files after 5 minutes.
β
Dynamically generate correct file URLs for both local & deployed environments.
β
Refactored from React to Next.js (App Router).
β
Implemented Tailwind CSS for better UI/UX.
β
Fixed Next.js module.exports error in next.config.mjs.
β
Improved error handling & API response display.
β Outcome: Faster, more robust, and easier-to-maintain codebase.
- Open to feedback, feature requests, and contributors.
- Looking for developers, UI designers, and testers.
- CI/CD pipeline integration planned for smoother updates.
β
Finalize Backend Deployment (Render/Railway).
β
Deploy Frontend on Vercel.
β
Expand to Version 2 with user-controlled selections.
π Continue towards Version 3 & 4 with storage, automation, and UI/UX enhancements.
To run the project locally:
# 1. Clone the repository
git clone https://github.com/your-repo/mp3-scraper-webapp.git
# 2. Backend: Install dependencies & run Flask API
cd backend
pip install -r requirements.txt
python app.py
# 3. Frontend: Install dependencies & run Next.js app
cd frontend
npm install
npm run devπ Visit: http://localhost:3000 and start scraping MP3s!
Open an issue, send a pull request, or reach out in the discussion section.
β
Project is live & improving! π
Let me know if you need further updates or refinements. ππ΅