Skip to content

brandon0638/MiniSpotify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎵 Mini Spotify — Java Sockets

Application client-serveur style Spotify développée en Java avec Sockets et Swing.


📁 Structure du projet

MiniSpotify/
│
├── SpotifyServeur/          ← Serveur (à lancer en premier)
│   ├── src/
│   │   ├── MainServer.java       Port 5000 (clients) + 5001 (admins)
│   │   ├── ClientHandler.java    Gère 1 client par thread
│   │   ├── AdminHandler.java     Gère 1 admin par thread
│   │   └── MusiqueService.java   Accès aux fichiers MP3
│   ├── lib/
│   │   └── jlayer-1.0.1.jar
│   └── data/
│       ├── musiques/             ← Mettez vos MP3 ici !
│       └── temp_uploads/         ← Upload temporaire
│
├── SpotifyClient/           ← Interface client style Spotify
│   ├── src/
│   │   ├── client/
│   │   │   ├── SpotifyClientApp.java   Fenêtre principale
│   │   │   ├── ServerConnection.java   Connexion socket
│   │   │   ├── AudioPlayer.java        Lecteur audio JLayer
│   │   │   └── ui/
│   │   │       ├── SpotifyColors.java  Palette de couleurs
│   │   │       ├── RoundedButton.java  Boutons arrondis
│   │   │       ├── MusicCard.java      Carte d'album
│   │   │       ├── PlayerBar.java      Barre de lecture
│   │   │       ├── Sidebar.java        Navigation gauche
│   │   │       ├── MainPanel.java      Grille de musiques
│   │   │       ├── ConnectDialog.java  Dialogue connexion
│   │   │       ├── ProgressSlider.java Slider progression
│   │   │       ├── VolumeSlider.java   Slider volume
│   │   │       └── WrapLayout.java     Grille responsive
│   └── lib/
│       └── jlayer-1.0.1.jar  (+ flatlaf-*.jar si disponible)
│
├── SpotifyAdmin/            ← Interface admin (gestion musiques)
│   ├── src/
│   │   ├── admin/
│   │   │   ├── SpotifyAdminApp.java   Interface admin Swing
│   │   │   ├── AdminConnection.java   Connexion socket admin
│   │   │   └── ui/
│   │   │       └── AdminColors.java   Palette admin
│   └── lib/
│       └── jlayer-1.0.1.jar
│
├── run.bat                  ← Compile + lance (Windows)
└── run.sh                   ← Compile + lance (Linux/Ubuntu)

🚀 Démarrage rapide

Windows

run.bat          # Compile tout + menu interactif
run.bat serveur  # Lance directement le serveur
run.bat client   # Lance directement le client
run.bat admin    # Lance directement l'admin

Linux/Ubuntu

chmod +x run.sh
./run.sh          # Compile tout + menu interactif
./run.sh serveur  # Lance le serveur
./run.sh client   # Lance le client
./run.sh admin    # Lance l'admin

📡 Architecture réseau

PC Admin ──────────────────────────→ Port 5001 (AdminHandler)
                                            ↑
                                     SERVEUR (MainServer)
                                            ↑
PC Client 1 ────────────────────────→ Port 5000 (ClientHandler)
PC Client 2 ────────────────────────→ Port 5000 (ClientHandler)
PC Client N ────────────────────────→ Port 5000 (ClientHandler)

Plusieurs clients peuvent se connecter simultanément. Un ou plusieurs admins se connectent sur le port 5001.


🎵 Protocole socket client

Commande Description
LIST Reçoit la liste des MP3
PLAY <fichier> Reçoit le fichier MP3 en streaming
DOWNLOAD <fichier> Télécharge le fichier MP3
NEXT Musique suivante
PREVIOUS Musique précédente
SEEK <sec> Confirmation seek
QUIT Déconnexion

🔧 Protocole socket admin

Commande Description
LIST Reçoit COUNT N puis N noms
UPLOAD_START <nom> <taille> Upload un fichier MP3
REMOVE <fichier> Supprime un MP3
ADD <fichier> Déplace depuis temp_uploads/
EXIT Déconnexion

🎨 Fonctionnalités client

  • Bibliothèque musicale en grille de cartes style Spotify
  • Lecture streaming depuis le serveur via sockets
  • Play / Pause / Stop avec lecteur audio JLayer
  • Suivant / Précédent avec navigation cyclique
  • Liker des musiques (persistant en mémoire)
  • Section "Titres likés"
  • Recherche par nom de musique
  • Barre de progression et volume
  • Sidebar avec navigation (Accueil, Recherche, Bibliothèque, Likés)
  • Thème sombre style Spotify

🔑 Fonctionnalités admin

  • Voir toutes les musiques sur le serveur
  • Uploader des MP3 depuis son PC (bouton + drag & drop)
  • Supprimer une musique
  • Console de logs en temps réel
  • Barre de progression pour l'upload

📦 Librairies nécessaires

Fichier Usage Où le mettre
jlayer-1.0.1.jar Lecture MP3 SpotifyClient/lib/ et SpotifyServeur/lib/
flatlaf-*.jar Thème sombre natif (optionnel) SpotifyClient/lib/ et SpotifyAdmin/lib/

FlatLaf améliore l'aspect des composants Swing (boutons système, scrollbars, etc.). Téléchargez-le sur : https://www.formdev.com/flatlaf/


⚙️ Configuration

Pour changer les ports, modifiez MainServer.java :

public static final int CLIENT_PORT = 5000; // clients
public static final int ADMIN_PORT  = 5001; // admins

🐛 Résolution de problèmes

"Impossible de se connecter" → Vérifiez que le serveur est lancé en premier → Vérifiez l'IP et le port → Désactivez temporairement le pare-feu Windows

"Aucune musique disponible" → Placez des fichiers .mp3 dans SpotifyServeur/data/musiques/

Pas de son → Vérifiez que jlayer-1.0.1.jar est dans SpotifyClient/lib/

FlatLaf non trouvé → Normal, l'application fonctionne sans ; les thèmes natifs Swing sont utilisés

About

C'est un mini projet qui utilise socket avec java dont le theme est MiniSpotify. En gros c'est un streaming audio.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors