iArt.ai
AI 모션 그래픽 소프트웨어, 누구나 사용할 수 있는 After Effects 대안, 텍스트 프롬프트로 몇 분 안에 애니메이션·설명 영상 제작
MeTube Mobile은 휴대폰에서 링크를 대기열에 넣고, 서버에 파일을 보관해 스트리밍하거나 기기로 가져와 서버가 스스로 정리하도록 합니다
Queue a link from your phone, then keep the file on your server and stream it, or pull it to the device and let the server clean itself up.
미디어Dart · KotlinGitHub @sagheerys온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
Two Android clients (Lite + Super) for a self-hosted MeTube server — Flutter monorepo, Arabic/English, RTL-first. Unofficial.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Two Android apps for a self-hosted MeTube
server — the yt-dlp web downloader you already run on your NAS or homelab.
Queue a link from your phone, watch the download happen, then keep the file on
the server and stream it, or pull it to the device and let the server clean
itself up. MeTube Super can also follow a channel: your server downloads
each new video by itself, and the app tells you when it arrives. Written in
Flutter as one monorepo, in Arabic and English, and free software under the
GPL.README 전문 보기 ↗English · العربية
Two Android apps for a self-hosted MeTube server — the yt-dlp web downloader you already run on your NAS or homelab. Queue a link from your phone, watch the download happen, then keep the file on the server and stream it, or pull it to the device and let the server clean itself up. MeTube Super can also follow a channel: your server downloads each new video by itself, and the app tells you when it arrives. It can also search inside your clips, finding what was said in them and not only their titles. Written in Flutter as one monorepo, in Arabic and English, for phones and tablets alike, and free software under the GPL.
Unofficial. This project is not affiliated with, endorsed by, or connected to the MeTube project or its authors, nor to yt-dlp. It is an independent client that talks to a MeTube server over its HTTP API. The name "MeTube" is used only to say what these apps connect to.
| MeTube Lite | MeTube Super | |
|---|---|---|
| Made for | family and friends who just want the file | the person who runs the server |
| After a download completes | pulls it to the device, then deletes it from the server | keeps it on the server |
| Library | a scan of the local folder | /history + the local index, merged into one list |
| Playback | local files | streaming from the server and local files |
| Exclusive | an optional Wi-Fi-only rule, server cleanup | channel subscriptions, search inside clips, subtitles over the video, tags, batch downloads, "make available offline", server switching |
Both apps share the same core, media and design packages, and both ship in Arabic and English with a right-to-left-first layout.
Getting a link in. Paste, or let the add button notice a link already on the clipboard; share to the app from YouTube, TikTok or anything else — it works from a cold start and takes several links at once. Links are recognised and normalised across YouTube, X, Instagram, TikTok, Facebook, Vimeo, Reddit, Twitch clips and SoundCloud, short links are followed (never downgrading HTTPS to HTTP), and a playlist link opens the batch screen instead of queueing one item.
Downloading. Four stages — hand the link to the server, follow its progress, pull the file, then apply the app's delete policy — with live percentages, one download at a time so a small server is not swamped, clean cancellation that removes the partial file and tidies the server, three retries with backoff for a dropped connection, and errors named rather than swallowed (a platform asking for a login says so). Progress, completion and failure each get a notification.
Batch downloads. A playlist arrives as a screen: every item with its duration, select some or all, the total of what you picked, video or audio, and one quality for the batch.
The library. Search by title; sort by date, name or size and keep the choice; switch between rich cards and a compact list; pull to refresh; filter video against audio; long-press for multi-select to delete, share, or add to a playlist in one go. Thumbnails come from a disk and memory cache, are generated from local video, read from the cover embedded in audio files, or fetched for SoundCloud.
Playing. Three shapes — immersive portrait, landscape with full controls, and an audio mode with artwork — plus an in-player queue, autoplay, repeat one or all, shuffle, a playback speed that is remembered, resume from where you stopped, and the screen kept awake. Audio keeps playing in the background with a media notification and lock-screen controls, a mini player sits above the main screens, and leaving the video player offers to continue the same item as audio from the same second.
Shorts. Any portrait clip of three minutes or less opens in a swipeable full-screen lane that skips over everything that is not a short, with a tap to pause, a double tap to favourite, and its own chip in the library.
Tablets. On a tablet, upright or on its side, both apps use the room instead of stretching the phone layout: navigation moves to a side rail, settings open in two panes, and the library's views spread into columns, with the list shown as a table. Held sideways, a "Now playing" panel sits beside the library, and a video plays beside its details and queue. Small 8-inch tablets count too; phones keep their own layout.
Favourites and playlists. A heart on every card; playlists you create, reorder by dragging, play in order or shuffled; and smart playlists that keep themselves — favourites, latest additions, and (in Super) everything available offline.
Settings and safety. Settings open on a short home page in three groups (server, app, data), each row showing the setting as it stands. Default quality, theme (system, light or dark), and language — Arabic or English, matched to the phone on first launch. Backups are plain text holding no secret, written by themselves after every change, keeping the last seven by date, restorable by picking a date, and exportable; the three older encrypted formats can still be read. A diagnostic log viewer can be shared only after URLs, IP addresses, credentials and storage paths are stripped out.
Updating itself. Each app checks this repository for its own newer release, downloads the APK, and hands it to the system installer. Nothing installs without your confirmation, and a version can be skipped. The first launch after an update shows what is new in it, and Settings → Updates opens that again at any time.
/history with the local index
into one library keyed by canonical URL, with filters for everything,
what is offline, and what is only on the server.On a tablet — held sideways, the library with the "Now playing" panel beside it; upright, the library in two columns:
Search inside clips (MeTube Super): a word found inside three clips, the transcript following playback, and the same search at night:
Subscriptions — the channels your server follows, following a new one, and the notice when their videos arrive:
The players — the audio player, the up-next queue at night, and the lane for portrait clips:
The libraries — MeTube Lite by day and by night, and MeTube Super at night with the mini player:
| Playlists | A playlist | Batch selection |
|---|---|---|
The library shown is invented for these screenshots — the titles, the channels and the covers are all generated, and no real server or account appears in them. Every screen, one by one, is on the project page.
Signed APKs are published on the releases page, one per app. Android will ask you to allow installing from this source the first time; that permission is per application, and you can withdraw it afterwards.
Every release carries one file per app —
the newest is here,
and the badge above names its version. MeTube-Lite-<version>.apk is for
family and friends, MeTube-Super-<version>.apk for the server owner's. They
are separate apps and install side by side, and since 2.0.0 each one checks
for its own successor and can install it for you.
Both apps can update themselves: Settings → Updates → Check for updates fetches the newest release and hands the APK to the system installer. Nothing is installed without you confirming it.
Or build from source, below.
compileSdk 37; the minimum SDK follows the Flutter toolchain default.^3.13.0) to build from source.git clone https://github.com/sagheerys/metube-mobile.git
cd metube-mobile
flutter pub get
# debug
cd apps/metube_super && flutter run # or apps/metube_lite
# release
cd apps/metube_super && flutter build apk --release
Release builds are signed from apps/<app>/android/key.properties, which is
not in this repository. Create your own keystore, or build debug.
On first launch, open Settings and enter your server URL (plus username and password if your server is behind basic auth).
packages/mt_core pure Dart: MeTube API client, download engine, storage,
backup, logging — no Flutter imports
packages/mt_media playback: audio_service handler, playback sources, position
and state stores, mini player
packages/mt_ui the "Wahaj" design system: tokens, themes, shared widgets,
localization (ar/en)
apps/metube_lite the edition for family and friends
apps/metube_super the server-owner edition
docs/ the repository map, the server contract and the server setup
Dependency direction is one-way: apps → mt_media → mt_core. mt_ui knows
nothing about the server, and mt_core contains no Flutter code.
cd packages/mt_core && dart test # 362
cd packages/mt_media && flutter test # 115
cd packages/mt_ui && flutter test # 44
cd apps/metube_lite && flutter test # 69
cd apps/metube_super && flutter test # 121
712 tests at the time of writing, and flutter analyze is expected to be
clean. Fixtures come from real server JSON, and every fixed defect leaves behind
a test that fails on the old code.
The UI has no hardcoded strings: everything lives in
packages/mt_ui/lib/src/l10n/app_en.arb and app_ar.arb.
Adding a language is two steps — a new app_<code>.arb next to those, and one
line in packages/mt_ui/lib/src/l10n/language_names.dart giving the language's
name in its own language. The settings screen builds its list from
supportedLocales, so a new language appears by itself. Run
cd packages/mt_ui && flutter gen-l10n afterwards.
Translations are very welcome — see CONTRIBUTING.md.
| docs/ARCHITECTURE.md | The map of the repository: the packages, the rules that hold them together, where a feature belongs, how to run the tests. English first, with an Arabic version below it. |
| docs/SERVER-API.md | The contract with the MeTube server: every request and response, the local storage schema, and the traps that each cost a debugging session. Read it before touching networking or storage code. |
| docs/SERVER-SETUP.md | How to configure the server, the four settings whose absence looks like an app defect, and how to reach it safely from outside. |
| CONTRIBUTING.md | What a change has to satisfy before it lands. |
| CHANGELOG.md | What changed, release by release. |
| SECURITY.md | Reporting a vulnerability. |
The project's working language is Arabic; the documents are written in English, and issues and pull requests are welcome in either language.
pubspec.yaml.GPL-3.0 — Copyright (C) 2026 Yasir Sagheer.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. It is distributed without any warranty; see the license for details.