forked from vgaNAR6ta/drags-and-nerds
243 lines
7.3 KiB
JavaScript
243 lines
7.3 KiB
JavaScript
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('<br>').filter(e => e);
|
|
}
|
|
if (data[1]){
|
|
contentData = data[1].split('<br>').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('<br>')[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('<br>').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;
|
|
}
|