Vue d’ensemble du projet
Fichiers source
Cette page est générée à partir des fichiers source suivants :
Présentation générale du logiciel
res-downloader est une application de bureau multi-plateforme conçue pour le téléchargement de ressources multimédias à partir de diverses plateformes en ligne. Développée en Go avec le framework Wails, cette application combine un backend haute performance avec une interface utilisateur moderne et intuitive. Le projet se positionne comme un outil de capture réseau accessible au grand public, simplifiant des opérations traditionnellement réservées aux outils techniques comme Fiddler ou Charles.
L'application se distingue par sa capacité à intercepter automatiquement le trafic réseau via un proxy local, filtrant et identifiant les ressources téléchargeables telles que les vidéos, fichiers audio, images, flux m3u8 et diffusions en direct. Son interface épurée permet aux utilisateurs non techniques de récupérer facilement des contenus de plateformes populaires comme WeChat Video, Douyin, Kuaishou, Xiaohongshu, KuGou Music et QQ Music.
README.md:1-32 présente la structure générale du projet avec ses badges de statistiques GitHub et ses fonctionnalités principales. README-EN.md:17-28 détaille les caractéristiques techniques incluant la compatibilité Windows/macOS/Linux et le support de multiples types de ressources.
Caractéristiques quantifiables
| Métrique | Valeur |
|---|---|
| Plateformes supportées | 7+ (WeChat, Douyin, Kuaishou, Xiaohongshu, KuGou, QQ Music, Mini Programs) |
| Types de ressources | 5+ (vidéo, audio, image, m3u8, live stream) |
| Systèmes d'exploitation | 3 (Windows, macOS, Linux) |
| Version actuelle | 3.1.3 |
| Licence | Apache 2.0 |
Architecture technique et pile technologique
Stack technologique principal
Le projet repose sur une architecture hybride combinant Go pour le backend et des technologies web modernes pour le frontend. Le framework Wails sert de pont entre ces deux mondes, permettant de créer des applications desktop natives avec des interfaces web.
| Composant | Technologie | Version/Rôle |
|---|---|---|
| Backend | Go | Logique métier, proxy HTTP, capture réseau |
| Framework Desktop | Wails v2 | Pont Go-Frontend, gestion fenêtre native |
| Frontend | TypeScript/Vue.js | Interface utilisateur réactive |
| Build | npm | Gestion des dépendances frontend |
main.go:28-67 illustre le point d'entrée principal avec l'initialisation de l'application Wails, la configuration de la fenêtre (dimensions 1280x800, minimum 960x600), et la gestion spécifique du menu macOS. wails.json:1-20 définit les métadonnées du projet incluant le nom "res-downloader", la version 3.1.3, et les commandes de build frontend.
Architecture modulaire
正在加载图表渲染器...
Explication de l'architecture :
- Frontend Layer : Interface réactive gérée par Vue.js avec TypeScript, utilisant un routeur SPA et des stores pour la gestion d'état
- Wails Runtime : Couche d'interopérabilité assurant la communication bidirectionnelle entre Go et le frontend via des bindings
- Backend Go : Modules core gérant le proxy HTTP (port 8899), la capture de trafic et le téléchargement de ressources
- Ressources Externes : Les plateformes cibles dont le trafic est intercepté par le proxy local
Preuve de l'initialisation Wails : main.go:43-55 montre la configuration complète avec AssetServer, Menu, et les dimensions de fenêtre.
Fonctionnalités et cas dusage
Types de ressources supportées
L'application excelle dans la capture de différents formats multimédias à travers son mécanisme de proxy transparent :
| Type | Extensions/Protocoles | Cas d'usage typique |
|---|---|---|
| Vidéo | MP4, WebM, MOV | Téléchargement vidéos WeChat, Douyin |
| Audio | MP3, M4A, FLAC | Musique depuis KuGou, QQ Music |
| Streaming | M3U8, HLS | Vidéos streaming, replay TV |
| Live | RTMP, FLV | Captures diffusions en direct |
| Images | JPG, PNG, WebP | Albums photos, avatars |
README-EN.md:48-77 détaille le processus d'utilisation en 5 étapes : installation du certificat, activation du proxy, sélection des types de ressources, ouverture du contenu cible, et consultation des ressources capturées.
Mécanisme de capture par proxy
Le fonctionnement repose sur l'interception du trafic HTTP/HTTPS via un proxy local configuré sur 127.0.0.1:8899. Ce mécanisme permet de :
- Intercepter toutes les requêtes réseau des applications locales
- Filtrer les URLs correspondant aux patterns de ressources multimédias
- Extraire les métadonnées (taille, type, nom)
- Présenter une liste téléchargeable à l'utilisateur
正在加载图表渲染器...
Points clés du flux :
- Initialisation : L'utilisateur active le proxy qui écoute sur le port 8899 (configuré par défaut)
- Interception : Le trafic des applications locales passe par le proxy de manière transparente
- Filtrage intelligent : Seules les ressources correspondant aux critères (type MIME, taille, extension) sont retenues
- Téléchargement optimisé : Les ressources identifiées peuvent être téléchargées avec des gestionnaires externes recommandés
Preuve du principe de fonctionnement : README-EN.md:93-104 explique que l'outil capture le trafic via proxy local, similaire à Fiddler/Charles mais avec une interface simplifiée pour le grand public.
Plateformes compatibles
L'application supporte une large gamme de plateformes chinoises et internationales :
- Réseaux sociaux vidéo : WeChat Video (视频号), Douyin (抖音), Kuaishou (快手), Xiaohongshu (小红书)
- Plateformes musicales : KuGou Music (酷狗音乐), QQ Music (QQ音乐)
- Mini Programs : Applications légères WeChat
- Contenu web général : Navigateurs, applications web
Gestion des problèmes courants
| Problème | Solution |
|---|---|
| Téléchargement lent/échoué | Utiliser Neat Download Manager ou Motrix |
| Vidéos WeChat cryptées | Cliquer "Decrypt Video" après téléchargement |
| Absence d'interception | Vérifier proxy système : 127.0.0.1:8899 |
| Pas d'internet après fermeture | Désactiver manuellement le proxy système |
Modules principaux et implémentation
Module Core - Initialisation et configuration
Le module core constitue le point d'entrée de l'application, responsable de l'initialisation de Wails et de la configuration de l'environnement d'exécution.
Responsabilités :
- Chargement des assets et configuration JSON
- Création des bindings Go-Frontend
- Configuration de la fenêtre native (dimensions, frameless sur Windows/Linux)
- Gestion du cycle de vie (startup, shutdown)
Structure de données d'entrée :
go1type AppConfig struct { 2 AppName string 3 Version string 4 LockFile string 5 // champs additionnels depuis wails.json 6}
Appel critique : main.go:31-32 montre l'instanciation de l'application via core.GetApp() et la création des bindings via core.NewBind().
Module Menu - Interface native
Le module menu gère les menus natifs de l'application, avec une implémentation spécifique pour macOS.
Responsabilités :
- Création du menu application (macOS uniquement)
- Menu Edit (copier, coller, sélectionner)
- Menu Window (gestion fenêtres)
Condition d'activation : main.go:33-40 montre que les menus ne sont ajoutés que si runtime.GOOS == "darwin".
Module AssetServer - Serveur de ressources
Le module AssetServer fournit les fichiers statiques du frontend et implémente un middleware personnalisé.
Responsabilités :
- Service des fichiers HTML/CSS/JS
- Middleware pour traitement des requêtes
- Gestion du cache et des headers
Configuration : main.go:52-55 configure l'AssetServer avec les assets embarqués et un middleware personnalisé core.Middleware.
Module Frontend - Interface utilisateur
Le frontend est une application Vue.js avec TypeScript, organisée selon une architecture modulaire.
Structure des répertoires :
frontend/src/
├── main.ts # Point d'entrée Vue
├── router/index.ts # Configuration du routeur
└── stores/index.ts # Gestion d'état (Pinia/Vuex)
Note : Les fichiers frontend/src/main.ts, frontend/src/router/index.ts, et frontend/src/stores/index.ts n'ont pas de contenu visible dans les sources fournies - nécessite confirmation du contenu réel pour analyse détaillée.
Licence et aspects juridiques
Licence Apache 2.0
Le projet est distribué sous la licence Apache 2.0, l'une des licences open source les plus permissives et reconnues dans l'industrie.
Droits accordés :
- Reproduction et distribution du code source
- Création d'œuvres dérivées
- Utilisation commerciale
- Sous-licenciement
Conditions obligatoires :
- Conservation des notices de copyright
- Inclusion de la licence complète
- Mention des modifications apportées
- Respect des notices de marque déposée
LICENSE:1-88 définit les termes complets de la licence incluant les définitions, droits de copyright, et conditions de redistribution.
Limitation de responsabilité
La licence inclut des clauses de protection légale importantes pour les contributeurs et utilisateurs.
| Aspect | Protection |
|---|---|
| Garantie | Fourni "en l'état", sans garantie d'aucune sorte |
| Responsabilité | Aucune responsabilité pour dommages directs/indirects |
| Support | Aucune obligation de support technique |
LICENSE:138-175 détaille les clauses de non-responsabilité et les limitations de garantie, protégeant les contributeurs contre les réclamations légales.
Avertissement d'utilisation
Le README inclut un avertissement explicite concernant l'usage de l'application :
This software is for educational and research purposes only. Commercial or illegal use is strictly prohibited.
Cette mise en garde est particulièrement pertinente compte tenu de la nature de l'outil qui intercepte le trafic réseau et permet le téléchargement de contenus potentiellement protégés par des droits d'auteur.
Guide de lecture du rapport
正在加载图表渲染器...
Ordre recommandé de lecture :
- Vue d'ensemble (page actuelle) : Introduction générale et architecture haut niveau
- Architecture : Détails des composants et interactions
- Fonctionnalités : Guide pratique d'utilisation
- API & Bindings : Documentation technique pour développeurs
- Déploiement : Instructions de build et distribution
Configuration et métadonnées du projet
Fichier wails.json
Le fichier de configuration Wails définit les paramètres essentiels du projet :
json1{ 2 "name": "res-downloader", 3 "outputfilename": "res-downloader", 4 "frontend:install": "npm install", 5 "frontend:build": "npm run build", 6 "frontend:dev:watcher": "npm run dev", 7 "frontend:dev:serverUrl": "auto", 8 "info": { 9 "companyName": "res-downloader", 10 "productName": "res-downloader", 11 "productVersion": "3.1.3", 12 "copyright": "Copyright © 2023" 13 } 14}
wails.json:1-20 contient la configuration complète avec les métadonnées de version et les commandes de build frontend.
Paramètres de l'application
| Paramètre | Valeur | Description |
|---|---|---|
| Largeur fenêtre | 1280px | Largeur par défaut |
| Largeur min | 960px | Redimensionnement minimum |
| Hauteur fenêtre | 800px | Hauteur par défaut |
| Hauteur min | 600px | Redimensionnement minimum |
| Frameless | true (sauf macOS) | Barre de titre personnalisée |
| Port proxy | 8899 | Port d'écoute du proxy HTTP |
Preuve de configuration : main.go:44-49 définit les dimensions et le mode frameless conditionnel selon l'OS.
Dépendances et écosystème
Dépendances backend (Go)
Le fichier go.mod n'a pas de contenu visible dans les sources fournies. Nécessite confirmation pour lister les dépendances Go exactes.
Dépendances frontend
Le fichier frontend/package.json n'a pas de contenu visible dans les sources fournies. Nécessite confirmation pour lister les dépendances npm exactes.
Outils recommandés
L'auteur suggère l'utilisation d'outils complémentaires pour optimiser l'expérience :
| Outil | Usage | Lien |
|---|---|---|
| m3u8play | Prévisualisation M3U8 | m3u8play.com |
| m3u8-down | Téléchargement M3U8 | m3u8-down.gowas.cn |
| OBS | Enregistrement live | obsproject.com |
| Neat Download Manager | Téléchargement optimisé | neatdownloadmanager.com |
| Motrix | Gestionnaire de téléchargement | motrix.app |
Résumé des capacités clés
res-downloader représente une solution complète de capture et téléchargement de ressources multimédias avec les caractéristiques suivantes :
- Architecture moderne : Go + Wails + Vue.js pour performance et ergonomie
- Multi-plateforme : Support Windows, macOS, Linux natif
- Polyvalence : 5+ types de ressources, 7+ plateformes supportées
- Accessibilité : Interface simplifiée pour utilisateurs non techniques
- Extensibilité : Architecture modulaire permettant l'ajout de nouvelles plateformes
- Légalité : Licence Apache 2.0 avec avertissement d'utilisation responsable
Le projet se positionne comme un pont entre les outils techniques complexes (Fiddler, Charles) et les besoins du grand public, démocratisant l'accès à la capture de ressources réseau.
