TimeLimiter_Code

back

Ich stelle hier den Programmcod zur verfügung, aber bitte nur für Private Nutzung! Bitte keine anderen Versionen zur Veröffentlichung stellen!

Code:

   1 #!/usr/bin/python
   2 # -*- coding: utf-8 -*-
   3 info =\
"""
   4 ################################################################################
   5 ##~Name: TimeLimiter (Zeittool)
   6 ##~Version: 0.4
   7 ##~Autor: Jonas T.
   8 ##******************************************************************************
   9 ##
  10 ##Beschreibung:
  11 ##  Fährt den Rechner nach festgelegter Zeit ruter
  12 ##
  13 ################################################################################
  14 """
  15 
  16 def run_timelimiter():
  17     import os, sys, subprocess
  18     import time
  19     import getpass
  20 
  21     try:
  22         import dbus
  23     except:
  24         None
  25 
  26     system = sys.platform
  27 
  28     autor =   ("Jonas T.")
  29     if system == "linux2":
  30         version = ("\033[31mTimeLimiter - Version 0.3\033[m")
  31     else:
  32         version = ("TimeLimiter - Version 0.3")
  33     vertext = ("0.4")
  34 
  35     def help_text():
  36         print """
  37 
  38 Befehl:
  39     timelimiter [OPTION...] oder hh:mm - Zeit begrennzen
  40 
  41 Optionen:
  42 
  43       hh:mm                                 Zeitangabe
  44     --help, -help oder help                 Zeigt den Hilfe-Text
  45     --version, -version, version oder v     Zeigt die Version an
  46     --info, -info oder info                 Zeigt den Info-Text an
  47 
  48 Allgemeine Bedienung:
  49 
  50     Die Zeit wird im hh:mm angegeben,
  51     es es ist aber nicht die Urzeit gemeint zu der  herruntergefahren werden soll,
  52     sie bestimmen den Zeitraum bis zum herrunterfahren.
  53 """
  54     #~MSG_BOX
  55     def msg(text):
  56         subprocess.Popen("msg %s" %(text), shell = True)
  57     #~Ubuntu Notify
  58     def notify(text):
  59         try:
  60             subprocess.Popen("notify-send %s" %(text), shell = True)
  61         except Exception as e:
  62             print e
  63     #~Ubuntu Notify Icon
  64     def notify_icon(pfad, text):
  65         try:
  66             subprocess.Popen("notify-send -i %s '%s'" %(pfad, text), shell = True)
  67         except Exception as e:
  68             print e
  69 
  70     ###########################################################
  71     system = sys.platform
  72 
  73     if system == "win32":
  74         print "\nTimeLimiter(%s) for Windows\n" % vertext
  75         #print "**************************************************\n"
  76         befehleintrag = "shutdown -t"
  77         showinfo = False
  78         show_restzeit = False
  79 
  80     if system == "linux2":
  81 
  82         print "\n\033[1;32mTimeLimiter(%s) for Linux\033[m\n"   % vertext
  83         #bildpfad = os.getcwd() + os.path.join("/url2.gif")
  84         bildpfad =  ("/usr/share/pyshared/timelimiter/url2.gif")
  85         befehleintrag = "shutdown -ohne root"
  86         showinfo = True
  87         show_restzeit = False
  88     #############################################################
  89     Zusatz_Zeit = 60
  90     befehleintrag = befehleintrag
  91     #############################################################
  92 
  93     try:
  94         begrennzte_zeit = sys.argv[1] #~Konsoleneingang
  95 
  96         ##################~Help~##############################
  97         if begrennzte_zeit == "--help" or begrennzte_zeit == "-help" or begrennzte_zeit == "help":
  98             help_text()
  99             begrennzte_zeit = None
 100         ##################~Version~############################
 101         if begrennzte_zeit == "--version" or begrennzte_zeit == "-version" or begrennzte_zeit == "version" or begrennzte_zeit == "v":
 102             print version
 103             begrennzte_zeit = None
 104         ##################~Autor~#############################
 105         if begrennzte_zeit == "--autor" or begrennzte_zeit == "-autor" or begrennzte_zeit == "autor":
 106             print autor
 107             begrennzte_zeit = None
 108          ##################~Info~##############################
 109         if begrennzte_zeit == "--info" or begrennzte_zeit == "-info" or begrennzte_zeit == "info":
 110             print info
 111             begrennzte_zeit = None
 112 
 113     except Exception as e:
 114         ##################~Time Input~###########################
 115         if system == "linux2":
 116             print ("\033[1;34mAngabeformat: Stunde:Minute(00:00)\033[m")
 117         else:
 118             print ("Angabeformat: Stunde:Minute(00:00)")
 119 
 120         begrennzte_zeit = raw_input("Zeitbegrenzung: ")
 121 
 122         ##########~Zeigt bei Linux und Windows die Info an###################
 123 
 124     if showinfo == True:
 125         if system == "linux2":
 126             notify_icon(bildpfad, "'Zeitbegrennzung:' %s" % begrennzte_zeit)
 127         if system == "win32":
 128             msg("Zeitbegrennzung: %s")  % begrennzte_zeit
 129 
 130             ##########~Ausgaben~###################################
 131     if begrennzte_zeit == None:
 132         print ""
 133     else:
 134         try:
 135             geteilte_zeit =  begrennzte_zeit.split(":")
 136 
 137             stunde  =  geteilte_zeit[0]
 138             minute  =  geteilte_zeit[1]
 139 
 140             print "Stunde : %s" % stunde
 141             print "Minute : %s" % minute
 142             print
 143 
 144             ##########~Ausrechnung für die restzeit in Sekunden~###################
 145             restzeit = int(minute) * 60 + int(stunde) *60 * 60
 146             restzeit -= 60
 147             ##########~Rechnung für Ausgaben~#############################
 148 
 149             aktuelle_zeit = time.strftime("%H:%M")
 150             add =  aktuelle_zeit.split(":")
 151 
 152             stundenzeit = int(add[0]) + int(stunde)
 153             minutenzeit = int(add[1]) + int(minute)
 154 
 155             gesammtzeit =  str(stundenzeit) + ":" + str(minutenzeit)
 156             pzeit = int(gesammtzeit[3:6])
 157 
 158             if pzeit < 10:
 159               vstundenzeit = gesammtzeit[0:3]
 160               vminutenzeit = gesammtzeit[3:6]
 161 
 162               gzeit = vstundenzeit + "0" + vminutenzeit
 163 
 164             print "Einstellung: " + begrennzte_zeit
 165             print "Zeitvorgabe zum Herrunterfahren: " + gesammtzeit
 166 
 167             ##########~Ausgaben/Infos~#######################################
 168 
 169             info_zeit = 0
 170             if restzeit > 239:
 171               info_zeit = 300
 172               restzeit -= info_zeit
 173               show_restzeit = True
 174 
 175             elif restzeit > 478:
 176               info_zeit = 600
 177               restzeit -= info_zeit
 178               show_restzeit = True
 179             else:
 180                 None
 181 
 182             ##########~Programm wird angehalten bis zum Shutdown~#####################
 183             try:
 184                 time.sleep(restzeit)
 185             except:
 186                 None
 187 
 188             if show_restzeit == True:
 189                 umwandlung = {300 : 5, 600 : 10}
 190                 if system == "linux2":
 191                     notify("'Noch %s Minuten'" % str(umwandlung[info_zeit]))
 192                 if system == "win32":
 193                     print True
 194                     msg("Noch %s Minuten" % str(umwandlung[info_zeit]))
 195                 time.sleep(info_zeit)
 196 
 197             ##########~Zeigt eine Info an, wenn True~###############################
 198 
 199             if showinfo == True:
 200               if system == "linux2":
 201                             notify("'Herrunterfahren in %ss'" %Zusatz_Zeit)
 202 
 203               if system == "win32":
 204                             msg('Herrunterfahren in %ss' %Zusatz_Zeit )
 205 
 206             ##########~Vorbereitung zum Herrunterfahren~############################
 207 
 208             print "Herunterfahren in..."
 209 
 210             for i in range(Zusatz_Zeit, 0, -1): #Zählt von 60 runter
 211               print "%ss" % i
 212               time.sleep(1)
 213 
 214             print ("System wird Herrundergefahren... ")     #~Information in der Konsole
 215             notify("'System wird Herrundergefahren...'")    #~Zeigt bei Ubuntu eine Nachicht an
 216 
 217             ##########~Windows~###########################################
 218 
 219             if sys.platform == "win32":
 220                 subprocess.Popen(befehleintrag)
 221 
 222             ##########~Ubuntu ohne Root~######################################
 223 
 224             if befehleintrag == "shutdown -ohne root":
 225               def shutdown():
 226                 try:
 227                     shutdown = dbus.SessionBus()
 228                     remote_object = shutdown.get_object('org.gnome.SessionManager',
 229                     '/org/gnome/SessionManager')
 230                     remote_object.RequestShutdown()
 231                     print True
 232 
 233                 except dbus.exceptions.DBusException:
 234                     pass
 235                     print False
 236 
 237                 else:
 238                     return
 239 
 240                 try:
 241                     shutdown = dbus.SessionBus()
 242 
 243                     remote_object = shutdown.get_object('org.kde.ksmserver', '/KSMServer')
 244                     remote_object.logout(0, 0, 2, dbus_interface='org.kde.KSMServerInterface')
 245                     print True
 246                 except dbus.exceptions.DBusException:
 247                     pass
 248                     print False
 249 
 250                 else:
 251                     return
 252 
 253                 try:
 254                     shutdown = dbus.SystemBus()
 255 
 256                     remote_object = shutdown.get_object('org.freedesktop.Hal',
 257                     '/org/freedesktop/Hal/devices/computer')
 258                     remote_object.Shutdown(dbus_interface='org.freedesktop.Hal.Device.SystemPowerManagement')
 259                     print True
 260 
 261                 except dbus.exceptions.DBusException:
 262                     print "Shutdown failed."
 263 
 264             shutdown()
 265             ##############################################################
 266 
 267         except Exception as e:
 268             raise SyntaxError("Fehlerhafte Angaben!")
 269             print (e)
 270 
 271 run_timelimiter()

Der Code ist zwar noch nicht ganz Ordentlich, aber ich Arbeite noch dran, wer will kann sich auch Mitmachen. Anmeldung zum Mitmachen :-)

Download:' TimeLimiter

back

TimeLimiter_Code (last edited 2012-01-02 13:18:45 by jtschoch)