# coding: utf8 # toutes les chaines sont en unicode (même les docstrings) from __future__ import unicode_literals from pprint import pprint from colorama import init, Fore from rocketchat_API.rocketchat import RocketChat import json import dev_config as cfg import os import re from common.channelhelper import getNodesOrigin, getAllChannels, Tsunami def main(): init() colorInfo = { 'global': 'orange', 'technologie': 'gray', 'democratie': 'red', 'ecologie': 'green', 'project': 'blue' } rocket = RocketChat(cfg.rocket['user'], cfg.rocket['password'], server_url=cfg.rocket['server']) sizebase = 100 datas = [] datas.append( { 'data':{'id':'global', 'label': 'global', 'size': sizebase, 'color': colorInfo['global'], 'href': 'https://coa.crapaud-fou.org/'}}) datas.append( { 'data':{'id':'ecologie', 'label': 'ecologie', 'size': sizebase, 'color': colorInfo['ecologie'], 'href': 'https://coa.crapaud-fou.org/'}}) datas.append( { 'data':{'id':'democratie', 'label': 'democratie', 'size': sizebase, 'color': colorInfo['democratie'], 'href': 'https://coa.crapaud-fou.org/'}}) datas.append( { 'data':{'id':'technologie', 'label': 'technologie', 'size': sizebase, 'color': colorInfo['technologie'], 'href': 'https://coa.crapaud-fou.org/'}}) datas.append( { 'data':{'id':'project', 'label': 'projet', 'size': sizebase, 'color': colorInfo['project'], 'href': 'https://coa.crapaud-fou.org/'}}) cohortes = { 'fr': { 'updateMap': 'france_fr'}} cohortescolor = { 'fr': 'green' } nbChannels = 0 nbCohorte = 0 for channel in getAllChannels(rocket): print("{}".format(channel['name'])) if channel['name'].find('cohorte') != -1: if 'description' in channel: m = re.findall(r'#([\w-]+)', channel['description']) if m.count == 0: print(Fore.RED + "\tmissing region information", 'red') for region in m: cohortescolor.update( { region: 'green' } ) cohortes.update( { region: { 'link': channel['name']}}) nbCohorte += 1 continue size = channel['usersCount'] if (channel['_id'] == 'GENERAL') or (channel['_id'] == 'rp5gdRrZubMKic3Nk') : size = sizebase node = { 'data' : { 'id': channel['_id'], 'label': channel['fname'] if 'fname' in channel else channel['name'], 'size': size, 'color': 'grey', 'href': f"{cfg.rocket['server']}/channel/{channel['name']}" } } datas.append(node) nodesOrigin = getNodesOrigin(channel) for nodeOrigin in nodesOrigin: if nodeOrigin is not None: datas.append( { 'data':{'source': nodeOrigin, 'target': channel['_id'], 'color': colorInfo[nodeOrigin]}}) nbChannels += 1 # Récupération du répertoire racine du repo rootFolder = os.path.join(os.path.dirname(__file__), '..') # Répertoire pour stocker le fichier de sortie dataFolder = os.path.join(rootFolder, 'public','data') # Faut il essayer de le créer au cas ou? # os.makedirs(dataFolderPath, exist_ok=True) channelsFilePath = os.path.abspath(os.path.join(dataFolder,'channelslist.json')) #print("Ecriture dans : "+channelsFilePath) with open(channelsFilePath, "w") as file_write: json.dump(datas, file_write) cohortecolorFilePath = os.path.abspath(os.path.join(dataFolder,'cohortescolor.json')) with open(cohortecolorFilePath, "w") as file_write: json.dump(cohortescolor, file_write) cohorteFilePath = os.path.abspath(os.path.join(dataFolder,'cohorteslist.json')) with open(cohorteFilePath, "w") as file_write: json.dump(cohortes, file_write) pprint("Nb displayed channels : " + str(nbChannels)) pprint("Nb cohorte channels : " + str(nbCohorte)) if __name__ == "__main__": main()