Outils pour utilisateurs

Outils du site


pymultilame

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
pymultilame [2018/08/28 12:39] – [Documentation] sergepymultilame [2022/02/14 08:49] (Version actuelle) – supprimée serge
Ligne 1: Ligne 1:
-======Python: pymultilame====== 
  
-<WRAP center round box centeralign 60%> 
-**Des scripts pour les tâches de tous les jours** 
-</WRAP> 
- 
-===== pymultilame ===== 
- 
-==== Des scripts python pour les tâches répétitives. ==== 
- 
-Ce module propose les outils les plus courrant que j'utilise, à utiliser en import ou en recopiant des bouts de code. 
- 
-Ce module est une amélioration de 
- 
-  * [[https://github.com/sergeLabo/mylabotools|mylabotools]] 
- 
-qui n'est plus maintenu. 
- 
-=== Comprend les rubriques === 
- 
-  * Blender: Des scripts spécifiques pour le Blender Game Engine 2.7x et qui ne peuvent tourner que dans Blender 
-  * Twisted: des exemples de twisted en python3 
-  * Network: des sockets simples en python3 
-  * Tools: des outils utilisés fréquement 
- 
-==== Installation ==== 
- 
-=== Installation de Twisted pour python 3.x === 
- 
-  * [[https://ressources.labomedia.org/installation_de_twisted|Installation de Twisted pour python 3.x]] 
- 
-<code> 
-sudo pip3 install twisted 
-</code> 
-=== Installation de pymultilame === 
- 
-  * [[https://ressources.labomedia.org/creer_son_propre_package_python|Créer son propre package python]] 
- 
-<code> 
-sudo pip3 install -e git+https://github.com/sergeLabo/pymultilame.git#egg=pymultilame 
-</code> 
-Mise à jour: 
- 
-<code> 
-sudo pip3 install --upgrade git+https://github.com/sergeLabo/pymultilame.git#egg=pymultilame 
-</code> 
-==== Utilisation ==== 
- 
-<code python> 
-from pymultilame import HttpDownload 
-from pymultilame import MyTools 
-from pymultilame import TcpClient 
-from pymultilame import MyConfig 
-from pymultilame import get_my_ip 
-from pymultilame import Multicast 
-from pymultilame import UdpClient 
-from pymultilame import PileFIFO 
-from pymultilame import Multicast 
- 
-from pymultilame import Tempo 
-from pymultilame import EasyAudio 
-from pymultilame import TextureChange 
- 
-from pymultilame.blendertools import scene_change, droiteAffine, scene_change, print_str_args 
-from pymultilame.blendergetobject import get_all_objects, get_all_scenes, get_scene_with_name 
-</code> 
-==== Licence ==== 
- 
-Touls les scripts sont sous 
- 
-GNU GENERAL PUBLIC LICENSE Version 3 
- 
-voir le fichier LICENSE 
- 
-==== Documentation pour créer son propre package python==== 
- 
-  * [[https://ressources.labomedia.org/creer_son_propre_package_python|Créer son propre package python]] 
- 
-==== Conversion de README.md en dokuwiki ==== 
- 
-pour la page pymultilame du wiki 
-====blendergetobject==== 
-<code txt> 
-FUNCTIONS 
-    get_all_objects() 
-        Retourne une liste de tous les objets des scènes actives 
-     
-    get_all_scenes() 
-     
-    get_scene_with_name(scn) 
- 
-</code> 
- 
-====blendersound==== 
-<code txt> 
-DESCRIPTION 
-    Class générique qui permet de gérer facilement le son 
-    dans le Blender Game Engine BGE. 
-     
-    gl est le GameLogic, get with : from bge import logic as gl 
-     
-    Appel de cette classe où tous les sons sont dans une liste avec : 
-        import aud 
-     
-        soundList = ["boum", ...] avec les fichiers boum.ogg etc... 
-     
-        Création de l'objet qui est un dictionnaire 
-     
-        gl.sound = EasyAudio(soundList) 
-            soit { "boum": fabrique de boum.ogg, ....} 
-        Joue le son boum 
-            gl.sound["boum"].play() 
-        Stop le son 
-            gl.sound["boum"].stop() 
-        Idem repeat, pause 
- 
-CLASSES 
-        Factory 
-     
-    class EasyAudio(builtins.dict) 
-      dict() -> new empty dictionary 
-      dict(mapping) -> new dictionary initialized from a mapping object's 
-          (key, value) pairs 
-      dict(iterable) -> new dictionary initialized as if via: 
-          d = {} 
-          for k, v in iterable: 
-              d[k] = v 
-      dict(**kwargs) -> new dictionary initialized with the name=value pairs 
-          in the keyword argument list.  For example:  dict(one=1, two=2) 
-     |   
-      Method resolution order: 
-          EasyAudio 
-          builtins.dict 
-          builtins.object 
-     |   
-      Methods defined here: 
-     |   
-      __init__(self, soundList, path, buffered=True) 
-          soundList = ["boum", ...] 
-          path example "//audio/comment/" 
-     
-    class Factory(builtins.object) 
-      Methods defined here: 
-     |   
-      __init__(self, audio_file_path, buffered=True) 
-          audio_file_path = "//audio/comment/boum.ogg" 
-          buffered = Boolean 
-     |   
-      pause(self) 
-     |   
-      play(self, volume=1) 
-          play the audio, this return a handle to control play/pause/stop 
-     |   
-      repeat(self, volume=1) 
-     |   
-      set_pitch(self, pitch) 
-     |   
-      set_volume(self, vol) 
-     |   
-      stop(self) 
- 
-</code> 
- 
-====blendertempo==== 
-<code txt> 
-CLASSES 
-        TempoFactory 
-     
-    class Tempo(builtins.dict) 
-      Création des tempos définies dans une liste de tuple: 
-          * tempo_liste = [("intro", 60), ("print", 12), ("sound", 6)] 
-      Chaque objet tempo: 
-          * tempoDict = Tempo(tempo_liste) 
-      Update des tempo: 
-          * tempoDict.update() 
-      Appel d'une tempo: 
-          * tempoDict["intro"].tempo 
-      Voir exemple test() du __main__ 
-     |   
-      Method resolution order: 
-          Tempo 
-          builtins.dict 
-          builtins.object 
-     |   
-      Methods defined here: 
-     |   
-      __init__(self, tempoList) 
-          Initialize self.  See help(type(self)) for accurate signature. 
-     |   
-      update(self) 
-          D.update([E, ]**F) -> None.  Update D from dict/iterable E and F. 
-          If E is present and has a .keys() method, then does:  for k in E: D[k] = E[k] 
-          If E is present and lacks a .keys() method, then does:  for k, v in E: D[k] = v 
-          In either case, this is followed by: for k in F:  D[k] = F[k] 
-     |   
-          
-    class TempoFactory(builtins.object) 
-      Les tempos sont en fait des compteurs qui sont mis à jour à chaque 
-      frames de Blender avec update. 
-     |   
-      Methods defined here: 
-     |   
-      __init__(self, periode=60) 
-          Paramètres: 
-          période: la tempo est remise à zéro si periode atteind, -1 = infinite loop 
-          pas: incrément de la tempo, par défaut=1, aucun intérêt de changer le pas 
-          verrou: si verrou, pas d'incrémentation. 
-     |   
-      lock(self) 
-          Verrou, je bloque 
-     |   
-      reset(self) 
-          Remise à zéro de la tempo 
-     |   
-      unlock(self) 
-          Pas de verrou, je peux incrémenter 
-     |   
-      update(self) 
-          J'incrémente si pas de verrou. Si verrou, je ne fais rien 
- 
-</code> 
- 
-====blendertexture==== 
-<code txt> 
-DESCRIPTION 
-    Class générique qui permet de changer la texture d'un objet. 
-    Ce script ne peut tourner que dans blender. 
- 
-CLASSES 
-    class TextureChange(builtins.object) 
-      Classe générique utilisable dans d'autres projects, 
-      pour changer une texture d'un objet. 
-     |   
-      Methods defined here: 
-     |   
-      __init__(self, obj, old_tex) 
-          obj     = objet concerné 
-          old_tex = image de la texture originale, ex "danseur2.png" 
-          new_tex = "//textures/perso.png" 
-     |   
-      texture2old(self) 
-          Effacement de l'objet python, pour retourner à l'ancienne texture. 
-     |   
-      texture_new(self, new_tex) 
-          Application de la nouvelle image de la texture. 
-           
-          Répéter la fonction plusieurs fois (ex 5x) pour que 
-          le changement marche. 
-          Tous les objecy avec le matériau seront changés. 
- 
-</code> 
- 
-====blendertools==== 
-<code txt> 
-FUNCTIONS 
-    droiteAffine(x1, y1, x2, y2) 
-        Retourne les valeurs de a et b de y=ax+b 
-        à partir des coordonnées de 2 points. 
-     
-    print_str_args(*args) 
-        Imprime en terminal les variables en argument 
-        Les variables doivent être sous forme de string, 
-        par exemple 
-        print_str_args("a") 
-        imprime la variable a qui a une valeur 42 
-        a = 42 
-     
-    scene_change(sceneOld, sceneNew) 
-        End of sceneOld, load sceneNew. 
-        Scene must be str: if scene = scene python object, name is scene.name 
- 
-</code> 
- 
-====blenderviewport==== 
-<code txt> 
-FUNCTIONS 
-    disable_viewport(cam) 
-     
-    enable_full_viewport(cam) 
-        cam is blender object 
-     
-    enable_half_viewport(cam1, cam2) 
-        cam1 and 2 are blender objects 
-     
-    enable_quad_viewport(cam1, cam2, cam3, cam4) 
-        cam1 2 3 4 are blender objects 
-     
-    enable_stereo_viewport(cam1, cam2) 
-        cam1 and 2 are blender objects 
- 
-</code> 
- 
-====fifolist==== 
-<code txt> 
-CLASSES 
-    class PileFIFO(builtins.object) 
-      Pile FIFO pour faire statistiques sur dernières valeurs. 
-     |   
-      Methods defined here: 
-     |   
-      __init__(self, size) 
-          size définit la hauteur de la pile. 
-     |   
-      append(self, new) 
-          Ajoute pour avoir une pile constante de size valeurs. 
-     |   
-      average_calcul(self) 
-          Maj de la valeur moyenne de la pile. 
-     |   
-      inconsistency(self) 
-          La dernière valeur est-elle cohérente par rapport aux précédentes ? 
-          à lancer après append et average_calcul 
- 
-</code> 
- 
-====getmyip==== 
-<code txt> 
-FUNCTIONS 
-    get_my_ip() 
-        Retourne l'adresse ip du pc sur le réseau local. 
-        Valable pour python 3.x 
-        Non valable sur android 
- 
-</code> 
- 
-====httpdownload==== 
-<code txt> 
-DESCRIPTION 
-    Télécharge une url. 
-    Peut aussi l'enregister 
- 
-CLASSES 
-    class HttpDownload(builtins.object) 
-      Télécharge une url. 
-     |   
-      Retourne 
-          - un string si text (html) 
-          - des bytes si fichier 
-      Enregistre dans un fichier 
-     |   
-      Usage: 
-          hd = HttpDownload() 
-          # recupère la réponse 
-          resp = hd.get_response(url, timeout=2) 
-          # ou enregistre           
-          hd.save_response(u, timeout=2, name=name) 
-          # ou les 2 
-          resp = hd.save_response(u, timeout=2, name=name) 
-     |   
-      Methods defined here: 
-     |   
-      decode_or_not(self, response) 
-          Decode utf-8 si text, rien si fichier. 
-          Donc text = utf-8, fichier = bytes 
-     |   
-      get_response(self, someurl, timeout=2) 
-          Retourne la réponse de la requête, decodée si str 
-     |   
-      request(self, someurl, timeout=2) 
-          Télécharge une url. 
-          Retourne des bytes: https://bit.ly/2wau8j1 ou string vide 
-     |   
-      save_response(self, someurl, timeout=2, name='toto') 
-          Enregistre la réponse de la requête à someurl, 
-          dans un fichier name 
-          Retourne aussi la réponse. 
-          Si réponse None, ne fera rien, retourne None 
- 
-FUNCTIONS 
-    save_data_in_file(data, fichier, mode) 
-        Mode 'w' écrit un string dans le fichier 
-        Mode 'wb' écrit des bytes dans le fichier 
-        donc enregistre un fichier 
-        w ecrase 
-        a ajoute 
- 
-</code> 
- 
-====multicast==== 
-<code txt> 
-CLASSES 
-    class Multicast(builtins.object) 
-      Récupère des datas en Multicast. Sans try: 
-     |   
-      Methods defined here: 
-     |   
-      __init__(self, ip, port, buffer_size=1024) 
-          Initialize self.  See help(type(self)) for accurate signature. 
-     |   
-      create_sock(self) 
-          Création d'un socket multicast self.sock. 
-     |   
-      receive(self) 
-          Retourne les datas brutes reçue sur multicast. 
-     |   
-      send_to(self, msg, addr) 
-          Envoi de msg à addr en multicast. 
- 
-</code> 
- 
-====myconfig==== 
-<code txt> 
-DESCRIPTION 
-     
-    Pour un projet python: 
-        import os 
-        dossier = os.path.dirname(os.path.abspath(__file__)) 
-        ou 
-        os.getcwd() 
-     
-    Pour un projet Blender, le chemin complet est trouvé avec: 
-        bge.logic.expandPath() 
- 
-CLASSES 
-    class MyConfig(builtins.object) 
-      Charge la configuration depuis le fichier *.ini, 
-      sauve les changement de configuration, 
-      enregistre les changements par section, clé. 
-     |   
-      Methods defined here: 
-     |   
-      __init__(self, ini_file) 
-          Charge la config depuis un fichier *.ini 
-           
-          Le cemin doit être donné avec son chemin absolu. 
-     |   
-      load_config(self) 
-          Lit le fichier *.ini, et copie la config dans un dictionnaire. 
-     |   
-      save_config(self, section, key, value) 
-          Sauvegarde dans le fichioer *.ini  avec section, key, value. 
-           
-          Uniquement int, float, str 
- 
-</code> 
- 
-====mytools==== 
-<code txt> 
-DESCRIPTION 
-    Des méthodes souvent appelées par les autres scripts, 
-    regroupées dans une class MyTools 
- 
-CLASSES 
-    class MyTools(builtins.object) 
-      Methods defined here: 
-     |   
-      create_directory(self, directory) 
-          Crée le répertoire avec le chemin absolu. 
-          ex: /media/data/3D/projets/meteo/meteo_forecast/2017_06 
-     |   
-      data_to_json(self, data) 
-          Retourne le json des datas 
-     |   
-      get_absolute_path(self, a_file_or_a_directory) 
-          Retourne le chemin absolu d'un répertoire ou d'un fichier 
-          n'importe où. 
-     |   
-      get_all_files_list(self, root, file_end) 
-          Lit le dossier et tous les sous-dosssiers. 
-          Retourne une liste de tous les fichiers avec l'extension file_end 
-          avec le chemin absolu 
-          exemple: 
-              "network/http_download.py" 
-     |   
-      get_json_file(self, fichier) 
-          Retourne le json décodé des datas lues 
-          dans le fichier avec son chemin/nom. 
-     |   
-      print_all_key_value(self, my_dict) 
-          Imprime un dict contenant un dict, 
-          affiche le nombre de clés total. 
-     |   
-      read_file(self, file_name) 
-          Retourne les datas lues dans le fichier avec son chemin/nom 
-          Retourne None si fichier inexistant ou impossible à lire . 
-     |   
-      run_command_system(self, command) 
-          Excécute la command shell et reourne la sortie terminal. 
-          command = ['your_command', 'arg1', 'arg2', ...] 
-          Ne marche pas: 
-              resp = subprocess.call(command.split()) 
-     |   
-      write_data_in_file(self, data, fichier) 
-          Ecrit des data de type string dans le fichier, écrase l'existant. 
- 
-</code> 
- 
-====tcpclient==== 
-<code txt> 
-CLASSES 
-    class TcpClient(builtins.object) 
-      Envoi et réception sur le même socket en TCP. 
-     |   
-      Methods defined here: 
-     |   
-      __init__(self, ip, port) 
-          Initialize self.  See help(type(self)) for accurate signature. 
-     |   
-      close_sock(self) 
-          Fermeture de la socket. 
-     |   
-      connect_sock(self) 
-          Connexion de la socket, si ok retoune 1 sinon None 
-     |   
-      create_socket(self) 
-          Création du socket sans try, et avec connexion. 
-     |   
-      listen(self) 
-          Retourne les data brutes reçues. 
-     |   
-      reconnect(self) 
-          Reconnexion. 
-     |   
-      send(self, msg) 
-          Envoi d'un message, avec send, msg doit être encodé avant. 
- 
-</code> 
- 
-====udpclient==== 
-<code txt> 
-DESCRIPTION 
-    Recréer un socket avant chaque envoi ou réception, résoud les problèmes 
-    de réseau, ça se reconnecte tout seul. 
-    Par contre, le port éphémère du recvfrom changera à chaque fois. 
-     
-    Dans Blender, où il est impossible de créer un thread, socketserver, 
-    ou d'utiliser asyncio, c'est très adapté. 
-     
-    Doit encore être testé, en particulier si défaut réseau, serveur etc ... 
- 
-CLASSES 
-    class UdpClient(builtins.object) 
-      Envoi et reception en UDP. 
-      Cette classe n'encode pas le message à envoyer, sans try: . 
-     |   
-      Methods defined here: 
-     |   
-      __init__(self, buffer_size=1024, timeout=0.01) 
-          Création d'un socket UDP. 
-          buffer_size = entier, permet de vider le buffer à chaque lecture, 
-          pour avoir toujours la dernière valeur. 
-     |   
-      bind(self, addr) 
-          Quelle est la différence avec connect ? 
-     |   
-      close(self) 
-     |   
-      connect(self, addr) 
-          Connexion à l'adresse pour recevoir addr = tuple. 
-     |   
-      listen(self) 
-          Retourne les datas et l'adresse reçue. 
-     |   
-      send_to(self, req, address) 
-          Envoi à l'adresse = (ip, port). 
- 
-</code> 
- 
-{{tag>python sb}} 
pymultilame.1535459940.txt.gz · Dernière modification : 2018/08/28 12:39 de serge