URL: https://linuxfr.org/users/the_glu/journaux/taptempo-sous-la-forme-d-un-service-sur-internet Title: TapTempo sous la forme d'un service sur internet Authors: the_glu Date: 2018年03月11日T03:44:27+01:00 License: CC By-SA Tags: python et taptempo Score: 19 Bonjour tout le monde, Vu que nous somme en 2018, il est temps de passer à une version plus moderne de TapTempo. Toutes les versions étaient jusqu'à présent exécutées en local, alors que c'est tellement plus simple et plus pratique sous la forme d'un service sur internet exécuté sur un autre ordinateur, voir potentiellement dans le nuage _(hype °o°)_. Bien évidemment l'application reste destinée à être utilisée en ligne de commande: telnet theglu.org 2999 Si vous avez l'envie de déployer ça chez vous, voici le code pour référence. C'est du python3, +/- inspiré des autres versions en python qui traient :) ```python import socketserver from collections import deque from time import time HOST, PORT = "0.0.0.0", 2999 class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer): pass class TapTempoHandler(socketserver.BaseRequestHandler): def handle(self): self.request.sendall(b"TapTempo : Send any character, q to quit\r\n") counter = 0 last = 0 t = deque(maxlen=6) while True: c = self.request.recv(1) if c == b'q': break now = time() if now - last> 10: # Reset if more than 10s t.clear() else: t.append(now - last) last = now counter += 1 if counter> 2 and t: counter = 0 bpm = round(60.0 * len(t) / sum(t), 3) self.request.sendall(" BPM: {}\r\n".format(bpm).encode('utf-8')) self.request.sendall(b"Bye!\r\n") if __name__ == "__main__": with ThreadedTCPServer((HOST, PORT), TapTempoHandler) as server: server.serve_forever() ```