ich weiß leider nicht mehr weiter. Also möchte ein Logfile auslesen. Das Log ist aber nur online zu bekommen. Deshalb lade ich es mit urllib2 versucht. Das geht ja noch gut, aber es ist meist 2 MB groß und ich möchte zum Beipsiel nur die letzten 100 KB auslesen, damit nur das neu hinzugekommende Material übernommen werden kann. Das Log ist keine HTML-Seite. Es ist eine *.log. Naja der Inhalt wird jedenfalls im Browser angezeigt, ist halt nur Text, deshalb kommt ein HTML-Parser nicht in Frage denke ich. Habt ihr vieleicht eine Idee, wie ich die letzten 100 KB aus dem Log downloaden kann?
Zurzeit lade ich noch alles runter und prüfe die Zeilen bis der neue Teil anfängt, das dauert schon einige Zeit.
PS: (Das ist alles nur Quick und Dirty)
Code: Alles auswählen
#! /usr/bin/env python
# -*- coding: utf-8 -*-
from urllib2 import urlopen
from sqlite3 import dbapi2 as sqlite
class LogFileSaver(object):
def __init__(self):
self.logList = []
self.dbNameNew = "BO_SKSB.sqlite"
self.__conNewDB = sqlite.connect(self.dbNameNew)
self.__curNewDB = self.__conNewDB.cursor()
self.serverID = 1
self.link = "http://logs.gameservers.com/173.199.108.158:3074/8d3be2c0-1a32-4ebd-9d1c-b387024f28cf"
self.lastGameDiff = 1000 # Differenz von der maximalen Anzahl der Spiele
def getLog(self):
f = urlopen(self.link)
self.__curNewDB.execute('SELECT SLastGame FROM bous_server WHERE ID=' + str(self.serverID))
lastGame = self.__curNewDB.fetchone()[0]
line = f.readline()
while line:
pos1 = line.find(":")
gameCounter = int(line[:pos1]) # gamecounter
if gameCounter < (lastGame-self.lastGameDiff):
print "ServerRestart"
self.logList.append(line)
elif gameCounter < lastGame:
print "Warte bis an richtiger Stelle"
elif gameCounter > lastGame:
print "Neue Daten!"
self.logList.append(line)
elif gameCounter == lastGame:
pass
else:
self.logList.append(line)
self.__conNewDB.commit()
line = f.readline()
self.__curNewDB.execute('UPDATE bous_server SET SLastGame = ' + str(gameCounter) + 'WHERE ID =' + str(self.serverID))
if __name__ == "__main__":
log = LogFileSaver()
log.getLog()