edit: interactivité du player + import depuis json

This commit is contained in:
2026-03-22 01:52:22 +01:00
parent ed9f84f040
commit 9982670841
10 changed files with 89 additions and 8 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,17 @@
[
{
"track":"L'Inverse",
"artist":"Surprise",
"src":"./DATA/Son/1.mp3"
},
{
"track":"Yummy",
"artist":"Ayesha Erotica",
"src":"./DATA/Son/2.mp3"
},
{
"track":"M le Maudit",
"artist":"Mauvais Exemple",
"src":"./DATA/Son/3.mp3"
}
]
+4
View File
@@ -0,0 +1,4 @@
export async function loadAudioData() {
const aData = await fetch('/DATA/audioData.json');
return await aData.json();
}
@@ -1,22 +1,26 @@
<script setup>
import CloseIcon from '../assets/icons/close.svg'
import { loadAudioData } from '@/data/audioData.js'
</script>
<template>
<div id="playerContainer">
<div id="playerCreditStyle">
<p>Test-333</p>
<p>{{audioCredits}}</p>
</div>
<button type="button" class="iconBtnStyle">
<CloseIcon name="test" class="icon"/>
<button type="button" class="iconBtnStyle" @click="prevTrack">
<CloseIcon name="prev" class="icon"/>
</button>
<button type="button" class="iconBtnStyle">
<CloseIcon name="test" class="icon"/>
<button type="button" class="iconBtnStyle" @click="toggleAudio">
<CloseIcon name="toggle" class="icon"/>
</button>
<button type="button" class="iconBtnStyle">
<CloseIcon name="test" class="icon"/>
<button type="button" class="iconBtnStyle" @click="nextTrack">
<CloseIcon name="next" class="icon"/>
</button>
</div>
<audio ref="selectedAudio" @ended="nextTrack">
<source :src="audioFile" type="audio/mpeg">
</audio>
</template>
<style scoped>
@@ -89,7 +93,63 @@
<script>
export default {
name : 'MusicPlayer',
mounted(){
data(){
return{
audioData: [],
selectedSong:{
track: "",
artist: "",
src: ""
},
audioFile:"",
audioCredits:"",
trackCount: 0,
target: null,
isPlaying: false
}
},
methods:{
loadAudio(){
console.log(this.target);
this.target.pause();
this.selectedSong = this.audioData[this.trackCount];
this.audioFile = this.selectedSong.src;
this.audioCredits = this.selectedSong.artist +'-'+ this.selectedSong.track;
this.target.volume = 1;
this.target.load();
if(this.isPlaying){
this.target.play();
}
},
toggleAudio(){
if(this.isPlaying){
this.target.pause();
}else{
this.target.play();
}
this.isPlaying = !this.isPlaying;
},
prevTrack(){
this.trackCount -= 1;
if (this.trackCount<0){
this.trackCount = this.audioData.length - 1;
}
console.log('prev:', this.trackCount);
this.loadAudio();
},
nextTrack(){
this.trackCount += 1;
if (this.trackCount>=this.audioData.length){
this.trackCount = 0;
}
console.log('next:', this.trackCount);
this.loadAudio();
}
},
async mounted(){
this.audioData = await loadAudioData();
this.target = this.$refs.selectedAudio;
this.loadAudio();
console.log("Music player is loaded!");
}
};