Une bibliothèque Dart pour télécharger des vidéos depuis UQLoad.io, équivalente à la version Python.
- ✅ Téléchargement de vidéos UQLoad
- ✅ Récupération d'informations sur les vidéos (titre, résolution, durée, etc.)
- ✅ Barre de progression pour le téléchargement
- ✅ Support des callbacks de progression personnalisés
- ✅ Interface en ligne de commande
- ✅ Gestion robuste des erreurs
- ✅ Support Flutter-ready
Ajoutez cette dépendance à votre pubspec.yaml :
dependencies:
uqload_downloader_dart: ^1.0.0Ou installez-la directement avec :
dart pub add uqload_downloader_dartimport 'package:uqload_downloader_dart/uqload_downloader_dart.dart';
void main() async {
final downloader = UQLoad(
url: 'https://uqload.cx/embed-abc123def456.html',
outputDir: '/chemin/vers/dossier', // optionnel
outputFile: 'ma_video', // optionnel
);
// Télécharger la vidéo
await downloader.download();
}import 'package:uqload_downloader_dart/uqload_downloader_dart.dart';
void main() async {
// Créer une barre de progression
ProgressBar? progressBar;
void progressCallback(int downloaded, int total) {
progressBar ??= ProgressBar(total: total);
progressBar!.update(downloaded);
}
final downloader = UQLoad(
url: 'https://uqload.cx/embed-abc123def456.html',
onProgressCallback: progressCallback,
);
await downloader.download();
}final downloader = UQLoad(url: 'https://uqload.cx/embed-abc123def456.html');
final info = await downloader.getVideoInfo();
print('Titre: ${info.title}');
print('Résolution: ${info.resolution}');
print('Durée: ${info.duration}');
print('Taille: ${sizeOfFmt(info.size)}');# Télécharger une vidéo
dart run uqload_downloader_dart.dart -u "https://uqload.cx/embed-abc123def456.html"
# Avec nom de fichier personnalisé
dart run uqload_downloader_dart.dart -u "url" -o "ma_video" -d "/downloads"
# Afficher seulement les informations
dart run uqload_downloader_dart.dart -u "url" --info
# Aide
dart run uqload_downloader_dart.dart --helpUQLoad({
required String url, // URL de la vidéo UQLoad
String? outputFile, // Nom de fichier de sortie (optionnel)
String? outputDir, // Dossier de sortie (optionnel)
ProgressCallback? onProgressCallback, // Callback de progression (optionnel)
})Méthodes :
Future<VideoInfo> getVideoInfo()- Récupère les informations de la vidéoFuture<void> download()- Télécharge la vidéo
class VideoInfo {
final String url; // URL de téléchargement direct
final String title; // Titre de la vidéo
final String imageUrl; // URL de l'image de prévisualisation
final String? resolution; // Résolution (peut être null)
final String? duration; // Durée (peut être null)
final int size; // Taille du fichier en octets
final String type; // Type MIME
}// Formater la taille d'un fichier
String sizeOfFmt(int bytes) // "1.5 MiB"
// Valider une URL UQLoad
bool isUqloadUrl(String url)
// Nettoyer les caractères spéciaux
String removeSpecialCharacters(String input)Cette bibliothèque est compatible Flutter. Exemple d'usage dans une application Flutter :
import 'package:flutter/material.dart';
import 'package:uqload_downloader_dart/uqload_downloader_dart.dart';
class VideoDownloader extends StatefulWidget {
@override
_VideoDownloaderState createState() => _VideoDownloaderState();
}
class _VideoDownloaderState extends State<VideoDownloader> {
double _progress = 0.0;
void _downloadVideo(String url) async {
final downloader = UQLoad(
url: url,
onProgressCallback: (downloaded, total) {
setState(() {
_progress = downloaded / total;
});
},
);
await downloader.download();
}
@override
Widget build(BuildContext context) {
return Column(
children: [
LinearProgressIndicator(value: _progress),
ElevatedButton(
onPressed: () => _downloadVideo('https://uqload.cx/embed-abc123def456.html'),
child: Text('Télécharger'),
),
],
);
}
}Exécuter les tests :
dart testCette bibliothèque Dart offre les mêmes fonctionnalités que la version Python originale :
| Fonctionnalité | Python | Dart |
|---|---|---|
| Téléchargement UQLoad | ✅ | ✅ |
| Informations vidéo | ✅ | ✅ |
| Barre de progression | ✅ | ✅ |
| Callbacks personnalisés | ✅ | ✅ |
| CLI | ✅ | ✅ |
| Tests unitaires | ✅ | ✅ |
| Gestion d'erreurs | ✅ | ✅ |
MIT License - voir le fichier LICENSE pour plus de détails.