Night.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker

RM 95
RM 2000/2003
RM XP
RM VX/VX Ace
RM MV/MZ

Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

Tutos: Checklist de la composition (...) / Sorties: Dread Mac Farlane - episode 8 / Sorties: Dread Mac Farlane - episode 7 / Jeux: Ce qui vit Dessous / News: Quoi de neuf sur Oniromancie (...) / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

468 connectés actuellement

29380032 visiteurs
depuis l'ouverture

9399 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

Guelnika & E-magination

RPG Fusion

Eclipso

Offgame

Tous nos partenaires

Devenir
partenaire



forums

Index du forum > La Taverne > Statistiques oniromanciennes

Aller à la page 1 2 3

Reprise du message précédent:

7163D - posté le 05/05/2017 à 03:45:27 (946 messages postés)

❤ 0

Votez Minimaliste

Donc le data : https://drive.google.com/open?id=0BzvHBM1DucIINnNsekh6X1NwUEk

Le code (python) pour extraire les données à partir du data: (id_ => id dans l'adresse de la page de profil)

(spoiler alert : le code est moche et sans commentaires, si tu as des questions je suis là)

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import json
 
stat = json.loads (open ("Stat Oniro.json").read())
nb_msg = "Nombre de messages"
nb_msg_member = nb_msg + " par membre"
nb_sub = "Nombre de sujets"
nb_sub_member = nb_sub + " par membre"
 
id_ = "1465"
l = []
sm,ss = 0,0
tsm, tss = 0, 0
for cat in stat["Liste des topics"]:
        tsm += stat[cat][nb_msg]
        tss += stat[cat][nb_sub]
        for d in stat[cat][nb_msg_member]:
                if d == id_:
                        l.append ((cat, stat[cat], stat[cat][nb_msg_member][d], 0 if not d in stat[cat][nb_sub_member] else stat[cat][nb_sub_member][d]))
                        sm += stat[cat][nb_msg_member][d]
                        if d in stat[cat][nb_sub_member]:
                                ss += stat[cat][nb_sub_member][d]
 
def form (n, f=True):
        if n < 1000:
                if f:
                        return str(n)
                else:
                        return "0" * (3 - len(str(n))) + str(n)
        else:
                return form (n // 1000) + "." + form (n % 1000, False)
                
 
def lg (r, s):
        r = str(r)
        return " " * (s - len (r)) + r
 
print("Global:")
print (f"{form(ss)} des {form(tss)} sujets du forum ({int(10000*ss/tss)/1000}%)")
print (f"{form(sm)} des {form(tsm)} messages du forum ({int(10000*sm/tsm)/1000}%)")
print("Par rubrique:")
print("%du total | %du membre")
for name, cat, nm, ns in l:
        print(name)
        if ss > 0:
                print ("_____sujets___", f"{lg(int(10000*ns/cat[nb_sub]/100),5)}% | {lg(int(10000*ns/ss)/100,5)}%")
        print ("_____messages_", f"{lg(int(10000*nm/cat[nb_msg])/100,5)}% | {lg(int(10000*nm/sm)/100,5)}%")



Et celui pour "fabriquer" les données:

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
import requests, re, click, sys, json, os
 
def nicejson (txt):
        ntxt = ""
        deep = 0
        in_ = False
        for l in txt:
                ntxt += l
                if l == '"':
                        in_ = not in_
                if l == "{":
                        deep += 1
                        ntxt += "\n" + "\t" * deep
                elif l == "}":
                        deep -= 1
                elif l == "," and not in_:
                        ntxt += "\n" + "\t" * deep
 
        return ntxt
 
def l_subject (url, p=1):
        if p > 1:
                txt = requests.get (url + "&deb=" + str(p)).text
        else:
                txt = requests.get (url).text
 
        lsubject = []
        for t in re.finditer ("<a href=\"(index\.php\?page=forum&id=[0-9]*)\">([^<])*</a>", txt):
                _url = t.group(0).split('"')[1]
                name = t.group(0).split(">")[1].split("<")[0]
                lsubject.append ((_url, name))
 
        if len (lsubject) > 0:
                return lsubject + l_subject (url, p+1)
        else:
                return lsubject
 
def l_messages (url):
 
        ltxt = [""]
        i = 1
        while not "Aucun commentaire n'a été posté pour le moment." in ltxt[-1]:
                ltxt.append (requests.get (url + "&deb=" + str(i)).text)
                i += 1
 
        lmessage = []
        for txt in ltxt:
                for t in re.finditer ("<A HREF=\"index\.php\?page=membre&id=([0-9]*)\">", txt):
                        name = t.group(1)
                        lmessage.append (name)
        return (lmessage)
 
cat = {
"Présentations" : "http://www.rpg-maker.fr/index.php?page=forum&forum=1",
"Jeux Terminés" : "http://www.rpg-maker.fr/index.php?page=forum&forum=36",
"Projets Avancés" : "http://www.rpg-maker.fr/index.php?page=forum&forum=24",
"Nouveaux Projets" : "http://www.rpg-maker.fr/index.php?page=forum&forum=5",
"Généralités" : "http://www.rpg-maker.fr/index.php?page=forum&forum=4",
"Vos créations" : "http://www.rpg-maker.fr/index.php?page=forum&forum=8",
"Entraide" : "http://www.rpg-maker.fr/index.php?page=forum&forum=6",
"Script":"http://www.rpg-maker.fr/index.php?page=forum&forum=1004",
"Concours":"http://www.rpg-maker.fr/index.php?page=forum&forum=18",
"Culture Général":"http://www.rpg-maker.fr/index.php?page=forum&forum=7",
"Jeux commerciaux":"http://www.rpg-maker.fr/index.php?page=forum&forum=9",
"Jeux amateurs":"http://www.rpg-maker.fr/index.php?page=forum&forum=21",
"La taverne":"http://www.rpg-maker.fr/index.php?page=forum&forum=2",
"Débats":"http://www.rpg-maker.fr/index.php?page=forum&forum=19",
"Boîte à idées":"http://www.rpg-maker.fr/index.php?page=forum&forum=3",
"Archives":"http://www.rpg-maker.fr/index.php?page=forum&forum=32"
}
 
nb_msg = "Nombre de messages"
nb_msg_member = nb_msg + " par membre"
nb_sub = "Nombre de sujets"
nb_sub_member = nb_sub + " par membre"
 
data = {}
for Name in cat:
        try:
                open(Name)
                continue
        except:
                pass
 
        print(Name)
        data[Name] = {}
 
        print("On recherche tous les sujets...")
        lsubject = l_subject(cat[Name])
 
        l = len(lsubject)
        data[Name][nb_sub] = l
 
        lmessages = []
        print("On compte le nombre de messages dans tous les sujets...")
        with click.progressbar(lsubject, file=sys.stderr, show_percent=True, show_pos=True, width=70, bar_template='<%(bar)s> %(info)s', fill_char='', empty_char=' ') as bar:
                for url, _ in bar:
                        lmessages.append (l_messages ("http://www.rpg-maker.fr/" + url))
        
        print("On compte le ratio de message par membre")
 
        l = sum ([len (lmessage) for lmessage in lmessages])
        data[Name][nb_msg] = l
        data[Name][nb_msg_member] = {}
        data[Name][nb_sub_member] = {}
 
        with click.progressbar(lmessages, file=sys.stderr, show_percent=True, show_pos=True, width=70, bar_template='<%(bar)s> %(info)s', fill_char='', empty_char=' ') as bar:
                for lmessage in bar:
                        if lmessage == []:
                                continue
                        name = lmessage[0]
                        if not name in data[Name][nb_sub_member]:
                                data[Name][nb_sub_member][name] = 0
                        data[Name][nb_sub_member][name] += 1
                        for name in lmessage:
                                if not name in data[Name][nb_msg_member]:
                                        data[Name][nb_msg_member][name] = 0
                                data[Name][nb_msg_member][name] += 1
 
        open (Name, "w").write (nicejson(json.dumps (data[Name])))
 
data = {"Liste des topics":[k for k in cat.keys()]}
for name in cat:
        data[name] = json.loads (open (name).read())
        os.remove (name)
 
open ("Stat Oniro.json", "w").write (nicejson (json.dumps (data)))



Minimaliste, le "." comme signe de ralliement.


Suite du sujet:

Konnie - posté le 05/05/2017 à 11:19:25 (3982 messages postés)

❤ 0

Moi moi moi :sonic


7163D - posté le 05/05/2017 à 11:29:25 (946 messages postés)

❤ 0

Votez Minimaliste

Konnie a dit:


Global:
9 des 6.139 sujets du forum (0.014%)
1.386 des 284.199 messages du forum (0.048%)
Par rubrique:
%du total | %du membre
Présentations
_____sujets___ 0% | 11.11%
_____messages_ 0.44% | 3.75%
Jeux Terminés
_____sujets___ 0% | 0.0%
_____messages_ 0.4% | 4.4%
Projets Avancés
_____sujets___ 0% | 0.0%
_____messages_ 0.44% | 6.42%
Nouveaux Projets
_____sujets___ 0% | 0.0%
_____messages_ 0.37% | 1.8%
Généralités
_____sujets___ 0% | 11.11%
_____messages_ 0.37% | 4.9%
Vos créations
_____sujets___ 0% | 22.22%
_____messages_ 0.74% | 18.1%
Entraide
_____sujets___ 0% | 33.33%
_____messages_ 0.11% | 1.73%
Concours
_____sujets___ 0% | 0.0%
_____messages_ 0.14% | 0.72%
Culture Général
_____sujets___ 0% | 0.0%
_____messages_ 0.83% | 15.22%
Jeux commerciaux
_____sujets___ 1% | 22.22%
_____messages_ 1.08% | 18.47%
La taverne
_____sujets___ 0% | 0.0%
_____messages_ 0.32% | 14.14%
Débats
_____sujets___ 0% | 0.0%
_____messages_ 0.98% | 6.56%
Boîte à idées
_____sujets___ 0% | 0.0%
_____messages_ 0.07% | 0.21%
Archives
_____sujets___ 0% | 0.0%
_____messages_ 0.18% | 3.53%



Minimaliste, le "." comme signe de ralliement.


Konnie - posté le 05/05/2017 à 11:52:07 (3982 messages postés)

❤ 0

Merci :D Je pensais être au moins à 98% partout, un peu déçu de ma performance


7163D - posté le 05/05/2017 à 11:58:41 (946 messages postés)

❤ 0

Votez Minimaliste

Konnie a dit:


Merci :D Je pensais être au moins à 98% partout, un peu déçu de ma performance


Si tu veux je peut truquer le logiciel :grossourire

Minimaliste, le "." comme signe de ralliement.


winterskill - posté le 05/05/2017 à 18:59:08 (927 messages postés)

❤ 0

Empereur des bons gros meuh

ok. merci.
en gros, j'execute le deuxième script depuis mon pc pour construire le fichier JSON?
d'ailleurs, si tu pouvais me donner la structure de ce JSON, ça me ferait gagner pas mal de temps (pou éviter d'avoir à lire entièrement le fichier...)
merci d'avance!

"pommes de rainette et pommes d'API, API API Rest-e" | "A combattre sans périls, on triomphe sans gloire" - le cid ; (oui mais on gagne quand même non?...) | à soutenir absolument : https://www.kickstarter.com/projects/1264023666/bushido-the-way-of-men


7163D - posté le 05/05/2017 à 19:15:19 (946 messages postés)

❤ 0

Votez Minimaliste

C'est ça.

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
 
{
    "Liste des topics":list of str, //nom des topics
     list of {nom du topic :
        "Nombre de sujets"span style="color:#7cc4f5;"> : int,
        "Nombre de messages"span style="color:#7cc4f5;"> : int,
        "Nombre de messages par membre":dict of {id : int},
        "Nombre de sujets par membre":dict of {id : int}
    }
}
 



Ah oui, mon script gère à moitié les erreurs réseaux. S'il plante, il faut le relancer mais il aura sauvegardé le travail déjà fait.

Minimaliste, le "." comme signe de ralliement.


winterskill - posté le 05/05/2017 à 19:21:01 (927 messages postés)

❤ 0

Empereur des bons gros meuh

ok merci.
je pense que la page sera prête d'ici demain ou après-demain...

"pommes de rainette et pommes d'API, API API Rest-e" | "A combattre sans périls, on triomphe sans gloire" - le cid ; (oui mais on gagne quand même non?...) | à soutenir absolument : https://www.kickstarter.com/projects/1264023666/bushido-the-way-of-men

Aller à la page 1 2 3

Index du forum > La Taverne > Statistiques oniromanciennes

repondre up

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts/Plugins | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers