Merge branch 'master' of https://source.joinmastodon.org/tykayn/mastodon-archive-stats
This commit is contained in:
commit
4a77fce2cf
6
.gitignore
vendored
6
.gitignore
vendored
@ -1,4 +1,8 @@
|
||||
source_data/*.json
|
||||
source_data/*.png
|
||||
source_data/*.mp4
|
||||
source_data/*.mpg
|
||||
source_data/*.jpg
|
||||
.idea
|
||||
node_modules
|
||||
output/*.html
|
||||
@ -6,4 +10,4 @@ output/*.json
|
||||
output/*.jpg
|
||||
output/*.j*
|
||||
output/*.mp4
|
||||
output/*.gif
|
||||
output/*.*
|
||||
|
43
README.md
43
README.md
@ -1,4 +1,47 @@
|
||||
# NodeJS Converter of Mastodon export to HTML files
|
||||
-------------------------
|
||||
## FR: Présentation
|
||||
#Mastodon propose d'exporter une archive de vos données de compte. Informations utilisateur, posts, comptes que vous suivez, qui vous suivent, que vous avez bloqué, médias que vous avez posté...
|
||||
Mais il n'existe pas de moyen de visualiser tout le contenu de votre compte dans une jolie interface. Enfin, ça c'était avant.
|
||||
Maintenant vous pouvez utiliser ce client frontend pour naviguer dans vos posts et obtenir des statistiques à propos de votre compte, des hashtags que vous avez le plus utilisé, des comptes pour lesquels vous avez fait le plus de favoris et bien d'autres choses merveilleuses.
|
||||
Pour ce faire, suivez la documentation!
|
||||
|
||||
## Initialiser le projet Mastodon-archive-stats
|
||||
|
||||
Cloner le dépot et le faire fonctionner localement vous demandera d'avoir:
|
||||
* git
|
||||
* npm
|
||||
|
||||
```
|
||||
git clone https://source.joinmastodon.org/tykayn/mastodon-archive-stats.git && cd mastodon-archive-stats
|
||||
yarn && yarn start
|
||||
```
|
||||
|
||||
Il vous faudra d'abord avoir le zip d'export de votre compte, que vous pouvez demander dans votre espace utilisateur.
|
||||
Par exemple à cette adresse pour la meilleure instance Mastodon du fédiverse.
|
||||
|
||||
https://mastodon.cipherbliss.com/settings/export
|
||||
|
||||
" Vous pouvez demander une archive de vos pouets et médias téléversés. Les données exportées seront au format ActivityPub, lisible par tout logiciel compatible. Vous pouvez demander une archive tous les 7 jours. "
|
||||
|
||||
Quand votre archive est prête vous recevez un email vous invitant à cliquer sur un lien pour récupérer le zip.
|
||||
Une fois ceci fait, vous allez pouvoir le décompresser et mettre son contenu dans le dossier **source_data** de ce projet.
|
||||
Les fichiers .json et compagnie, hop, coupé collé et voilà les informations à disposition du script.
|
||||
|
||||
La config du projet se trouve dans le fichier main.js dont vous pouvez modifier la configuration de l'export. Pour par exemple n'afficher que les Toots de plus de 500 caractères, ou seulement ceux comportant des médias, et choisir le sens de priorité du filtrage.
|
||||
Vous avez le choix de sauvegarder le html rendu de l'export, ainsi que les statistiques générées dans un fichier séparé.
|
||||
|
||||
Ensuite il vous suffira de lancer le serveur nodejs local avec un "yarn start", aller sur http://localhost:8080 et TADA! Votre export visuel est là.
|
||||
|
||||
Have fun!
|
||||
|
||||
|
||||
-------------------------
|
||||
## EN: About
|
||||
This is a frontend visualizer to grasp some data about what you did on an export from your Mastodon account.
|
||||
Follow this doc to know how to use it.
|
||||
|
||||
|
||||
install dependencies
|
||||
Run the main.js file
|
||||
|
||||
|
@ -2,7 +2,14 @@ exports.name = 'masto_conversion';
|
||||
const fs = require('fs');
|
||||
const axios = require('axios');
|
||||
|
||||
|
||||
class Conversion {
|
||||
constructor( ) {
|
||||
this.fetched_times = 0;
|
||||
this.max_fetchUsers = 5;
|
||||
this.usersMemo = {};
|
||||
}
|
||||
|
||||
hello() {
|
||||
console.log('hello from conversion');
|
||||
}
|
||||
@ -170,9 +177,6 @@ class Conversion {
|
||||
});
|
||||
}
|
||||
|
||||
fetched_times = 0;
|
||||
max_fetchUsers = 5;
|
||||
usersMemo = {};
|
||||
|
||||
/**
|
||||
* find user avatar url from its user homepage url.
|
||||
|
29
main.js
29
main.js
@ -7,27 +7,30 @@ const express = require('express');
|
||||
const pug = require('pug');
|
||||
const app = express();
|
||||
var fs = require('fs');
|
||||
var listenPort = 8088;
|
||||
var listenPort = 8080;
|
||||
var jsonParsedLikes, jsonParsedOutbox;
|
||||
// const min_length = 1050; // filter only long toots
|
||||
const min_length = 0; // filter only long toots
|
||||
const max_toots = 100000; // filter only long toots
|
||||
const filterBiggerTottsBeforeSlicing = false; // filter only long toots
|
||||
/**
|
||||
* export configuration.
|
||||
* You can filter the export in the following vars
|
||||
*/
|
||||
const min_length = 0; // minmum character length of toots to display
|
||||
const max_toots = Infinity; // maximum length
|
||||
const filterBiggerTootsBeforeSlicing = false; // filter only long toots
|
||||
const filterOnlyHavingMedias = false; // filter only toots having medias
|
||||
const displayMedias = false; // filter only toots having medias
|
||||
const writeStatsJson = true; // filter only toots having medias
|
||||
const showMostRecentTootsOnTop = true; // filter only toots having medias
|
||||
const writeStatsJson = false; // write json export file about statistics
|
||||
const showMostRecentTootsOnTop = true; // sorting order
|
||||
const TemplateVars = {
|
||||
pageTitle : 'Mastodon export converter to HTML',
|
||||
likes : jsonParsedLikes,
|
||||
outbox : jsonParsedOutbox,
|
||||
outboxStatistics: {},
|
||||
outbox_all : jsonParsedOutbox,
|
||||
pageTitle : 'Mastodon export converter to HTML',
|
||||
likes : jsonParsedLikes,
|
||||
outbox : jsonParsedOutbox,
|
||||
outboxStatistics : {},
|
||||
outbox_all : jsonParsedOutbox,
|
||||
min_length,
|
||||
max_toots,
|
||||
toot_counter : 0,
|
||||
filterOnlyHavingMedias,
|
||||
filterBiggerTottsBeforeSlicing,
|
||||
filterBiggerTootsBeforeSlicing,
|
||||
writeStatsJson,
|
||||
showMostRecentTootsOnTop,
|
||||
displayMedias,
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"scripts": {
|
||||
"start": "nodemon main.js"
|
||||
"start": "node main.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"axios": "^0.19.2",
|
||||
|
BIN
source_data/header.jpg
Normal file
BIN
source_data/header.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 194 KiB |
@ -9,6 +9,7 @@ html(lang="en")
|
||||
i.fa.fa-world
|
||||
h2 Statistics
|
||||
|
||||
|
||||
include partials/contacts.pug
|
||||
include partials/hashtags.pug
|
||||
include partials/config.pug
|
||||
|
@ -1,5 +1,6 @@
|
||||
h2 Configuration of this page
|
||||
div.config
|
||||
h1 Configuration
|
||||
p Showing #{outbox.length} of Messages #{outboxTotalLength} in your outbox.First #{max_toots} toots, filtered by a minimal length of #{min_length} characters of content.
|
||||
p filter bigger toots: #{filterBiggerTottsBeforeSlicing}
|
||||
p write statistics in output folder #{writeStatsJson}
|
||||
|
@ -2,7 +2,7 @@
|
||||
img.header(src='/header.jpg')
|
||||
|
||||
|
||||
|
||||
div.container
|
||||
div.column
|
||||
div.item-list
|
||||
#{toot_counter = outbox.length}
|
||||
@ -15,6 +15,8 @@
|
||||
img.header(src='/avatar.gif')
|
||||
div.date-published=oredredItem['object'].published
|
||||
blockquote.published(unescaped!=oredredItem['object'].content)
|
||||
br
|
||||
blockquote.published(!=oredredItem['object'].content)
|
||||
if oredredItem['object'].attachment && oredredItem['object'].attachment.length
|
||||
if(!displayMedias)
|
||||
sub.no-media Medias are not displayed
|
||||
|
Loading…
Reference in New Issue
Block a user