25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

107 lines
3.1 KiB

  1. from datetime import datetime
  2. import psutil, time, requests
  3. from win10toast import ToastNotifier
  4. toaster = ToastNotifier()
  5. from datetime import datetime
  6. from config import Gotify
  7. datetime.today().strftime('%Y-%m-%d')
  8. print("Exemple : firefox.exe")
  9. searching_process = input("Veuillez entrer le processus que vous voulez surveiller : ")
  10. def countdown(founded_process):
  11. heure_depart = time.time()
  12. print("Chronometre en marche !")
  13. print("Process surveillé : " + str(founded_process))
  14. print("Heure de départ (Secondes): " + str( int(heure_depart) ))
  15. print("- ")
  16. print("Laissez cette fenetre ouverte. Vous recevrez une notification lorsque le chronometre s'arretera.")
  17. while catch_process(searching_process) != None :
  18. time.sleep(1)
  19. heure_arret = time.time()
  20. uptime_process = int(heure_arret) - int(heure_depart)
  21. heures = 0
  22. minutes = 0
  23. secondes = 0
  24. while uptime_process > 3600 :
  25. uptime_process = uptime_process - 3600
  26. heures += 1
  27. if heures < 10 :
  28. heures = '0' + str(heures)
  29. while uptime_process > 60 :
  30. minutes += 1
  31. uptime_process = uptime_process - 60
  32. if minutes < 10 :
  33. minutes = '0' + str(minutes)
  34. secondes = uptime_process
  35. if secondes < 10 :
  36. secondes = '0' + str(secondes)
  37. send_gotify('NSL ' + searching_process, "Uptime du processus : %s:%s:%s " % (heures, minutes, secondes) )
  38. print("Uptime du processus : %s:%s:%s " % (heures, minutes, secondes))
  39. toaster.show_toast("NoSocialLife Counter","Arret du programme : " + searching_process )
  40. toaster.show_toast("NoSocialLife Counter","Uptime du processus : %s:%s:%s " % (heures, minutes, secondes))
  41. date = datetime.today().strftime('%d-%m-%Y')
  42. f = open("logs.txt", "a")
  43. f.write(date + " | Programme : " + searching_process + " | Uptime du processus : %s:%s:%s " % (heures, minutes, secondes))
  44. f.close()
  45. def main():
  46. toaster.show_toast("NoSocialLife Counter","Programme recherché : " + searching_process )
  47. process_running = False
  48. delay = 10
  49. founded_process = catch_process(searching_process)
  50. if founded_process != None :
  51. print("Le processus recherché à été trouvé!")
  52. process_running = True
  53. while process_running == False :
  54. founded_process = catch_process(searching_process)
  55. print("Etat de la recherche : " + str(founded_process))
  56. if founded_process != None :
  57. print("PROCESS TROUVE !")
  58. process_running = True
  59. time.sleep(1)
  60. countdown(founded_process)
  61. def send_gotify(title, message):
  62. resp = requests.post(Gotify['URL'] + '?token=' + Gotify['token_gotify'] , json={
  63. "message": message,
  64. "priority": 2,
  65. "title": title
  66. })
  67. def catch_process(searching_process):
  68. catched = False
  69. for p in psutil.process_iter(attrs=['pid', 'name']):
  70. if p.info['name'] == searching_process :
  71. founded_process = p.info['name']
  72. catched = True
  73. if catched == False :
  74. founded_process = None
  75. return founded_process
  76. if __name__ == '__main__':
  77. main()