function idAndDate(str){
let data = str.split("T");
let date = data[0].split("-");
return {
date: date[2] +'/'+ date[1],
id: date[2] + date[1]
}
}
function titleAndContent(str){
let data = str.split(" :");
let title = "NO_TITLE";
let contentData = [""];
if (data.length > 1){
title = data[0];
} else {
contentData = data[0].split('
').filter(e => e);
}
if (data[1]){
contentData = data[1].split('
').filter(e => e);
}
let content = "";
let src = [];
for(let line of contentData){
if(line.includes('http')||line.includes('@')){
let linkData = line.split("# ");
//console.log(linkData[1]);
let linkNoFormat;
let url = "";
if (linkData[1].includes('http')){
linkNoFormat = linkData[1].split("\"");
url = linkNoFormat[1];
} else if (linkData[1].includes('@')){
url = 'mailto:' + linkData[1];
}
//console.log("url info", url)
src.push({
caption: linkData[0],
url: url
})
} else {
content += line + '\n';
}
}
return {
title: title,
content: content.split('/333/')[0],
links: src,
}
}
function exceptionKey(user, content){
let data = content.split('/333/');
let key = "";
if (data.length > 1) key = data[1].split('
')[0];
//console.log(key);
if (key === "bm90X3dlYnNpdGVfY29udGVudA==" && user !=="drags_nerds") return true;
if (user === "drags_nerds"){
if(key != "c2VuZF9tZXNzYWdlX3RvX3dlYnNpdGU="){
return true;
}
}
return false;
}
function videoExt(str){
let data = str.split('.');
return data.at(-1)
}
export async function loadPeopleData() {
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);
const files = {};
for (const user of pData) {
files[user.name] = [];
}
const description = {};
for (const user of pData){
const pouet = filtered.find(p => p.account.username === user.name || p.reblog?.account.username === user.name);
if (pouet){
let descData = pouet.account.note.split('
').filter(e => e);
if(descData.length > 0){
for (let line of descData){
description[user.name] += '\n' + line;
}
} else {
description[user.name] = 'NO DESCRIPTION'
}
}
}
for (const pouet of filtered) {
let selectedPouet;
if(pouet.reblog){
selectedPouet = pouet.reblog;
} else {
selectedPouet = pouet;
}
//console.log(selectedPouet);
const username = selectedPouet.account.username;
const displayName = selectedPouet.account.display_name;
let infos = idAndDate(selectedPouet.created_at);
let entry;
//console.log(pouet);
//ignorer autres que images
if (selectedPouet.media_attachments?.length > 0 &&
!pouet.media_attachments[0].type.includes('image') &&
!pouet.media_attachments[0].type.includes('video')) {
continue;
}
//ignorer réponses
if (selectedPouet.in_reply_to_account_id) {
continue;
}
//ignorer exceptions
let exception = exceptionKey(username, selectedPouet.content);
//console.log(exception)
if(exception){
continue;
}
if (selectedPouet.content.includes('http')) {
let textInfos = titleAndContent(selectedPouet.content);
entry = {
id: 'link' + displayName + infos.id,
date: infos.date,
dateInfo: selectedPouet.created_at,
type: "link",
author: displayName,
caption: textInfos.title + '.plus',
links: textInfos.links,
description: textInfos.content,
isSelected: false
};
} else if (selectedPouet.media_attachments?.length > 0) {
let textInfos = titleAndContent(selectedPouet.content);
//console.log(pouet);
if (pouet.media_attachments[0].type.includes('image')){
entry = {
id: 'img' + displayName + infos.id,
date: infos.date,
dateInfo: selectedPouet.created_at,
type: "image",
author: displayName,
caption: textInfos.title + '.star',
src: selectedPouet.media_attachments[0].url,
alt: selectedPouet.media_attachments[0].description,
description: textInfos.content,
like: selectedPouet.favourites_count,
isSelected: false
}
}
if (pouet.media_attachments[0].type.includes('video')){
let videoType = videoExt(selectedPouet.media_attachments[0].url)
entry = {
id: 'vid' + displayName + infos.id,
date: infos.date,
dateInfo: selectedPouet.created_at,
type: "video",
format: selectedPouet.media_attachments[0].type + '/' + videoType,
author: displayName,
caption: textInfos.title + '.move',
src: selectedPouet.media_attachments[0].url,
alt: selectedPouet.media_attachments[0].description,
description: textInfos.content,
like: selectedPouet.favourites_count,
isSelected: false
}
}
} else {
let textInfos = titleAndContent(selectedPouet.content);
entry = {
id: 'txt' + displayName + infos.id,
date: infos.date,
dateInfo: selectedPouet.created_at,
type: "text",
author: displayName,
caption: textInfos.title + '.msg',
description: textInfos.content,
isSelected: false
};
}
//console.log(entry);
files[username].push(entry);
}
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]);
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;
}