pymultilame
Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédenteDernière révisionLes deux révisions suivantes | ||
pymultilame [2018/08/25 11:34] – créée serge | pymultilame [2021/08/21 15:47] – ↷ Liens modifiés en raison d'un déplacement. 216.244.66.228 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
======Python: | ======Python: | ||
- | <WRAP center round box 60%> | + | <WRAP center round box centeralign |
**Des scripts pour les tâches de tous les jours** | **Des scripts pour les tâches de tous les jours** | ||
</ | </ | ||
- | =====Principe===== | + | =====Les sources sur GitHub===== |
+ | * **[[https:// | ||
- | ====Les sources sur github==== | + | ===== pymultilame ===== |
- | ====Les rubriques===== | + | ==== Des scripts python pour les tâches répétitives. |
- | ===Network=== | + | |
- | ===Tools=== | + | Ce module propose les outils |
- | Des outils | + | |
+ | Ce module est une amélioration de | ||
- | ====Installation==== | + | * [[https:// |
+ | qui n'est plus maintenu. | ||
- | ====Utilisation==== | + | === Rubriques proposées |
+ | * 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 ==== | ||
- | =====Network===== | + | === Installation de Twisted pour python 3.x === |
- | ====Téléchargement d' | + | * [[archives: |
- | ===url_download.py=== | + | < |
- | < | + | sudo pip3 install twisted |
- | | + | </ |
- | | + | |
- | - un string si text (html) | + | === Installation de pymultilame === |
- | | + | |
- | | + | * [[creer_son_propre_package_python|Python: |
+ | |||
+ | < | ||
+ | sudo pip3 install -e git+https:// | ||
+ | </ | ||
+ | |||
+ | Mise à jour: | ||
+ | |||
+ | < | ||
+ | sudo pip3 install --upgrade git+https:// | ||
+ | </ | ||
+ | |||
+ | ==== Utilisation ==== | ||
+ | |||
+ | < | ||
+ | # Imports en python3 | ||
+ | from pymultilame import HttpDownload | ||
+ | from pymultilame import MyTools | ||
+ | from pymultilame import TcpClient3 | ||
+ | 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 import scene_change, droiteAffine, | ||
+ | from pymultilame import get_all_objects, | ||
+ | |||
+ | |||
+ | # Imports en python2 | ||
+ | |||
+ | from pymultilame.myconfig2 import MyConfig2 | ||
+ | from pymultilame.tcpclient2 import TcpClient2 | ||
+ | </ | ||
+ | |||
+ | ==== Licence ==== | ||
+ | |||
+ | Touls les scripts sont sous | ||
+ | |||
+ | GNU GENERAL PUBLIC LICENSE Version 3 | ||
+ | |||
+ | voir le fichier LICENSE | ||
+ | |||
+ | =====Documentation génèrée avec pydoc3.5===== | ||
+ | Le script qui génère cette doc est dans le module pymultilame. | ||
+ | ====blendergetobject==== | ||
+ | <code txt> | ||
+ | FUNCTIONS | ||
+ | get_all_objects() | ||
+ | | ||
+ | | ||
| | ||
- | | + | |
- | hd = HttpDownload() | + | |
- | | + | |
- | resp = hd.get_response(url, | + | |
- | # ou enregistre | + | |
- | hd.save_response(u, timeout=2, name=name) | + | |
- | | + | |
- | resp = hd.save_response(u, | + | |
- | request(someurl, | + | </ |
- | | + | |
- | | + | ====blendersound==== |
+ | <code txt> | ||
+ | DESCRIPTION | ||
+ | Classe générique qui permet de gérer facilement le son | ||
+ | dans le Blender Game Engine BGE. | ||
| | ||
- | save_response( someurl, timeout=2, name="toto"): | + | gl est le GameLogic, get with : from bge import logic as gl |
- | Enregistre la réponse de la requête à someurl, | + | |
- | dans un fichier name | + | Appel de cette classe où tous les sons sont dans une liste avec : |
- | Retourne aussi la réponse. | + | import aud |
- | Si réponse None, ne fera rien, retourne None | + | |
- | + | soundList = [" | |
- | get_response(self, | + | |
- | | + | Création de l' |
- | + | ||
- | </ | + | gl.sound = EasyAudio(soundList) |
- | + | soit { " | |
- | + | Joue le son boum | |
- | {{tag> | + | gl.sound[" |
+ | Stop le son | ||
+ | gl.sound[" | ||
+ | Idem repeat, pause | ||
+ | |||
+ | CLASSES | ||
+ | Factory | ||
+ | |||
+ | class EasyAudio(builtins.dict) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | class Factory(builtins.object) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | ====blendertempo==== | ||
+ | <code txt> | ||
+ | CLASSES | ||
+ | TempoFactory | ||
+ | |||
+ | class Tempo(builtins.dict) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | class TempoFactory(builtins.object) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | FUNCTIONS | ||
+ | test() | ||
+ | Tourne en dehors de Blender. | ||
+ | |||
+ | </ | ||
+ | |||
+ | ====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) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | ====blendertools==== | ||
+ | <code txt> | ||
+ | FUNCTIONS | ||
+ | droiteAffine(x1, | ||
+ | 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(" | ||
+ | imprime la variable a qui a une valeur 42 | ||
+ | a = 42 | ||
+ | |||
+ | scene_change(sceneOld, | ||
+ | End of sceneOld, load sceneNew. | ||
+ | Scene must be str: if scene = scene python object, name is scene.name | ||
+ | |||
+ | </ | ||
+ | |||
+ | ====blenderviewport==== | ||
+ | <code txt> | ||
+ | FUNCTIONS | ||
+ | disable_viewport(cam) | ||
+ | Disable | ||
+ | |||
+ | enable_full_viewport(cam) | ||
+ | cam is blender object | ||
+ | |||
+ | enable_half_viewport(cam1, | ||
+ | cam1 and 2 are blender objects | ||
+ | |||
+ | enable_quad_viewport(cam1, | ||
+ | cam1 2 3 4 are blender objects | ||
+ | |||
+ | enable_stereo_viewport(cam1, | ||
+ | cam1 and 2 are blender objects | ||
+ | |||
+ | </ | ||
+ | |||
+ | ====fifolist==== | ||
+ | <code txt> | ||
+ | CLASSES | ||
+ | class PileFIFO(builtins.object) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | ====getmyip==== | ||
+ | <code txt> | ||
+ | FUNCTIONS | ||
+ | get_my_ip() | ||
+ | Retourne l' | ||
+ | Valable pour python 3.x | ||
+ | Non valable sur android | ||
+ | |||
+ | </ | ||
+ | |||
+ | ====httpdownload==== | ||
+ | <code txt> | ||
+ | DESCRIPTION | ||
+ | Télécharge une url. | ||
+ | Peut aussi l' | ||
+ | |||
+ | CLASSES | ||
+ | class HttpDownload(builtins.object) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |||
+ | FUNCTIONS | ||
+ | save_data_in_file(data, | ||
+ | | ||
+ | Mode ' | ||
+ | donc enregistre un fichier | ||
+ | w ecrase | ||
+ | a ajoute | ||
+ | |||
+ | </ | ||
+ | |||
+ | ====multicast==== | ||
+ | <code txt> | ||
+ | CLASSES | ||
+ | class Multicast(builtins.object) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | ====myconfig==== | ||
+ | <code txt> | ||
+ | DESCRIPTION | ||
+ | Le fichier ini doit être défini avec son chemin absolu | ||
+ | |||
+ | Pour un projet python: | ||
+ | | ||
+ | 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) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | ====myconfig2==== | ||
+ | <code txt> | ||
+ | DESCRIPTION | ||
+ | Le fichier ini doit être défini avec son chemin absolu | ||
+ | |||
+ | Pour un projet python: | ||
+ | | ||
+ | | ||
+ | ou | ||
+ | os.getcwd() | ||
+ | |||
+ | Pour un projet Blender, le chemin complet est trouvé avec: | ||
+ | bge.logic.expandPath() | ||
+ | |||
+ | CLASSES | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | ====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) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | ====tcpclient2==== | ||
+ | <code txt> | ||
+ | CLASSES | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | ====tcpclient3==== | ||
+ | <code txt> | ||
+ | CLASSES | ||
+ | class TcpClient3(builtins.object) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | ====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. | ||
+ | |||
+ | CLASSES | ||
+ | class UdpClient(builtins.object) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | {{tag> |