def date_display(): daynumber = current_day_number() if daynumber is not None: json = get_json() if json is not None: return 'Day %d of %d — %s' %(int(daynumber), len(json['schedule']['conference']['days'])-1, format_date(datetime_now())) else: logger.info('no conference') return 'No conference — %s' %(format_date(datetime.now()))
def load_local(filename=local_frab_feed): if os.path.exists(filename): with open(filename, 'r') as f: try: content = f.read().decode('utf-8') result = json.loads(content, strict=False) except (ValueError, Exception) as e: logger.error('could not parse json file ~ %s' %(e)) else: return result else: logger.info('json file %s not found' %(filename))
def load_remote(): content = web_scrape(remote_frab_feed) if content is not None: try: with open(local_frab_feed, 'w') as f: f.write(content) except Exception as e: logger.error('could not save json ~ %s' %(e)) else: logger.info('json file sucessfully written') else: logger.error('json scrape failed ~ %s' %(remote_frab_feed))
def current_day_number(): json = get_json() result = None if json is not None: content = json['schedule']['conference']['days'] for data in content: delta = datetime_now() - datetime_from_date(data['date']) if( delta >= timedelta(seconds=0) and delta <= timedelta(hours=24) ): result = int(data['index']) break logger.info('today is day %s' %(result)) return result
def writeCsv(srcFileName, dstFileName): with open(srcFileName, newline='') as csvdatei: csv_reader_object = csv.reader(csvdatei, delimiter=';') #schreibt die Info in das logfile lg.info("CSV file" + srcFileName + " opened") rownum = 0 Datum = "" Haendler = "" Betrag = "" for row in csv_reader_object: lg.info("Gelesen Reihe: {} : {}".format(rownum, row)) # erforderlich weil die ersten 2 Zeilen im Amazon CSV Schrott sind # wenn die Nummer der Reihe < 2 ist setze den Zähler um 1 hoch und mache weiter if rownum < 2: rownum += 1 else: # wenn die Spalte 2 einer Reihe nicht leer ist schreibe die Werte in eine Datei if row[2] != "": Datum = row[2] Haendler = row[3] Betrag = row[8] # schreibt den Händler bei der Ausgleichsbuchung weil der von der Bank leer gelassen wurde if row[3] == '': Haendler = "Sparkasse Ausgleich Kreditkarte" #logger.info(Datum + ' ' + Haendler + ' ' + Betrag) with open(dstFileName, 'a+', newline='') as csvfile: fieldnames = ['Datum', 'Haendler', 'Betrag'] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) if Datum != '': writer.writerow({ 'Datum': Datum, 'Haendler': Haendler, 'Betrag': Betrag }) lg.info("Geschrieben Reihe {}: {} {} {}".format( rownum, Datum, Haendler, Betrag)) Datum = "" Haendler = "" Betrag = "" rownum += 1 # für den Ausdruck der Rownummer im Logging csvdatei.close() csvfile.close() lg.info("CSV geschrieben in Datei : " + dstFileName) lg.info( "<<<<<<<<<<<<<<<<<<<<<< Neues CSV geschrieben >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" )
def cleanDst(dst): lg.info( "<<<<<<<<<<<<<< CLEARING DST Folder gestartet >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" ) dir = os.listdir(dst) for el in dir: src = dst + el shutil.move(src, arcFolder) lg.info("{} was moved to arc".format(el)) lg.info( "<<<<<<<<<<<<<<< CLEARING DST Folder BEENDET >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" )
def cleanArc(arc): lg.info( "<<<<<<<<<<<<<<< Clearing Arc gestartet >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" ) dir = os.listdir(arc) dirSort = sorted(dir) lenDirSort = len(dirSort) while lenDirSort > 10: remFile = arc + dirSort[0] os.remove(remFile) lg.info("File {} removed".format(dirSort[0])) lenDirSort = lenDirSort - 1 dirSort.pop(0) lg.info( "<<<<<<<<<<<<< Clearing Arc beendet >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" )
def schedule(): json = get_json() today = current_day_number() result = [] if today is not None: if json is not None: content = json['schedule']['conference']['days'][today]['rooms'] for rooms in content.itervalues(): for event in rooms: if datetime_from_time(event['start']) >= datetime_from_time(format_time(datetime_now())): time = [event['start'].rjust(fb_time_length)] tdiff = datetime_from_time(event['start']) - datetime_from_time(format_time(datetime_now())) if tdiff <= timedelta(minutes=boarding_time): time.append('Boarding'.rjust(fb_time_length)) elif tdiff <= timedelta(hours=1): minutedelta = '%02d Min' %(tdiff.seconds / 60) time.append(minutedelta.rjust(fb_time_length)) gate = [event['room'].rjust(fb_gate_length)] if '105' in event['room']: gate.append('Workshop'.rjust(fb_gate_length)) flight = [event['id']] if event['language']: flight.append(event['language'].rjust(fb_flight_length)) depature = wrap(_strconv(event['title'].strip()), fb_daparture_length) if event['subtitle']: depature += wrap(_strconv(event['subtitle'].strip()), fb_daparture_length) result.append({ 'time': { 'messages': time, 'maxLength': fb_time_length, }, 'gate': { 'messages': gate, 'maxLength': fb_gate_length, }, 'flight': { 'messages': flight, 'maxLength': fb_flight_length, }, 'depature': { 'messages': depature, 'maxLength': fb_daparture_length, }, }) if len(result) == 0: logger.info('no talks for today') result.append({ 'time': { 'messages': ['x' * fb_time_length, '-' * fb_time_length], 'maxLength': fb_time_length, }, 'gate': { 'messages': ['x' * fb_gate_length, '-' * fb_gate_length], 'maxLength': fb_gate_length, }, 'flight': { 'messages': ['x' * fb_flight_length, '-' * fb_flight_length], 'maxLength': fb_flight_length, }, 'depature': { 'messages': ['x' * fb_daparture_length, '-' * fb_daparture_length], 'maxLength': fb_daparture_length, }, }) result.sort(key=lambda x: x['time']['messages']) logger.info('schedule ready ~ got %s entries' %(len(result))) return result
def get_json(): if (timestamp()/60 - frab_feed_refresh_span) >= app.last_refresh: load_remote() app.last_refresh = timestamp() logger.info('json refresh span reset') return load_local()
def blocklog(msg, char='-'): logger.info(char * len(msg)) logger.info(msg) logger.info(char * len(msg))