MyGo 云音乐
用 Go 与 MyGo 写成的第三方网易云音乐桌面客户端。原生界面,没有 WebView;边下边播,无损与 Hi-Res,逐字歌词与「律动」,刘海播放器。
Translation pending
تحميل الفيديوهات من يوتيوب وتيك توك وإنستجرام بجودة تصل إلى 8K
Translation pending
AI summary · website and README
MediaHTML · PythonGitHub @ali01113120579-pixelOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
A working full-stack video downloader: a single-file bilingual (Arabic/English) frontend and a FastAPI backend powered by yt-dlp.
Supported platforms: YouTube, TikTok, Instagram, Facebook, Pinterest, X/Twitter, Reddit, Dailymotion (anything yt-dlp supports for these domains).
Requirements: Python 3.10+, and ffmpeg installed on the system (required for merging video+audio streams and for MP3 audio extraction).
Copy the environment template and adjust as needed:Read the full README ↗A working full-stack video downloader: a single-file bilingual (Arabic/English) frontend and a FastAPI backend powered by yt-dlp.
universal-downloader/
├── frontend/
│ └── index.html # Single-page bilingual UI (HTML+CSS+JS, no build step)
├── backend/
│ ├── main.py # FastAPI app: info/download/audio endpoints
│ ├── requirements.txt
│ └── downloads/ # Temporary storage, auto-cleaned (created at runtime)
├── .env.example
└── README.md
Supported platforms: YouTube, TikTok, Instagram, Facebook, Pinterest, X/Twitter, Reddit, Dailymotion (anything yt-dlp supports for these domains).
Requirements: Python 3.10+, and ffmpeg installed on the system (required for merging video+audio streams and for MP3 audio extraction).
# Install ffmpeg (Debian/Ubuntu)
sudo apt-get install -y ffmpeg
# macOS
brew install ffmpeg
Then install the Python dependencies:
cd backend
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
Copy the environment template and adjust as needed:
cd ..
cp .env.example .env
cd backend
uvicorn main:app --reload --host 0.0.0.0 --port 8000
The API is now live at http://localhost:8000. Interactive API docs (Swagger UI) are auto-generated by FastAPI at http://localhost:8000/docs.
Confirm it's healthy:
curl http://localhost:8000/api/health
# {"status":"ok"}
frontend/index.html is a static file — no build tools needed. Two ways to serve it:
Option A — open directly:
Just open frontend/index.html in your browser. It calls the backend at http://localhost:8000 by default.
Option B — serve over HTTP (recommended, avoids file:// quirks):
cd frontend
python -m http.server 5500
# then open http://localhost:5500
If your backend runs on a different host/port, set window.API_BASE_URL before the page's script runs, e.g. add this in <head>:
<script>window.API_BASE_URL = "https://your-backend-domain.com";</script>
and set ALLOWED_ORIGINS in .env to your frontend's origin (not *) in production.
GET /api/healthHealth check.
{ "status": "ok" }
POST /api/infoFetch metadata for a video URL.
Request:
{ "url": "https://www.youtube.com/watch?v=..." }
Response:
{
"success": true,
"platform": "youtube",
"title": "...",
"thumbnail": "...",
"duration": 213,
"uploader": "...",
"view_count": 12345,
"formats": [
{ "format_id": "137", "height": 1080, "label": "1080p", "ext": "mp4", "filesize": 45312000, "fps": 30 }
],
"has_audio": true
}
POST /api/downloadDownload a specific video format (server merges best matching audio automatically).
Request:
{ "url": "https://www.youtube.com/watch?v=...", "format_id": "137" }
Response:
{
"success": true,
"job_id": "a1b2c3...",
"filename": "My Video.mp4",
"download_url": "/api/file/a1b2c3.../My%20Video.mp4",
"size_mb": 42.7
}
The frontend then fetches download_url (prefixed with the API base) to save the file.
POST /api/audioDownload audio only, converted to MP3 (192kbps).
Request:
{ "url": "https://www.youtube.com/watch?v=..." }
Response: same shape as /api/download.
GET /api/file/{job_id}/{filename}Serves the prepared file. job_id must be a 32-character hex UUID; path traversal is blocked by validating the resolved path stays inside the download directory.
All handled errors return:
{ "success": false, "error_code": "PRIVATE_VIDEO", "message": "This video is private and cannot be accessed." }
Possible error_code values: INVALID_URL, UNSUPPORTED_PLATFORM, FORBIDDEN_HOST, PRIVATE_VIDEO, LOGIN_REQUIRED, REGION_RESTRICTED, AGE_RESTRICTED, VIDEO_UNAVAILABLE, VIDEO_TOO_LONG, FILE_TOO_LARGE, RATE_LIMIT_EXCEEDED, SERVER_BUSY, DOWNLOAD_FAILED, SERVER_ERROR.
http:// and https:// URLs are accepted.localhost, 127.0.0.1, 0.0.0.0, and ::1 are explicitly blocked.RATE_LIMIT_SECONDS, default 3s) is enforced in-memory on every endpoint. For multi-process deployments, replace the in-memory dict with Redis.MAX_FILE_SIZE_MB and MAX_VIDEO_DURATION_SECONDS are enforced before and after download.MAX_CONCURRENT_DOWNLOADS caps simultaneous yt-dlp jobs.FILE_RETENTION_SECONDS (default 30 min) are deleted opportunistically on each incoming request. For production, also run a cron/scheduled task calling the same cleanup logic, or move to a background worker.ALLOWED_ORIGINS in .env to your actual frontend origin(s) in production; do not leave it as * when serving real traffic.This project does not rely on public CORS proxies or anonymous third-party "free" download APIs as its core mechanism — all downloads go through your own backend running yt-dlp, as required.
LOGIN_REQUIRED / PRIVATE_VIDEO error.yt-dlp upgraded (pip install -U yt-dlp) if extraction starts failing for a given site./api/download and /api/audio endpoints are synchronous (they block until the file is ready, then return a download link); the frontend shows an indeterminate progress bar rather than true byte-level progress. Adding WebSocket or Server-Sent-Events progress reporting is a natural next step.localStorage only; nothing is tracked server-side beyond the temp files.DOWNLOAD_FAILED.