edit: lien entre player & message + mastodon

This commit is contained in:
2026-04-01 09:42:27 +02:00
parent 54731b6721
commit eaf1e1bbcb
20 changed files with 125 additions and 95 deletions
Binary file not shown.

Before

Width:  |  Height:  |  Size: 884 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

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.
+1 -15
View File
@@ -1,17 +1,3 @@
[ [
{ "vega"
"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"
}
] ]
@@ -1,38 +0,0 @@
[
{
"title": "Atelier Meetup 1/3",
"date": "21/03",
"content": "Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. \n\n Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.",
"like": 0,
"isLiked": false,
"going": 0,
"isGoing": false,
"wasRead": false,
"isSelected": false,
"isEvent": true
},
{
"title": "Atelier Meetup 1/3",
"date": "21/03",
"content": "Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. \n\n Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.",
"like": 0,
"isLiked": false,
"going": 0,
"isGoing": false,
"wasRead": false,
"isSelected": false,
"isEvent": true
},
{
"title": "Atelier Meetup 1/3",
"date": "21/03",
"content": "Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos. \n\n Lorem ipsum dolor sit amet consectetur adipiscing elit. Quisque faucibus ex sapien vitae pellentesque sem placerat. In id cursus mi pretium tellus duis convallis. Tempus leo eu aenean sed diam urna tempor. Pulvinar vivamus fringilla lacus nec metus bibendum egestas. Iaculis massa nisl malesuada lacinia integer nunc posuere. Ut hendrerit semper vel class aptent taciti sociosqu. Ad litora torquent per conubia nostra inceptos himenaeos.",
"like": 0,
"isLiked": false,
"going": 0,
"isGoing": false,
"wasRead": false,
"isSelected": false,
"isEvent": true
}
]
Binary file not shown.

Before

Width:  |  Height:  |  Size: 580 KiB

+1 -1
View File
@@ -225,7 +225,7 @@ canvas {
} }
/*==================Reaction Bar for indi pannels*/ /*==================Reaction Bar for indi pannels*/
.reactBar{ .reactBar{
margin-left: -16.1%; margin-left: 3.33%;
width: 77%; width: 77%;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
+55 -3
View File
@@ -1,4 +1,56 @@
export async function loadAudioData() { function inlineContent(str){
const aData = await fetch('./DATA/audioData.json'); let data = str.split("<br>");
return await aData.json(); let content = "";
for (let line of data){
content += line + '\n';
}
return content
}
function creditsContent(str){
let data = str.split("<br>")
let credits = data[0].split(" - ");
return {
track: credits[0],
artist: credits[1]
}
}
export async function loadAudioData() {
const audioRes = await fetch('./DATA/audioData.json');
const aData = await audioRes.json();
const res = await fetch("https://pouet.drags-nerds.net/api/v1/timelines/public?local=true&limit=40");
if(!res.ok) throw new Error(`Server responded with ${res.status} ${res.statusText}`);
const pouets = await res.json();
const filtered = pouets.filter(p => aData.some(user => p.account.display_name === user));
console.log(filtered);
const files = {};
for (const user of aData) {
files[user] = [];
}
let audioFiles = [];
for (const pouet of filtered){
//ignorer les PJ autres que audio
if (pouet.media_attachments?.length > 0 &&
!pouet.media_attachments[0].type.includes('audio')) {
continue;
}
if(pouet.media_attachments?.length > 0){
let credits = creditsContent(pouet.content);
let entry = {
track: credits.track,
artist: credits.artist,
src: pouet.media_attachments[0].url
}
audioFiles.push(entry);
}
}
console.log(audioFiles);
return audioFiles
} }
+50 -9
View File
@@ -1,10 +1,51 @@
//ecrire les messages dans /public/DATA/msgData.json avec 6 paramètres : title, content, likes, going, isSelected, isEvent function idAndDate(str){
// like & going à 0 par défaut (fonctionnel) let data = str.split("T");
// isLiked & isGoing local pour cette session: false par default (fonctionnel) let date = data[0].split("-");
// isSelected: false par défault (fonctionnel) return {
// wasRead: false par défault (fonctionnel) date: date[2] +'/'+ date[1],
// isEvent: true si le message concerne un évènement id: date[2] + date[1]
export async function loadMsgData() { }
const data = await fetch('./DATA/msgData.json'); }
return await data.json();
function titleAndContent(str){
let data = str.split(" :");
let title = data[0];
let contentData = data[1].split("<br>").filter(e => e);
let content = "";
for(let line of contentData){
content += line + '\n';
}
return {
title: title,
content: content
}
}
export async function loadMsgData() {
const res = await fetch("https://pouet.drags-nerds.net/api/v1/timelines/public?local=true&limit=40");
if(!res.ok) throw new Error(`Server responded with ${res.status} ${res.statusText}`);
const pouets = await res.json();
const filtered = pouets.filter(p => p.account.display_name === 'Drags and Nerds /Live');
console.log(filtered);
let msgContent = [];
for (let pouet of filtered){
let textInfos = titleAndContent(pouet.content);
let dateInfos = idAndDate(pouet.created_at);
let entry = {
title: textInfos.title,
date: dateInfos.date,
content: textInfos.content,
like: pouet.favourites_count,
isLiked: false,
wasRead: false,
isSelected: false
}
msgContent.push(entry);
}
return msgContent;
} }
+5 -10
View File
@@ -7,15 +7,6 @@ function idAndDate(str){
} }
} }
function inlineContent(str){
let data = str.split("<br>");
let content = "";
for (let line of data){
content += line + '\n';
}
return content
}
function titleAndContent(str){ function titleAndContent(str){
let data = str.split(" :"); let data = str.split(" :");
let title = data[0]; let title = data[0];
@@ -76,13 +67,17 @@ export async function loadPeopleData() {
const username = pouet.account.display_name; const username = pouet.account.display_name;
let infos = idAndDate(pouet.created_at); let infos = idAndDate(pouet.created_at);
let entry; let entry;
//console.log(pouet);
//ignorer autres que images //ignorer autres que images
if (pouet.media_attachments?.length > 0 && if (pouet.media_attachments?.length > 0 &&
!pouet.media_attachments[0].type.includes('image')) { !pouet.media_attachments[0].type.includes('image')) {
continue; continue;
} }
if (pouet.in_reply_to_account_id) {
continue;
}
if (pouet.content.includes('http')) { if (pouet.content.includes('http')) {
let textInfos = titleAndContent(pouet.content); let textInfos = titleAndContent(pouet.content);
entry = { entry = {
+2 -5
View File
@@ -1,17 +1,14 @@
import { reactive } from 'vue' import { reactive } from 'vue'
export const dataStorage = reactive({ export const dataStorage = reactive({
selectedMsg: { //empty msg template selectedMsg: {
title: '', title: '',
date: '', date: '',
content: '', content: '',
like: 0, like: 0,
isLiked: false, isLiked: false,
going: 0,
isGoing: false,
wasRead: false, wasRead: false,
isSelected: false, isSelected: false
isEvent: false
}, },
selectedImg: { selectedImg: {
src: "", src: "",
@@ -22,16 +22,12 @@
<CloseIcon name="close" class="icon"/> <CloseIcon name="close" class="icon"/>
</button> </button>
</div> </div>
<div class="windowContent"> <div class="windowContent" id="msgContent">
<div class="reactBar"> <div class="reactBar">
<p class="reactStatStyle">{{selectedMsg.like}}</p> <p class="reactStatStyle">{{selectedMsg.like}}</p>
<button data-tooltip="j'aime bien" type="button" class="iconBtnStyle" :class="{reactedStyle: selectedMsg.isLiked}" @mousedown.capture="likeMsg" @touchstart.capture="likeMsg"> <button data-tooltip="j'aime bien" type="button" class="iconBtnStyle" :class="{reactedStyle: selectedMsg.isLiked}" @mousedown.capture="likeMsg" @touchstart.capture="likeMsg">
<LikeIcon name="test" class="icon"/> <LikeIcon name="test" class="icon"/>
</button> </button>
<p v-show="selectedMsg.isEvent" class="reactStatStyle">{{selectedMsg.going}}</p>
<button v-show="selectedMsg.isEvent" type="button" class="textBtnStyle" :class="{reactedStyle: selectedMsg.isGoing}" @mousedown.capture="goingToEvent" @touchstart.capture="goingToEvent">
JE PARTICIPE!
</button>
</div> </div>
<p id="selectedMsgText" @touchstart.stop>{{selectedMsg.content}}</p> <p id="selectedMsgText" @touchstart.stop>{{selectedMsg.content}}</p>
</div> </div>
@@ -58,6 +54,14 @@
width: 333px; width: 333px;
height: 333px; height: 333px;
} }
#msgContent{
width: 100%;
height: 100%;
flex-direction: column;
justify-content: flex-start;
align-items: flex-start;
}
/*================ PC LARGE*/ /*================ PC LARGE*/
@media(min-width:1000px){ @media(min-width:1000px){
#msgVisualizer{ #msgVisualizer{
@@ -107,9 +111,6 @@
likeMsg(){ likeMsg(){
dataStorage.selectedMsg.isLiked = !dataStorage.selectedMsg.isLiked dataStorage.selectedMsg.isLiked = !dataStorage.selectedMsg.isLiked
}, },
goingToEvent(){
dataStorage.selectedMsg.isGoing = !dataStorage.selectedMsg.isGoing;
},
closeMsg(){ closeMsg(){
this.$emit('close'); this.$emit('close');
dataStorage.selectedMsg.isSelected = false; dataStorage.selectedMsg.isSelected = false;
@@ -25,8 +25,6 @@
<p class="reactStatStyle">{{item.like}}</p> <p class="reactStatStyle">{{item.like}}</p>
<LikeIcon name="testLike" class="icon" :class="{reactedStyle: item.isLiked}"/> <LikeIcon name="testLike" class="icon" :class="{reactedStyle: item.isLiked}"/>
<p class="reactStatStyle"v-show="item.isEvent">{{item.going}}</p> <p class="reactStatStyle"v-show="item.isEvent">{{item.going}}</p>
<p v-show="item.isEvent && !item.isGoing" >PARTICIPAN.X.S</p>
<p v-show="item.isEvent && item.isGoing" class="reactedStyle">JE PARTICIPE!</p>
</div> </div>
</div> </div>
</div> </div>
@@ -248,11 +246,8 @@
content: '', content: '',
like: 0, like: 0,
isLiked: false, isLiked: false,
going: 0,
isGoing: false,
wasRead: false, wasRead: false,
isSelected: false, isSelected: false
isEvent: false
} }
} }
}, },
@@ -162,6 +162,7 @@
async mounted(){ async mounted(){
this.audioData = await loadAudioData(); this.audioData = await loadAudioData();
this.target = this.$refs.selectedAudio; this.target = this.$refs.selectedAudio;
console.log('AUDIO/', this.audioData);
this.loadAudio(); this.loadAudio();
console.log("Music player is loaded!"); console.log("Music player is loaded!");
} }