From 12e5befd429c79cbecd1c01353f3a58a0a76d3d9 Mon Sep 17 00:00:00 2001 From: vgaNAR6ta Date: Sat, 9 May 2026 21:53:31 +0200 Subject: [PATCH] =?UTF-8?q?edit:=20post=20mastodon=20V2=20en=20mode=20plus?= =?UTF-8?q?=20flexible=20(v0=20un=20peu=20schlag=20mais=20=C3=A7a=20marche?= =?UTF-8?q?=20x333)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- v1-com-officielle/src/assets/style.css | 36 ++++- v1-com-officielle/src/data/postData.js | 149 ++++++++++++++++++ .../src/indieComponents/ArtistPannel.vue | 51 +++--- 3 files changed, 209 insertions(+), 27 deletions(-) create mode 100644 v1-com-officielle/src/data/postData.js diff --git a/v1-com-officielle/src/assets/style.css b/v1-com-officielle/src/assets/style.css index b5306e1..76ae3ee 100644 --- a/v1-com-officielle/src/assets/style.css +++ b/v1-com-officielle/src/assets/style.css @@ -91,7 +91,6 @@ a button{ } p{ - pointer-events: none; cursor: inherit; } @@ -365,3 +364,38 @@ html, body{ .moveable-control-box { display: none !important; } + +/*===========================For some fckn reason lien en description artist pannel*/ + +.itemDesc p a{ + display: block; + pointer-events: all; + background-color: var(--back-color); + color: var(--main-color); + font-size: 13.12px; + font-family: 'lineal'; + border-color: var(--main-color); + border-width: thin; + border-style: solid; + border-radius: 16.1px; + + width: 161px; + height: 16.1px; + padding: 7.77px; + margin-bottom: 0; + + + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + +} + +.itemDesc p a#text{ + text-overflow: ellipsis; +} + +.itemDesc p a:hover{ + background-color: var(--main-color); + color: var(--back-color); +} diff --git a/v1-com-officielle/src/data/postData.js b/v1-com-officielle/src/data/postData.js new file mode 100644 index 0000000..3ea02df --- /dev/null +++ b/v1-com-officielle/src/data/postData.js @@ -0,0 +1,149 @@ +function idAndType(obj){ + let data = obj.dateInfo.split('T') + let keyData = data[1].split('.')[0].split(':') + let uniqueKey = keyData[1] + keyData[2] + let id = obj.author + uniqueKey + //type : post, video, images + if (obj.videoSrc){ + obj.type = "video" + id += ".video" + }else if(obj.imgSrc){ + obj.type = "image" + id += ".image" + }else { + obj.type = "post" + id += ".post" + } + obj.caption = id +} + + +export async function loadPostData(){ + //liste des utilisateurice + const usernamesRes = await fetch('/DATA/peopleData.json'); + const pData = await usernamesRes.json(); + //console.log("USERS :", pData); + 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(); + //console.log("POUETS :" , pouets); + const filtered = pouets.filter(p => pData.some(user => p.account.username === user.name || p.reblog?.account.username === user.name)); + console.log("FILTERED :" , filtered); + //création des dossiers + const files = {}; + for (const user of pData) { + files[user.name] = []; + } + //console.log(files) + //récupérationn des descriptions/bio + const description = {}; + for (const user of pData){ + const pouet = filtered.find(p => p.account.username === user.name); + if(pouet?.account.note){ + let data = pouet.account.note.split('
').filter(e => e) + let bio = ""; + for (let line of data){ + bio += line + '\n' + } + description[user.name] = bio + } else { + description[user.name] = 'NO DESCRIPTION' + } + } + + //formattage des posts + for (const pouet of filtered){ + let selectedPouet; + //si reblog chercher post origine + if(pouet.reblog){ + selectedPouet = pouet.reblog; + } else { + selectedPouet = pouet; + } + //console.log(selectedPouet); + const username = selectedPouet.account.username; + const displayName = selectedPouet.account.display_name; + let date = selectedPouet.created_at; + let entry; + + //ignorer réponses + if (selectedPouet.in_reply_to_account_id) { + continue; + } + //ignorer audio dans cette section + if (selectedPouet.media_attachments?.length > 0 &&selectedPouet.media_attachments[0].type.includes('audio')){ + continue + } + + // on commence par le texte du post + entry = { + type: "", + caption : "", + content : selectedPouet.content, + imgSrc : null, + videoSrc : null, + author : displayName, + dateInfo : date, + like : selectedPouet.favourites_count, + isSelected: false + } + + if (selectedPouet.media_attachments?.length > 0){ + if (selectedPouet.media_attachments[0].type.includes('video')){ + entry.videoSrc = selectedPouet.media_attachments[0].url + } else if (selectedPouet.media_attachments[0].type.includes('image')){ + entry.imgSrc = selectedPouet.media_attachments[0].url + } + } + //create id for title and unique name + idAndType(entry); + //console.log(entry); + //add to folder + files[username].push(entry); + } + //tri des post + const dragContent = pData.filter(user => user.folder === 0).map(user => ( + { + type: "folder", + caption: user.name + '.info', + children: files[user.name], + description: description[user.name], + isSelected: false + })); + const nerdContent = pData.filter(user => user.folder === 1).map(user => ( + { + type: "folder", + caption: user.name + '.info', + children: files[user.name], + description: description[user.name], + isSelected: false + })); + + const otherContent = pData.filter(user => user.folder === 2).flatMap(user => files[user.name]); + //dossier final + const sortedContent = [ + { + type: "folder", + caption : "Artistes Drags", + description:"Pour en savoir plus sur nos artistes drags, c'est par ici !", + children: dragContent, + isSelected: false + }, + { + type: "folder", + caption : "Artistes Nerds", + description:"Pour en savoir plus sur nos artistes nerds, c'est par là !", + children: nerdContent, + isSelected: false + }, + { + type: "folder", + caption : "Autres contenus", + description:"Dans cette section, on place pleins de contenu, en vrac, \n sur nous, nos copaines, des trucs qu'on trouve cool, etc.", + children: otherContent, + isSelected: false + } + ]; + return sortedContent; +} diff --git a/v1-com-officielle/src/indieComponents/ArtistPannel.vue b/v1-com-officielle/src/indieComponents/ArtistPannel.vue index d47c5ab..59bbf47 100644 --- a/v1-com-officielle/src/indieComponents/ArtistPannel.vue +++ b/v1-com-officielle/src/indieComponents/ArtistPannel.vue @@ -5,7 +5,7 @@ import ImgIcon from '../assets/icons/img.svg' import LinkIcon from '../assets/icons/link.svg' import BackIcon from '../assets/icons/back.svg' - import { loadPeopleData } from '@/data/peopleData.js' + import {loadPostData} from '@/data/postData.js'