Gestor de vídeo/tareas de nivel de escritorio (interfaz de usuario Flutter + backend Python en repositorio separado)
Vidra es un gestor de vídeo y tareas para escritorio que combina una interfaz de usuario Flutter con un backend Python mantenido en un repositorio separado.
- Cliente moderno – Una aplicación de escritorio Flutter con temas y localización para más de 150 idiomas.
- Backend robusto y ligero – Backend Python separado, con dependencias dinámicas para descargas y manejo de cambios mediante deltas.
Vidra se distribuye a través de GitHub Releases. Cada versión incluye instaladores para diferentes plataformas.
| Plataforma | Instalador |
|---|---|
Windows |
vidra-windows.exe |
Linux |
vidra-linux.AppImage vidra-linux.deb |
Android |
vidra-android.apkvidra-android-arm64-v8a.apkvidra-android-x86_64.apk |
macOS |
Próximamente |
Cada release incluye los siguientes archivos para verificar la integridad y autenticidad de los instaladores:
SHA2-256SUMS,SHA2-512SUMS: checksums.SHA2-256SUMS.sig,SHA2-512SUMS.sig: GPG signatures for the checksums.
Estos recursos se distribuyen bajo la licencia LICENSE y pueden incluir componentes bajo otras licencias enumeradas en THIRD_PARTY_LICENSES.md.
graph TD
A[Cliente Flutter] <-->|Peticiones HTTP| B[Backend Python]
subgraph serious_python
B <--> C[yt-dlp]
C <--> D[FFmpeg/ffprobe]
C --> E[quickjs]
C --> F[yt-dlp-ejs]
end
Para ejecutar Vidra, debe proporcionar ffmpeg y ffprobe por su cuenta.
Fuente recomendada: https://github.com/chomusuke-mk/vidra-ffmpeg
Coloca los archivos con los nombres exactos en las siguientes ubicaciones:
| Plataforma | Ubicación esperada dentro del proyecto |
|---|---|
| Windows | windows/ffmpeg.exe windows/ffprobe.exe |
| Linux | linux/ffmpeg linux/ffprobe |
| Android | android/app/src/main/jniLibs/<abi>/libffmpeg.so android/app/src/main/jniLibs/<abi>/libffprobe.so |
<abi>debe ser uno dearm64-v8a, ox86_64.
Para ejecutar Vidra, debe proporcionar quickjs por su cuenta.
Fuente recomendada: https://github.com/chomusuke-mk/vidra-quickjs
Coloca los archivos con los nombres exactos en las siguientes ubicaciones:
| Plataforma | Ubicación esperada dentro del proyecto |
|---|---|
| Windows | windows/quickjs.exe windows/quickjs.exe |
| Linux | linux/quickjs linux/quickjs |
| Android | android/app/src/main/jniLibs/<abi>/libquickjs.so android/app/src/main/jniLibs/<abi>/libquickjs.so |
<abi>debe ser uno dearm64-v8a, ox86_64.
flutter pub get
dart run flutter_launcher_icons # opcional, regenera los iconosflutter run -d windows
flutter run -d linux
flutter run -d android-
Asegúrate de que el paquete backend dentro de
app/app.zipesté actualizado:dart run serious_python:main package app/src \ -r -r -r app/requirements.txt \ -p Windows --verbose \ --output app/app.zip
El backend se distribuye en https://github.com/chomusuke-mk/vidra-backend y este repositorio solo empaqueta la interfaz Flutter junto con los binarios y dependencias que se descargan al ejecutar la aplicación.
-
Copia
app/app.zipy el hash generado (app/app.zip.hash) en la lista de recursos de Flutter (ya declarada enpubspec.yaml). -
Compila el artefacto de destino (
flutter build windows,flutter build macos, etc.).El repositorio incluye tareas de VS Code (
Serious Python: Empaquetar <plataforma> App,Compilar APK de Android (Flutter)) que encapsulan los mismos comandos.
- Las traducciones se encuentran en
i18n/locales/<código ISO>/. Utilice los scripts auxiliares entool/(por ejemplo,auto_translate_locales.py,generate_translation_progress.py) para mantener los idiomas sincronizados. - El directorio
assets/contiene iconos, animaciones y plantillas.env. Todos los recursos referenciados se declaran enpubspec.yaml.
| Scope | Command |
|---|---|
| Flutter widget/unit tests | flutter test |
| Integration smoke test | flutter test --tags integration (tests under test/ and test/backend/) |
Use VIDRA_SERVER_DATA to point tests at a temporary directory so logs are isolated per run.
docs/system-architecture.md– end-to-end overview of the Flutter client, backend, sockets, and packaging flow.docs/client-flows.md– English descriptions of UI flows mapped to REST/WebSocket contracts.docs/typed-architecture.md– explains the typed model refactor and state layers inside the backend.docs/backend-job-lifecycle.md– canonical reference for job states, transitions, and related endpoints.docs/configuration-and-ops.md– environment variables, logging targets, and ops runbooks.docs/troubleshooting.md– symptom → cause → fix catalog for packaging, sockets, and localization failures.temp/native-crash.txt– crash dump location; include it with bug reports.- Structured logs are written to
<VIDRA_SERVER_DATA>/release_logs.txtautomatically at runtime.
- Read
CONTRIBUTING.mdfor coding standards, branching strategy, and review expectations. - Vulnerability disclosures go through
SECURITY.md. - Please keep
githistory clean and avoid force-pushing tomain.
- Project licensing follows the root
LICENSEfile. - Every third-party dependency (Python + Flutter), incluyendo las descargas dinámicas
yt-dlpyyt-dlp-ejs, is documented in THIRD_PARTY_LICENSES.md, with verbatim license texts stored underthird_party_licenses/for inclusion in installers. - Remember that
mutagenis GPL-2.0-or-later; distributing Vidra to end users requires shipping the corresponding backend sources to satisfy GPL obligations.