German Elite - Runescape Skilling-Based Clan


 
StartseiteKalenderGalerieFAQSuchen...MitgliederNutzergruppenAnmeldenLoginGE YouTube Channel
Login
Benutzername:
Passwort:
Bei jedem Besuch automatisch einloggen: 
:: Ich habe mein Passwort vergessen!
Dezember 2016
MoDiMiDoFrSaSo
   1234
567891011
12131415161718
19202122232425
262728293031 
KalenderKalender
Die neuesten Themen
» Skilful-Lotus
Sa 23 Apr 2016, 00:41 von Dragen00222

» dfgdfg
Di 02 Jun 2015, 21:37 von Charry x3

» Role-Play-Gaming (Rpg)
Di 16 Dez 2014, 05:27 von Gast

» Nicht anwesend !!!
Di 22 Apr 2014, 22:28 von Reachman

» Kurzes Hallo von einem der 7 Gründer GEs
So 14 Apr 2013, 04:52 von Elora Wood

» Was ist nun mit German Elite? Aufloesung des Clans!
Mo 25 Feb 2013, 01:03 von Alex

» Krieg der Seelen Community-Event
Mi 13 Feb 2013, 20:38 von Gast

» adè GE
Di 12 Feb 2013, 23:17 von FmL0rd

» Irgendwann ist mal Schluss
Do 07 Feb 2013, 20:50 von Phil


Austausch | 
 

 Droplog funktioniert nicht mehr

Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach unten 
Gehe zu Seite : 1, 2  Weiter
AutorNachricht
Vota



Geschlecht : Männlich Anzahl der Beiträge : 304
Anmeldedatum : 09.05.09
Alter : 48
Ort : Frankfurt
RS-Anzeigename : Mystic Heart

BeitragThema: Droplog funktioniert nicht mehr   Di 08 Nov 2011, 03:10

Hallo zusammen

wie euch vielleicht schon aufgefallen ist, zeigt das Droplog nichts mehr an

Grund hierfür ist eine Änderung am Pricing-Model bei Google.apps.

Hauptänderung ist, dass Google die Anzahl der Datastore Zugriffe drastisch eingeschränkt hat. Konkret auf 50.000 API-Zugriffe pro Tag. Was für die derzeitige Funktionsweise des Droplogs ziemlich wenig ist. Jedenfalls wurde diese Zahl deutlich überschritten, was eine temporäre Sperrung durch Google nachsichzieht.

Wie schnell sich das Problem beheben lässt, kann ich nicht sagen. Meiner Meinung nach müsste die Droplog-App grundlegend umgebaut werden, um unter den neuen Bedingungen auf gleichem Qualitätsniveau zu arbeiten wie zuvor

Einstweilen, sozusagen als kurzfristige Maßnahme, ist das Update Interval angepasst.
Sobald Google die App wieder freigibt (morgen früh gegen 9 Uhr), könnte die Anzeige wieder funktionieren, allerdings wird es dann deutlich länger dauern, bis Drops und Level-Ups sichtbar werden.

Sollte diese Maßnahme nicht greifen, bleibt nur der angesprochene Umbau der App, oder der Verzicht darauf.

VG/Volker
Nach oben Nach unten
Benutzerprofil anzeigen
Vota



Geschlecht : Männlich Anzahl der Beiträge : 304
Anmeldedatum : 09.05.09
Alter : 48
Ort : Frankfurt
RS-Anzeigename : Mystic Heart

BeitragThema: Re: Droplog funktioniert nicht mehr   Di 08 Nov 2011, 17:11

Okay, wie ich sehe, verlängert die im vorherigen Post beschriebene Maßnahme die verfügbare Betriebszeit der App nur unzureichend. Um 9 Uhr wurde sie wieder freigegeben, gegen 13.30 Uhr wurde sie aufgrund der beschriebenen Einschränkungen wieder gesperrt.

Primäre Ursache ist, dass jeder einzelne Seitenaufruf in unserem Forum hunderte dieser Datastore-API-Zugriffe verursacht.
Sobald Elora verfügbar ist, werde ich mit ihr mögliche Lösungsszenarien diskutieren.
Bis dahin steht das Log erstmal nicht zur Verfügung

Für Interessierte hier ein paar Links zu dem Thema
http://www.google.com/enterprise/cloud/appengine/pricing.html
http://code.google.com/intl/de-DE/appengine/
http://www.heise.de/newsticker/meldung/Google-App-Engine-jetzt-offizielles-Google-Produkt-1374964.html


VG/Volker
Nach oben Nach unten
Benutzerprofil anzeigen
Rhoikos



Geschlecht : Männlich Anzahl der Beiträge : 1550
Anmeldedatum : 29.08.10
Alter : 23
RS-Anzeigename : Rhoikos

BeitragThema: Re: Droplog funktioniert nicht mehr   Di 08 Nov 2011, 17:31

Heyho,

danke Vota, dass du dich da schlau drüber gemacht hast.

Es ist ja aber irgendwie verständlich, dass wenn so viele Leute bei diesen Google.apps was basteln die Zugriffe immens hoch werden.
Ich kenn mich damit nich gut genug aus um einzuschätzen wie einfach es zu verwirklichen is, aber das update einmal am Tag reicht im Grund völlig aus.


Gruß Rhoi

_________________

Nach oben Nach unten
Benutzerprofil anzeigen
Offizier Rey



Geschlecht : Männlich Anzahl der Beiträge : 743
Anmeldedatum : 05.01.10
Alter : 23
Ort : Deutschland
RS-Anzeigename : Offizier Rey

BeitragThema: Re: Droplog funktioniert nicht mehr   Di 08 Nov 2011, 17:38

Jo Danke, dass du uns so genau informiert hast.
Nach oben Nach unten
Benutzerprofil anzeigen
Elora Wood



Geschlecht : Weiblich Anzahl der Beiträge : 2725
Anmeldedatum : 06.11.09
Ort : Tierra
RS-Anzeigename : Elora Wood

BeitragThema: Re: Droplog funktioniert nicht mehr   Di 08 Nov 2011, 18:59

Danke Vota, fuer den Beitrag!
Ich finde auch, wenn es dazu kommt dann wird es eben nur einmal am Tag aktualisiert. Man kann dann aber wenigstens trotzdem dann noch so sehen was die anderen am Tag zuvor gemacht haben usw.

Mal schaun - wir pm'n uns ;)

LG, Elo

_________________
Be yourself, everyone else is already taken!
Nach oben Nach unten
Benutzerprofil anzeigen http://germanelite.forumieren.eu/
silvio1234



Geschlecht : Männlich Anzahl der Beiträge : 497
Anmeldedatum : 06.07.09
Alter : 24
Ort : nähe Schaffhausen

BeitragThema: Re: Droplog funktioniert nicht mehr   Mi 09 Nov 2011, 00:10

Huhu Vota

Danke dir, dass du dich ein wenig schlau gemacht hast. Wusste das noch nicht Smile

Mfg Silvio
Nach oben Nach unten
Benutzerprofil anzeigen
Vota



Geschlecht : Männlich Anzahl der Beiträge : 304
Anmeldedatum : 09.05.09
Alter : 48
Ort : Frankfurt
RS-Anzeigename : Mystic Heart

BeitragThema: Re: Droplog funktioniert nicht mehr   Mi 09 Nov 2011, 01:35

Leider ist es vermutlich mit einem Update nur einmal täglich nicht getan. Wie beschrieben, verursacht jeder Seitenaufruf unseres Forums hunderte Aufrufe. Sprich, selbst wenn man ganz "normal" im Forum surft, verbraucht man schon sehr viele dieser maximal 50.000 API Calls. Hier müsste etwas ganz grundsätzlich an der App geändert werden.

Ich hätte zumindest eine Idee, die ich gerne ausprobieren möchte, auch wenn ich nicht weiß, ob sie am Ende erfolgreich ist. Daher habe ich mit Elora vereinbart, dass ich versuche mich des Themas anzunehmen. D.h. ich werde zum Wochenende hin am Droplog rumbasteln und dann hier in diesem Thread Rückmeldung geben.

German Elite ist ja übrigens nicht der einzige Clan, der ein solches Droplog nutzt. Ich habe mich also mal umgeschaut und fand bestätigt, dass alle anderen Clans, von denen ich es weiß (Scherzkekse, Infinitum, 3Gods), das gleiche Problem haben. Mich würde interessieren, wie dort mit dem Problem umgegangen wird. Wenn ihr etwas entsprechendes hört, bitte auch hier im Thread hinterlassen. Danke

VG/Volker
Nach oben Nach unten
Benutzerprofil anzeigen
Vota



Geschlecht : Männlich Anzahl der Beiträge : 304
Anmeldedatum : 09.05.09
Alter : 48
Ort : Frankfurt
RS-Anzeigename : Mystic Heart

BeitragThema: Re: Droplog funktioniert nicht mehr   Do 10 Nov 2011, 10:49

Kurz berichtet:

Ich hatte gestern morgen eine Version des Droplogs eingespielt, welches zum einen das Update Intervall von vormals einer Minute auf derzeit 10 Minuten anhebt, und zum anderen die Anzeigefunktion komplett abschaltet und stattdessen den Text "aufgrund von Anpassungen bei Google vorübergehend deaktiviert" ausgibt.

zur Erklärung: Die Update-Funktion liest alle n Minuten das Abenteuer-Log von jeweils zwei Spielern und schreibt die gefundenen Ergebnisse in den Datastore. Daraus ergibt sich, dass bei einem Clan von m Mitgliedern die Liste alle m * n / 2 Minuten für das jeweilige Memberlein aktualisiert wird. Gibt noch ein paar technische Details zu bestimmten Ausnahmefällen, aber das geht an dieser Stelle hier zuweit.

Nach Auswertung der Statistik der letzten 24 Stunden lässt sich nun erkennen, dass pro Update-Vorgang rund 500 der API Calls verbraucht werden. Damit ist zunächst mal klar, dass das 10 Minuten Intervall noch immer zu kurz ist, denn davon gibt es 144 am Tag, und 144 * 500 ist leider größer als 50.000. Ich werde also heute morgen das Intervall auf 30 Minuten anheben.

Gleichzeitig werde ich die Anzeigefunktion wieder aktivieren, an der ich gestern größere Änderungen vorgenommen habe. Ich hoffe damit die Anzahl von mehreren hundert API Calls auf maximal 5 API Calls pro Aufruf drücken zu können.

Sollten beide Maßnahmen greifen, könnte das Droplog zumindest in eingeschränkter Qualität erstmal wieder funktionieren.
Es ist aber keineswegs sicher, dass das so ist. Sollte ich feststellen, dass es nichts bringt, werde ich auf die derzeitige Lösung zurückschalten.

Sollten euch Fehler auffallen, bitte hier posten. Danke

VG/Volker
Nach oben Nach unten
Benutzerprofil anzeigen
Elora Wood



Geschlecht : Weiblich Anzahl der Beiträge : 2725
Anmeldedatum : 06.11.09
Ort : Tierra
RS-Anzeigename : Elora Wood

BeitragThema: Re: Droplog funktioniert nicht mehr   Do 10 Nov 2011, 20:08

Danke fuer die ganze Arbeit Vota!

_________________
Be yourself, everyone else is already taken!
Nach oben Nach unten
Benutzerprofil anzeigen http://germanelite.forumieren.eu/
Vota



Geschlecht : Männlich Anzahl der Beiträge : 304
Anmeldedatum : 09.05.09
Alter : 48
Ort : Frankfurt
RS-Anzeigename : Mystic Heart

BeitragThema: Re: Droplog funktioniert nicht mehr   Fr 11 Nov 2011, 12:16

Nach der Auswertung der Laufzeitstatistik heute morgen um 9 Uhr scheint es so, dass die als Workaround getroffenen Maßnahmen erstmal funktionieren.
Die Anzahl der Datastore API Calls lag bei rund 42.000 (84%), der CPU-Verbrauch durch das Frontend bei 72%.
Damit kann das Droplog erstmal in der gegebenen Form aktiviert bleiben. Es ist auch noch genug Spielraum für häufigere Seitenaufrufe unseres Forums vorhanden, ohne dass dann irgendwann im Laufe des Abends/der Nacht die App durch Google wieder "stillgelegt" wird.

Hier nochmal die Konsequenzen bzgl. der Update Frequenz:
Bei derzeit ca. 20 für das Droplog infrage kommenden Mitgliedern und Updates nur alle 30 Minuten werden erzielte Drops/Level Ups eventuell erst nach fünf Stunden sichtbar. Es hängt im Prinzip davon ab, wo sich der jeweilige Spieler gerade in der Warteschlange befindet.

Mein nächstes Augenmerk werde ich darauf richten, die Anzahl der API Calls während der Update Prozedur zu senken. Das ist jedoch im Gegensatz zur relativ leicht realisierbaren Anpassung der Anzeigefunktion um einiges aufwändiger, da ich zunächst mal tiefergehende Analysen der einzelnen Bausteine im Sourcecode vornehmen muss. Ich fürchte dies wird sich über etliche Tage hinziehen und einiges an Experimenten erforden. Sollte sich hier aber Potenzial finden lassen, wird es mein Ziel sein, die Update Frequenz wieder zu erhöhen (also die Intervalllänge zu verkürzen).
Ich werde hier in diesem Thread entsprechend Rückmeldung geben.

Sollten andere das Droplog nutzende Clans an der Codeänderung interessiert sein, bitte hier posten.

VG/Volker
Nach oben Nach unten
Benutzerprofil anzeigen
Rhoikos



Geschlecht : Männlich Anzahl der Beiträge : 1550
Anmeldedatum : 29.08.10
Alter : 23
RS-Anzeigename : Rhoikos

BeitragThema: Re: Droplog funktioniert nicht mehr   Fr 11 Nov 2011, 16:52

Ist das ein Vogel? ein Flugzeug? - Nein! Es ist Super-Vota! Superman

Klasse Arbeit Very Happy


_________________

Nach oben Nach unten
Benutzerprofil anzeigen
Lutze53



Anzahl der Beiträge : 7
Anmeldedatum : 12.11.11

BeitragThema: Re: Droplog funktioniert nicht mehr   Sa 12 Nov 2011, 16:28

Hi German Elite und Vota Smile

Jakob hat mich hier drauf aufmerksam gemacht, wegen dem Droplog Problem.
Habe nach Recherche des Problems auch den Fehler gefunden mit den Data Read Store und selber auch die Updatezeit auf 10min erhöht was aber keine Verbesserung erbracht hat, wie in den vorherigen Post ja zu lesen ist.
Würde mich aber bzgl deiner Änderung des Codes auch freuen, wenn du ihn den Clan Final Destruction zur Verfügung stellen könntest

MFG Lutze von Final Destruction (finaldestruction.enjin.com/home)
Nach oben Nach unten
Benutzerprofil anzeigen
Vota



Geschlecht : Männlich Anzahl der Beiträge : 304
Anmeldedatum : 09.05.09
Alter : 48
Ort : Frankfurt
RS-Anzeigename : Mystic Heart

BeitragThema: Re: Droplog funktioniert nicht mehr   Sa 12 Nov 2011, 20:04

Hallo Lutze,

klar könnt ihr den Sourcecode haben. Mir persönlich wäre es am liebsten, wenn ich ihn euch per Mail zusenden könnte. Dazu bräuchte ich aber eine Mailaddresse. Oder Du verrätst mir einen Alternativweg, wie wir die Datei austauschen können.

Bin heute vermutlich nicht mehr online, werde mich dann aber sobald wie möglich dran machen.

VG/Volker
Nach oben Nach unten
Benutzerprofil anzeigen
Jak0b9



Geschlecht : Männlich Anzahl der Beiträge : 6
Anmeldedatum : 13.06.09

BeitragThema: Re: Droplog funktioniert nicht mehr   So 13 Nov 2011, 14:52

Kopier doch mal den sourcecode in den quote tags hier rein oder schicks mir bitte per pm Smile

Nvm habs bekommen, Danke fürs beheben des Problems, wie oft updated sich das nun?
Nach oben Nach unten
Benutzerprofil anzeigen
Vota



Geschlecht : Männlich Anzahl der Beiträge : 304
Anmeldedatum : 09.05.09
Alter : 48
Ort : Frankfurt
RS-Anzeigename : Mystic Heart

BeitragThema: Re: Droplog funktioniert nicht mehr   So 13 Nov 2011, 22:10

Okay, here you are.

Neben ein paar kleineren Fixes bzgl. zum Beispiel dem Problem der Runehead Ränge (erster Rang wurde nicht gelesen) enthält unten stehender Code im Wesentlichen eine Anpassung zur Verlagerung der HTML Generierung aus den Klassen "Drops" und "Skill2s" in die Klasse "Update" bzw die Funktion "prepare_website_text"

Damit wird die Anzahl der API Calls beim Aufrufen der Anzeige minimiert.

Trotzdem muss das Update Intervall auf ca. 30 Minuten gesetzt werden, da das "Update" selbst noch immer viele Datastore Ressourcen braucht. Ich bin hier bereits am experimentieren, wird aber noch ein Weilchen dauern, bis ich das, sollte es erfolgreich sein, ausrollen kann.

Code:

# -*- coding: cp1252 -*-
#Sicherheitscode: xxxxxxxx
import cgi

from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext import db

import urllib2
import datetime

position = 0
last_positions = [0]
text=""

all1 = []
all1_orig = []
removed_1 = []
errors = 0

maxdays = 10

adding = ["Leader","Clanmoderator","Eventmanager","Advisor","Member","Member auf Probe"]

abenteuerlogbuch = "http://services.runescape.com/m=adventurers-log/l=1/rssfeed?searchName="
memberliste = "http://runehead.com/clans/ml.php?clan=german_elite"
mh1 = "http://services.runescape.com/m=itemdb_rs/l=1/results.ws?query=%22"
mh2 = "%22&price=all&members="
bild1 = "http://www.3gods.org/users/1314/82/00/73/album/"
bild2 = "10.png"
gedatabase = "http://services.runescape.com/m=itemdb_rs/l=1/viewitem.ws?obj="

showadds = True

spliteffigies = False

d_items = {'Saradomin-Schwert': 'sarado10.gif', 'Stab des Lichts': 'licht-10.gif',
          'Höllenpeitsche': 'hallen10.gif', 'Armadyl-Plattenrock': 'armady12.gif',
          'Drachen-Kampfklauen': 'drache16.gif', 'Drachen-Stiefel': 'drache15.gif',
          'Seelen-Schild': 'seelen10.gif', 'Dunkelbogen': 'dunkel10.gif',
          'Klumpen Drachen-Rüstzeug': 'klumpe10.gif', 'Fokusmaske': 'fokusm10.gif',
          'Splitter Drachen-Rüstzeug': 'splitt10.gif', 'uralte Skulptur': 'ancien10.png',
          'Drachen-Halbhelm': 'drache11.gif', 'Drachen-Antlitz': 'drache10.gif',
          'Hokusmaske': 'hokusm10.gif', 'Stück Drachen-Rüstzeug': 'stack_10.gif',
          'Bandos-Plattenpanzer': 'bandos10.gif', 'Armadyl-Helm': 'armady10.gif',
          'Bandos-Stiefel': 'bandos13.gif', 'Saradomin-Schwertgriff': 'sarado11.gif',
          'Armadyl-Schwertgriff': 'armady13.gif', 'Armadyl-Plattenpanzer': 'armady11.gif',
          'Zamorak-Speer': 'zamora11.gif', 'Schwarze Maske': 'schwar10.gif',
          'Drachen-Plattenrock': 'drache13.gif', 'Drachen-Spitzhacke': 'drache14.gif',
          'Blattklingenschwert': 'blattk10.gif', 'Zamorak-Schwertgriff': 'zamora10.gif',
          'Granit-Hammer': 'granit10.gif', 'Bandos-Schwertgriff': 'bandos12.gif',
          'Drachen-Kettenhemd': 'drache17.gif', 'Granit-Helm': 'granit11.gif',
          'linke Schildhälfte': 'linke_10.gif', 'Bandos-Plattenschurz': 'bandos11.gif',
          'Klingenstück 3': 'klinge12.gif','Klingenstück 2': 'klinge11.gif',
          'Klingenstück 1': 'klinge10.gif','Ring des Sehers': 'ring_d12.gif',
          'Ring des Kriegers': 'ring_d11.gif','Ring des Bogenschützen': 'ring_d10.gif',
          'Drachen-Axt': 'drache19.gif','Drachen-Dolch': 'drache20.gif',
          'Drachen-Speer': 'drache21.gif','Blutrausch-Ring': 'blutra10.gif',
          'arkanes Emblem': 'arkane10.gif','göttliches Emblem': 'gattli10.gif',
          'elysisches Emblem': 'elysis10.gif','spektrales Emblem': 'spektr10.gif',
          'Drachen-Plattenbeinlinge': 'drache12.gif','Mystik-Robenoberteil': 'mystik10.png',
          'Granit-Beinlinge': 'granit12.gif','Amulett des Fernkampfs': 'amulet10.gif',
          'Magierfluch': 'seercu10.gif',
          'Mystik-Robenunterteil': 'mystik11.png'}
d_ids = {'Splitter Drachen-Rüstzeug': '14476', 'Saradomin-Schwert': '11730',
        'Stab des Lichts': '15486', 'Höllenpeitsche': '4151', 'Drachen-Kampfklauen': '14484',
        'elysisches Emblem': '13750', 'Drachen-Stiefel': '11732',
        'Mystik-Robenoberteil': '4091', 'Seelen-Schild': '13734', 'Dunkelbogen': '11235',
        'Klumpen Drachen-Rüstzeug': '14472', 'Ring des Sehers': '6731',
        'Bandos-Schwertgriff': '11704', 'Bandos-Plattenpanzer': '11724',
        'göttliches Emblem': '13748', 'Mystik-Robenunterteil': '4093',
        'Drachen-Axt': '6739', 'Blutrausch-Ring': '6737', 'Drachen-Halbhelm': '1149',
        'Stück Drachen-Rüstzeug': '14474', 'Drachen-Antlitz': '11286',
        'spektrales Emblem': '13752', 'Hokusmaske': '15488', 'Bandos-Plattenschurz': '11726',
        'Ring des Kriegers': '6735', 'arkanes Emblem': '13746', 'Bandos-Stiefel': '11728',
        'Saradomin-Schwertgriff': '11706', 'Klingenstück 1': '11710',
        'Klingenstück 3': '11714', 'Armadyl-Schwertgriff': '11702',
        'Armadyl-Plattenpanzer': '11720', 'Zamorak-Speer': '11716',
        'Armadyl-Plattenrock': '11722', 'Magierfluch': '6724',
        'Amulett des Fernkampfs': '15126', 'Klingenstück 2': '11712',
        'Drachen-Plattenrock': '4585', 'Drachen-Dolch': '1215', 'Drachen-Spitzhacke': '15259',
        'Blattklingenschwert': '13290', 'Zamorak-Schwertgriff': '11708', 'Drachen-Speer': '1249',
        'Granit-Hammer': '4153', 'Fokusmaske': '15490', 'Drachen-Kettenhemd': '3140',
        'Granit-Helm': '10589', 'Granit-Beinlinge': '6809', 'linke Schildhälfte': '2366',
        'Schwarze Maske': '8921', 'Armadyl-Helm': '11718', 'Ring des Bogenschützen': '6733',
        'Drachen-Plattenbeinlinge': '4087'}
class Renew(webapp.RequestHandler):
    def get(self,write = True):
        global text
        reset()
        try:
            reset()
            f = urllib2.urlopen(memberliste)
            text = f.read()
            f.close()
        except:
            all1 = ['Spell_556', 'Lila_Steve', 'Neaera', 'Bruder_Jakob', 'Zitouna', 'Haha_Hero_P', 'Mac_3Gods', 'Soulalex1', 'Gallardo_16', 'Knedl_Knedl', 'Style_3Gods', 'Rage_3Gods', 'Lordvonjacko', 'Knusperk3ks', 'Ich_Wars_Ned', 'Marv_3Gods', 'Taschentuch9', 'Heinrichviii', 'Spider_3Gods', 'Bruder_0wn', 'Qwertz155', 'Wanabee_Tank', 'Noel_3Gods', 'Lila_Freddy', 'Rbn3c', 'Charly_Hark']
            all1_orig = ['Spell_556', 'Lila_Steve', 'Neaera', 'Bruder_Jakob', 'Zitouna', 'Haha_Hero_P', 'Mac_3Gods', 'Soulalex1', 'Gallardo_16', 'Knedl_Knedl', 'Style_3Gods', 'Rage_3Gods', 'Lordvonjacko', 'Knusperk3ks', 'Ich_Wars_Ned', 'Marv_3Gods', 'Taschentuch9', 'Heinrichviii', 'Spider_3Gods', 'Bruder_0wn', 'Qwertz155', 'Wanabee_Tank', 'Noel_3Gods', 'Lila_Freddy', 'Rbn3c', 'Charly_Hark']
            removed_1 = []
            errors = 0
            if write: self.response.out.write("<html><body>"+"<span style=\"font-family:Verdana; font-size:11\">"+'Fehler!!!<br>')
            if write: self.response.out.write(str(all1)+'<br>'+str(all1_orig)+'<br>'+str(removed_1)+'<br>'+str(errors)+'<br>')
            if write: self.response.out.write("</span></body></html>")
            return

        endpos = _goto_("<!-- AD BANNER ROW-->")
        reset(reset_text = False)
        goto("Clan Signature: <a href=")
        goto("'ranks'")

        ranks = []
       
        while len(ranks) < 8:
            goto("a href")
            if -1 in last_positions:
                break
            farbe = between_goto("style='color: ","'")
            if -1 in last_positions:
                break
            r = between_goto("title='Display Rank: ","'")
            if -1 in last_positions:
                break
            if write: self.response.out.write(str(r)+' & '+ farbe + '<br>')
            ranks += Rank(r,farbe),
               
        reset(reset_text = False)
        goto("Total Members:")

        stri = between_goto("/b> ","</li>")
        total_members = int(stri)

        reset(reset_text = False)
        goto(" :: Memberlist")
        goto("<tr class='subheader'>")

        members = 0

        while members < total_members:
            goto("background-color:");
            farbe = between_goto("; color: ","'")
            goto("href='")
            memb = between_goto("'>","<")
            memb = memb.replace(" ","_")
            self.response.out.write("Name gefunden:" + str(memb) + "<br>")
            for r in ranks:
                if r.farbe == farbe:
                    r.add(memb)
            members+=1

        adding_members = []
       
        for r in ranks:
            for m in r.members:
                if r.name in adding:
                    adding_members += m.replace("3gods","3Gods"),

        all1 = adding_members[:]
        all1_orig = adding_members[:]
        removed_1 = []
        errors = 0
        self.response.out.write("<!-- "+text.replace("-->","")+"\n")
        for r in ranks:
            self.response.out.write("\n\n"+str(r.name)+"\n"+str(r.farbe)+"\n"+str(r.members)+"\n")
        self.response.out.write(" -->")
        if write: self.response.out.write("<html><body>"+"<span style=\"font-family:Verdana; font-size:11\">")
        if write: self.response.out.write('<h2>Erfolgreich!</h2><br>')
        if write: self.response.out.write(str(all1)+'<br>'+str(all1_orig)+'<br>'+str(removed_1)+'<br>'+str(errors)+'<br>')
        if write: self.response.out.write("</span></body></html>")

        q = db.GqlQuery("SELECT * FROM Save")
        erg = q.fetch(10)
        for e in erg:
            e.delete()

        save = Save()
        save.list1 = str(all1)
        save.list2 = str(removed_1)
        save.list3 = str(all1_orig)
        save.e = errors
        save.put()

def replace_month(string):
    return string.replace("Jan", "01").replace("Feb", "02").replace("Mar", "03").replace("Apr", "04").replace("Jul", "07").replace("Jun","06").replace("May","05").replace("Aug","08").replace("Sep","09").replace("Oct","10").replace("Nov","11").replace("Dec","12")

def goto(string):
    global last_positions, position, text
    last_positions += position,
    position = text.find(string,position)+len(string)
    return position

def _goto_(string):
    global last_positions, position, text
    last_positions += position,
    position = text.find(string,position)+len(string)
    p = position
    position = last_positions[-1]
    return p

def between_goto(string1,string2):
    global last_positions, position, text
    goto(string1)
    goto(string2)
    if (position == -1 or last_positions[-1] == -1):
        return ""
    return text[(last_positions[-1]):(position-len(string2))]

class Item(db.Model):
    author = db.StringProperty()
    content = db.StringProperty(multiline=True)
    date = db.DateTimeProperty()

class Skill2(db.Model):
    author = db.StringProperty()
    content = db.StringProperty(multiline=True)
    date = db.DateTimeProperty()
   
class Skill9():
    author = db.StringProperty()
    content = db.StringProperty(multiline=True)
    date = db.DateTimeProperty()
   
class Save(db.Model):
    list1 = db.TextProperty()
    list2 = db.TextProperty()
    list3 = db.TextProperty()
    e = db.IntegerProperty() 

class website_content(db.Model):
    clanname = db.StringProperty()
    drops = db.TextProperty()
    skills = db.TextProperty()

def reset(reset_text = True):
    position = 0
    last_positions = [0]
    if reset_text:
        text = ""
class Dropsitems(webapp.RequestHandler):
    def get(self):
        self.response.out.write("<html><body>"+"<span style=\"font-family:Verdana; font-size:11\"><table border=\"0\" cellspacing=\"3\" cellpadding=\"1\">")
        liste = d_items.keys()
        liste.sort()
        for l in liste:
            self.response.out.write("<tr valign=\"middle\"><td align=\"right\">"+l+"</td><td align=\"left\">"+'<img src=\"'+bild1+d_items[l]+'\"'+' alt=\"'+l+'\" title=\"'+l+'\">'+"</td></tr>")
        self.response.out.write("</table></span></body></html>")

class Drops(webapp.RequestHandler):
    def get(self):
        global spliteffigies

        qry = db.GqlQuery("SELECT * FROM website_content")
        wsl = qry.fetch(1)
        if len(wsl) > 0:
            ws = wsl[0]
            self.response.out.write(str(ws.drops))

        else:
            self.response.out.write("""<head><meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"><style type="text/css">
    a:link { text-decoration:none; font-weight:bold; color:   #25383C; }
    a:visited { text-decoration:none; font-weight:bold; color:#25383C; }
    a:hover { text-decoration:none; font-weight:bold; background-color:#25383C; }
    a:active { text-decoration:none; font-weight:bold; background-color:#25383C; }
    a:focus { text-decoration:none; font-weight:bold; background-color:#25383C; }
    </style></head>""")
            self.response.out.write("<html><body><span style=\"font-family:Verdana; font-size:11; color:#357EC7\">")
            if showadds: self.response.out.write("")

            self.response.out.write("aufgrund von<br>Anpassungen<br>bei Google<br>vorübergehend<br>deaktiviert<br><br>")
            self.response.out.write("""
                <a href="http://germanelite.forumieren.eu/t2338-droplog-funktioniert-nicht-mehr" target="_blank">siehe hier</a></span>
                </body>
              </html>""")


##        query = db.GqlQuery('SELECT * FROM Item ORDER BY date DESC')
##
##        items = query.fetch(100)
##        maxdays = 14
##
##        ausgaben = []
##        tage = []
##        dates = []
##       
##        for item in items:
##            if not(item.date in dates) and ((str(item.content) != "eine uralte Skulptur") or not(spliteffigies)):
##                if (datetime.datetime.today() - item.date < datetime.timedelta(days = maxdays)):
##                    dates += item.date,
##                    d = str(item.date)
##                    tag = 'am '+d[8:10]+'.'+d[5:7]
##                    if (datetime.datetime.today() - item.date < datetime.timedelta(hours = 48)):
##                        tag = 'Gestern'
##                    if (datetime.datetime.today() - item.date < datetime.timedelta(hours = 24)):
##                        tag = 'Heute'
##                    ausgaben += [],
##                    tage += tag,
##                else:
##                    break
##        nummer = 0
##       
##        for date in dates:
##            spieler = []
##            self.response.out.write('<div align="center">'+"<span style=\"font-family:Verdana; font-size:11; color:#357EC7; text-decoration:underline; font-style:bold\">"+tage[nummer]+"</span></div><div align=\"center\"><table border=\"0\" cellspacing=\"3\" cellpadding=\"1\">")
##            for item in items:
##                if item.date == date and ((str(item.content) != "eine uralte Skulptur") or not(spliteffigies)):
##                    heis = str(item.content).replace("ein Paar ","").replace("einen ","").replace("eine ","").replace("ein ","")
##                    suchtag = heis [:]
##                    suchtag.replace("ü","ü").replace("ö","ö").replace("ä","ä")
##                    try:
##                        bild_pfad = d_items[heis]
##                        t1 = '<span style=\"font-family:Verdana; font-weight:bold; color:#357EC7; font-size:11\"> 999 </span>'
##                        if str(item.content) != "eine uralte Skulptur": t1 += '<a href="'+gedatabase+d_ids[suchtag]+'" target="_blank">'
##                        t1 += '<img src=\"'+bild1+bild_pfad+'\"'+' alt=\"'+heis+'\" title=\"'+heis+'\"  border=\"0\">'
##                        if str(item.content) != "eine uralte Skulptur": t1 += '</a>'
##                    except:
##                        t1 = '<span style=\"font-family:Verdana; font-weight:bold; color:#357EC7; font-size:11\"> 999 '
##                        t1 += heis+'</span>'
##                    if item.author in spieler:
##                        ausgaben[nummer][spieler.index(item.author)] += t1,
##                    else:
##                        spieler += item.author,
##                        ausgaben[nummer] += [],
##                        ausgaben[nummer][spieler.index(item.author)] += t1,
##            notagain = []
##            for s in spieler:
##                self.response.out.write('<tr valign=\"middle\"><td align=\"right\">'+"<span style=\"font-family:Verdana; color:#357EC7; font-size:11; font-style:italic\">"+s+':</span></td><td align=\"left\">')
##                for a in ausgaben[nummer][spieler.index(s)]:
##                    zahl = ausgaben[nummer][spieler.index(s)].count(a)
##                    if zahl == 1:
##                        self.response.out.write(a.replace("999",""))
##                    elif not (a in notagain):
##                        self.response.out.write(a.replace("999",str(zahl)+'x '))
##                        notagain += a,
##                self.response.out.write('</td></tr></div>')
##            nummer += 1
##            self.response.out.write('</div></table>')
##
##        self.response.out.write("""
##            <a href="/drops/all" target="_blank">Mehr Drops anzeigen</a></span>
##            </body>
##          </html>""")

class Skill2s(webapp.RequestHandler):
    def get(self,limited = True):

        qry = db.GqlQuery("SELECT * FROM website_content")
        wsl = qry.fetch(1)
        if len(wsl) > 0:
            ws = wsl[0]
            self.response.out.write(str(ws.skills))

        else:
            self.response.out.write("""<html><head>
    <style type="text/css">
    a:link { text-decoration:none; font-weight:bold; color:#25383C; }
    a:visited { text-decoration:none; font-weight:bold; color:#25383C; }
    a:hover { text-decoration:none; font-weight:bold; background-color:#25383C; }
    a:active { text-decoration:none; font-weight:bold; background-color:#25383C; }
    a:focus { text-decoration:none; font-weight:bold; background-color:#25383C; }
    </style>
    </head>
    <body><span style=\"font-family:Verdana; color:#357EC7; font-size:11\">""")
            if showadds: self.response.out.write("")

            self.response.out.write("aufgrund von<br>Anpassungen<br>bei Google<br>vorübergehend<br>deaktiviert<br><br>")
            self.response.out.write("""
                <a href="http://germanelite.forumieren.eu/t2338-droplog-funktioniert-nicht-mehr" target="_blank">siehe hier</a></span>
                </body>
              </html>""")

##        query = db.GqlQuery("SELECT * FROM Skill2 ORDER BY date DESC LIMIT 100")
##
##        s = query.fetch(200)
##        maxdays = 3
##
##        skills = s[:]
##       
##        ausgaben = []
##        ausgaben2 = []
##        tage = []
##        dates = []
##       
##        for item in skills:
##            item.anzeige = True
##            item.langerskill = False
##            if not(item.date in dates):
##                if (datetime.datetime.today() - item.date < datetime.timedelta(days = maxdays)):
##                    dates += item.date,
##                    d = str(item.date)
##                    tag = 'am '+d[8:10]+'.'+d[5:7]
##                    if (datetime.datetime.today() - item.date < datetime.timedelta(hours = 48)):
##                        tag = 'Gestern'
##                    if (datetime.datetime.today() - item.date < datetime.timedelta(hours = 24)):
##                        tag = 'Heute'
##                    ausgaben += [],
##                    ausgaben2 += [],
##                    tage += tag,
##                else:
##                    break
##        nummer = 0
##
##        for date in dates:
##            self.response.out.write('<div align="center">'+"<span style=\"font-family:Verdana; color:#357EC7; font-size:11; text-decoration:underline; font-style:bold\">"+tage[nummer]+"</span><br>"+"<table border=\"0\" cellspacing=\"4\" cellpadding=\"1\">"+'</div>')
##            spieler = []
##            lvls = []
##            for item in skills:
##                if item.date == date:
##                    if not(str(item.content)[-2:] in lvls):
##                        lvls += str(item.content)[-2:],
##                    if item.author in spieler:
##                        ausgaben[nummer][spieler.index(item.author)] += item.content,
##                    else:
##                        spieler += item.author,
##                        ausgaben[nummer] += [],
##                        ausgaben2[nummer] += [],
##                        ausgaben[nummer][spieler.index(item.author)] += item.content,
##            for s in spieler:
##                notagain = []
##                for a in ausgaben[nummer][spieler.index(s)]:
##                    temp = []
##                    if not(a[:7] in notagain):
##                        for a2 in ausgaben[nummer][spieler.index(s)]:
##                            if a[:7] == a2[:7]:
##                                temp += int(a2[-2:]),
##                        if len(temp) > 1:
##                            temp.sort()
##                            ausgaben2[nummer][spieler.index(s)] += (a[:-2] + str(temp[0]) +'-'+ str(temp[-1])),
##                            notagain += a[:7],
##                        else:
##                            ausgaben2[nummer][spieler.index(s)] += a,
##            lvls.sort()
##            lvls.reverse()
##            for l in lvls:
##                for s in spieler:
##                    for a in ausgaben2[nummer][spieler.index(s)]:
##                        if l == a[-2:]:
##                            t1 = "<tr valign=\"middle\"><td align=\"right\"><span style=\"font-family:Verdana; color:#357EC7; font-size:11; font-style:italic\">"+str(s)+'</span></td><td align="center">'
##                            t1 += '<img src="'+bild1+str(a).replace("ä","a")[:6].replace(" ","").lower()+bild2+'" alt="'
##                            t1 += str(a)+'\" title=\"'+str(a).split(" ")[0]+'\">'+'</td><td><span style=\"font-family:Verdana; color:#357EC7; font-weight:bold; font-size:11\">'
##                            t1 += str(a).split(" ")[-1]+'</span></td></tr>'
##                            self.response.out.write(t1)
##            self.response.out.write("</table>")
##            nummer += 1
##           
##        self.response.out.write("""
##            <a href="/skills/all" target="_blank">Mehr Skills anzeigen</a></span>
##            </body>
##          </html>""")

def prepare_website_text(s_clanname):

    if s_clanname != "":
        skill_text  = '<html><head><style type="text/css">a:link { text-decoration:none; font-weight:bold; color:#25383C; }a:visited { text-decoration:none; font-weight:bold; color:#25383C; }a:hover { text-decoration:none; font-weight:bold; background-color:#25383C; }a:active { text-decoration:none; font-weight:bold; background-color:#25383C; }a:focus { text-decoration:none; font-weight:bold; background-color:#25383C; }</style></head><body><span style="font-family:Verdana; color:#357EC7; font-size:11">'

        query = db.GqlQuery("SELECT * FROM Skill2 ORDER BY date DESC LIMIT 100")
        s = query.fetch(200)
        maxdays = 4

        skills = s[:]
       
        ausgaben = []
        ausgaben2 = []
        tage = []
        dates = []
       
        for item in skills:
            item.anzeige = True
            item.langerskill = False
            if not(item.date in dates):
                if (datetime.datetime.today() - item.date < datetime.timedelta(days = maxdays)):
                    dates += item.date,
                    d = str(item.date)
                    tag = 'am '+d[8:10]+'.'+d[5:7]
                    if (datetime.datetime.today() - item.date < datetime.timedelta(hours = 48)):
                        tag = 'Gestern'
                    if (datetime.datetime.today() - item.date < datetime.timedelta(hours = 24)):
                        tag = 'Heute'
                    ausgaben += [],
                    ausgaben2 += [],
                    tage += tag,
                else:
                    break
        nummer = 0

        for date in dates:
            skill_text += '<div align="center">'+"<span style=\"font-family:Verdana; color:#357EC7; font-size:11; text-decoration:underline; font-style:bold\">"+tage[nummer]+"</span><br>"+"<table border=\"0\" cellspacing=\"4\" cellpadding=\"1\">"+'</div>'
            spieler = []
            lvls = []
            for item in skills:
                if item.date == date:
                    if not(str(item.content)[-2:] in lvls):
                        lvls += str(item.content)[-2:],
                    if item.author in spieler:
                        ausgaben[nummer][spieler.index(item.author)] += item.content,
                    else:
                        spieler += item.author,
                        ausgaben[nummer] += [],
                        ausgaben2[nummer] += [],
                        ausgaben[nummer][spieler.index(item.author)] += item.content,
            for s in spieler:
                notagain = []
                for a in ausgaben[nummer][spieler.index(s)]:
                    temp = []
                    if not(a[:7] in notagain):
                        for a2 in ausgaben[nummer][spieler.index(s)]:
                            if a[:7] == a2[:7]:
                                temp += int(a2[-2:]),
                        if len(temp) > 1:
                            temp.sort()
                            ausgaben2[nummer][spieler.index(s)] += (a[:-2] + str(temp[0]) +'-'+ str(temp[-1])),
                            notagain += a[:7],
                        else:
                            ausgaben2[nummer][spieler.index(s)] += a,
            lvls.sort()
            lvls.reverse()
            for l in lvls:
                for s in spieler:
                    for a in ausgaben2[nummer][spieler.index(s)]:
                        if l == a[-2:]:
                            t1 = "<tr valign=\"middle\"><td align=\"right\"><span style=\"font-family:Verdana; color:#357EC7; font-size:11; font-style:italic\">"+str(s)+'</span></td><td align="center">'
                            t1 += '<img src="'+bild1+str(a).replace("ä","a")[:6].replace(" ","").lower()+bild2+'" alt="'
                            t1 += str(a)+'\" title=\"'+str(a).split(" ")[0]+'\">'+'</td><td><span style=\"font-family:Verdana; color:#357EC7; font-weight:bold; font-size:11\">'
                            t1 += str(a).split(" ")[-1]+'</span></td></tr>'
                            skill_text += t1
            skill_text += "</table>"
            nummer += 1
           
        skill_text += "</body></html>"

        drop_text  = '<head><meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"><style type="text/css">a:link { text-decoration:none; font-weight:bold; color:   #25383C; }a:visited { text-decoration:none; font-weight:bold; color:#25383C; }a:hover { text-decoration:none; font-weight:bold; background-color:#25383C; }a:active { text-decoration:none; font-weight:bold; background-color:#25383C; }a:focus { text-decoration:none; font-weight:bold; background-color:#25383C; }</style></head>'
        drop_text += '<html><body><span style=\"font-family:Verdana; font-size:11; color:#357EC7\">'

        query = db.GqlQuery('SELECT * FROM Item ORDER BY date DESC')

        items = query.fetch(100)
        maxdays = 14

        ausgaben = []
        tage = []
        dates = []
       
        for item in items:
            if not(item.date in dates) and ((str(item.content) != "eine uralte Skulptur") or not(spliteffigies)):
                if (datetime.datetime.today() - item.date < datetime.timedelta(days = maxdays)):
                    dates += item.date,
                    d = str(item.date)
                    tag = 'am '+d[8:10]+'.'+d[5:7]
                    if (datetime.datetime.today() - item.date < datetime.timedelta(hours = 48)):
                        tag = 'Gestern'
                    if (datetime.datetime.today() - item.date < datetime.timedelta(hours = 24)):
                        tag = 'Heute'
                    ausgaben += [],
                    tage += tag,
                else:
                    break
        nummer = 0
       
        for date in dates:
            spieler = []
            drop_text += '<div align="center">'+'<span style="font-family:Verdana; font-size:11; color:#357EC7; text-decoration:underline; font-style:bold">'+tage[nummer]+'</span></div><div align="center"><table border="0" cellspacing="3" cellpadding="1">'
            for item in items:
                if item.date == date and ((str(item.content) != "eine uralte Skulptur") or not(spliteffigies)):
                    heis = str(item.content).replace("ein Paar ","").replace("einen ","").replace("eine ","").replace("ein ","")
                    suchtag = heis [:]
                    suchtag.replace("ü","ü").replace("ö","ö").replace("ä","ä")
                    try:
                        bild_pfad = d_items[heis]
                        t1 = '<span style=\"font-family:Verdana; font-weight:bold; color:#357EC7; font-size:11\"> 999 </span>'
                        if str(item.content) != "eine uralte Skulptur": t1 += '<a href="'+gedatabase+d_ids[suchtag]+'" target="_blank">'
                        t1 += '<img src=\"'+bild1+bild_pfad+'\"'+' alt=\"'+heis+'\" title=\"'+heis+'\"  border=\"0\">'
                        if str(item.content) != "eine uralte Skulptur": t1 += '</a>'
                    except:
                        t1 = '<span style=\"font-family:Verdana; font-weight:bold; color:#357EC7; font-size:11\"> 999 '
                        t1 += heis+'</span>'
                    if item.author in spieler:
                        ausgaben[nummer][spieler.index(item.author)] += t1,
                    else:
                        spieler += item.author,
                        ausgaben[nummer] += [],
                        ausgaben[nummer][spieler.index(item.author)] += t1,
            notagain = []
            for s in spieler:
                drop_text += '<tr valign=\"middle\"><td align=\"right\">'+"<span style=\"font-family:Verdana; color:#357EC7; font-size:11; font-style:italic\">"+s+':</span></td><td align=\"left\">'
                for a in ausgaben[nummer][spieler.index(s)]:
                    zahl = ausgaben[nummer][spieler.index(s)].count(a)
                    if zahl == 1:
                        drop_text += a.replace("999","")
                    elif not (a in notagain):
                        drop_text += a.replace("999",str(zahl)+'x ')
                        notagain += a,
                drop_text += '</td></tr></div>'
            nummer += 1
            drop_text += '</div></table>'

        drop_text += '</body></html>'

        qry = db.GqlQuery("SELECT * FROM website_content")
        wsl = qry.fetch(1)
        if len(wsl) == 0:
            ws = website_content()
        else:
            ws = wsl[0]
        ws.drops = drop_text
        ws.clanname = s_clanname
        ws.skills = skill_text
        ws.put()
       
class Info(webapp.RequestHandler):
    def get(self):
        q = db.GqlQuery("SELECT * FROM Save")
        erg = q.fetch(1)

        all1 = eval(erg[0].list1)
        removed_1 = eval(erg[0].list2)
        all1_orig = eval(erg[0].list3)
        errors = int(erg[0].e)

        self.response.out.write("<html><body>"+"<span style=\"font-family:Verdana; color:#357EC7; font-size:11\">")
        self.response.out.write("<h2>Momentan erfasste Member:</h2><br>")

        all1_orig.sort()
        removed_1.sort()
       
        for m in all1_orig:
            if not(m in removed_1):
                self.response.out.write(m+'<br>')
        self.response.out.write("<br><br><h2>Entfernte Member:</h2><br>")
        for r in removed_1:
            self.response.out.write(r+'<br>')
        self.response.out.write("</span></body></html>")
       
class Info2(webapp.RequestHandler):
    def get(self):
        q = db.GqlQuery("SELECT * FROM Save")
        erg = q.fetch(1)

        all1 = eval(erg[0].list1)
        removed_1 = eval(erg[0].list2)
        all1_orig = eval(erg[0].list3)
        errors = int(erg[0].e)

        self.response.out.write("<html><body>"+"<span style=\"font-family:Verdana; color:#357EC7; font-size:11\">")
        if showadds: self.response.out.write("")
        self.response.out.write("<h2>Momentan erfasste Member:</h2><br>")
        for m in all1_orig:
            if not(m in removed_1):
                self.response.out.write(m+'<br>')
        self.response.out.write("<br><br><h2>Entfernte Member:</h2><br>")
        for r in removed_1:
            self.response.out.write(r+'<br>')
        self.response.out.write("<br><br>---------------------------------<br><br>Fehlerzyklus: "+str(errors))
        self.response.out.write("<h2>In diesem Zyklus noch zu untersuchende Member:</h2><br>")
        for m in all1:
            self.response.out.write(m+'<br>')
        self.response.out.write("</span></body></html>")
       
class MainPage(webapp.RequestHandler):
    def get(self):
        self.response.out.write("<html><body>"+"<span style=\"font-family:Verdana; color:#357EC7; font-size:11\">")
        self.response.out.write("""
            </span>
            </body>
          </html>""")

class Update(webapp.RequestHandler):
    def get(self):
        global text
       
        q = db.GqlQuery("SELECT * FROM Save")
        erg = q.fetch(1)

        try:
            all1 = eval(erg[0].list1)
            removed_1 = eval(erg[0].list2)
            all1_orig = eval(erg[0].list3)
            errors = int(erg[0].e)
        except:
            r = Renew()
            r.get(write = False)
            return
       
        self.response.out.write('<html><body>')

        remove = []
        take_now = all1[:2]
        self.response.out.write(str(take_now )+"<br>")

        if errors == 3:
            errors = 0
            removed_1 += take_now
            for r in take_now:
                all1.remove(r)
       
        if len(take_now) == 0:
            all1 = all1_orig[:]
            errors = 0
            for r in removed_1:
                all1.remove(r)

        tmp_errors = 0
       
        for m in take_now:
            text = ""
            try:
                reset()
                f = urllib2.urlopen(abenteuerlogbuch+m)
                text += f.read()
                f.close()
                self.response.out.write("Keine Probleme: "+str(m)+"<br>")
                remove += m,
            except:
                self.response.out.write("Error: "+str(m)+"<br>")
                text = ""
                tmp_errors += 1
               
            goto("image")

            if text != "":
                q = db.GqlQuery("SELECT * FROM Item")
                results = q.fetch(900)
                self.response.out.write('<br>In Datenbank: '+str(len(results))+'<br>')
                for result in results:
                    if result.author == m:
                        self.response.out.write(result.content+" "+m+" deleted<br>")
                        result.delete()
           
            for i in range (0,12):
                x1 = between_goto("Gegenstand gefunden: ",".</title>")
                x2 = between_goto("<pubDate>","</pubDate>")
                if x1 == "" or x2 == "":
                    break
                k = x2.replace(" ","-")
                k = k[5:16]+' '+k[17:-4]
                x2 = replace_month(k)
                item = Item()
                if len(x1)+len(m)+len(str()) > 50:
                    break
                item.content = x1
                item.author = m
                item.date = datetime.datetime(int(x2[6:10]), int(x2[3:5]), int(x2[0:2]),0,0,0,0)
                item.put()
                self.response.out.write(str(x1)+" "+str(x2)+" gefunden von "+str(m)+" <br>")

            reset();goto("image")
           
            if text != "":
                q = db.GqlQuery("SELECT * FROM Skill2")
                results = q.fetch(900)
                self.response.out.write('<br>In Datenbank: '+str(len(results))+'<br>')
                for result in results:
                    if result.author == m:
                        self.response.out.write(result.content+" "+m+" deleted<br>")
                        result.delete()
                       
            notagain = []
           
            for i in range (0,12):
                goto("aufgestiegen.</title>")
                x1 = between_goto("Ich habe "," trainiert.")
                x2 = between_goto("<pubDate>","</pubDate>")
                if x1 == "" or x2 == "":
                    break
                k = x2.replace(" ","-")
                k = k[5:16]+' '+k[17:-4]
                x2 = replace_month(k)
                if (x1+x2) in notagain:
                    break
                skill = Skill2()
                if len(x1)+len(m)+len(str()) > 50:
                    break
                skill.content = x1
                skill.author = m
                try:
                    skill.date = datetime.datetime(int(x2[6:10]), int(x2[3:5]), int(x2[0:2]),0,0,0,0)
                except:
                    break
                skill.put()
                notagain += (x1+x2),
                self.response.out.write("Skill2: "+str(x1)+" "+str(x2)+" gefunden von "+str(m)+" <br>")

        if len(take_now) == tmp_errors:
            errors += 1
        else:
            errors = 0
           
        self.response.out.write("<br>Updated!</body></html>")

        for r in remove:
            all1.remove(r)

        q = db.GqlQuery("SELECT * FROM Save")
        erg = q.fetch(10)
        for e in erg:
            e.delete()

        save = Save()
        save.list1 = str(all1)
        save.list2 = str(removed_1)
        save.list3 = str(all1_orig)
        save.e = errors
        save.put()

        prepare_website_text("German Elite")
       
class Renew_Datastore(webapp.RequestHandler):
    def get(self):
        q = db.GqlQuery("SELECT * FROM Skill2")
        results = q.fetch(1000)
        self.response.out.write(str(len(results))+" deleted!<br>")
        for result in results:                           
            result.delete()
        q = db.GqlQuery("SELECT * FROM Item")
        results = q.fetch(1000)
        self.response.out.write(str(len(results))+" deleted!")
        for result in results:                             
            result.delete()


class Rank():
    def __init__(self,name,farbe):
        self.name = name
        self.farbe = farbe
        self.members = []

    def add(self,member):
        self.members += member,
###########################################################################################################       
class Skill2s2(webapp.RequestHandler):
    def get(self):
        global spliteffigies
        limited = False

        self.response.out.write("<html><body>"+"<span style=\"font-family:Verdana; font-size:11\">")
        if showadds: self.response.out.write("")

        self.response.out.write("aufgrund von<br>Anpassungen<br>bei Google<br>vorübergehend<br>deaktiviert<br><br>siehe hier<br>")

        query = db.GqlQuery("SELECT * FROM Skill2 ORDER BY date DESC LIMIT 100")

        s = query.fetch(400)
        maxdays = 120

        skills = s[:]
       
        ausgaben = []
        ausgaben2 = []
        tage = []
        dates = []
       
        for item in skills:
            item.anzeige = True
            item.langerskill = False
            if not(item.date in dates):
                if (datetime.datetime.today() - item.date < datetime.timedelta(days = maxdays)):
                    dates += item.date,
                    d = str(item.date)
                    tag = 'am '+d[8:10]+'.'+d[5:7]
                    if (datetime.datetime.today() - item.date < datetime.timedelta(hours = 48)):
                        tag = 'Gestern'
                    if (datetime.datetime.today() - item.date < datetime.timedelta(hours = 24)):
                        tag = 'Heute'
                    ausgaben += [],
                    ausgaben2 += [],
                    tage += tag,
                else:
                    break
        nummer = 0

        for date in dates:
            self.response.out.write('<div align="center">'+"<span style=\"font-family:Verdana; font-size:11; text-decoration:underline; font-style:bold\">"+tage[nummer]+"</span><br>"+"<table border=\"0\" cellspacing=\"4\" cellpadding=\"1\">"+'</div>')
            spieler = []
            lvls = []
            for item in skills:
                if item.date == date:
                    if not(str(item.content)[-2:] in lvls):
                        lvls += str(item.content)[-2:],
                    if item.author in spieler:
                        ausgaben[nummer][spieler.index(item.author)] += item.content,
                    else:
                        spieler += item.author,
                        ausgaben[nummer] += [],
                        ausgaben2[nummer] += [],
                        ausgaben[nummer][spieler.index(item.author)] += item.content,
            for s in spieler:
                notagain = []
                for a in ausgaben[nummer][spieler.index(s)]:
                    temp = []
                    if not(a[:7] in notagain):
                        for a2 in ausgaben[nummer][spieler.index(s)]:
                            if a[:7] == a2[:7]:
                                temp += int(a2[-2:]),
                        if len(temp) > 1:
                            temp.sort()
                            ausgaben2[nummer][spieler.index(s)] += (a[:-2] + str(temp[0]) +'-'+ str(temp[-1])),
                            notagain += a[:7],
                        else:
                            ausgaben2[nummer][spieler.index(s)] += a,
            lvls.sort()
            lvls.reverse()
            for l in lvls:
                for s in spieler:
                    for a in ausgaben2[nummer][spieler.index(s)]:
                        if l == a[-2:]:
                            t1 = "<tr valign=\"middle\"><td align=\"right\"><span style=\"font-family:Verdana; font-size:11; font-style:italic\">"+str(s)+'</span></td><td align="center">'
                            t1 += '<img src="'+bild1+str(a).replace("ä","a")[:6].replace(" ","").lower()+bild2+'" alt="'
                            t1 += str(a)+'\" title=\"'+str(a).split(" ")[0]+'\">'+'</td><td><span style=\"font-family:Verdana; font-weight:bold; font-size:11\">'
                            t1 += str(a).split(" ")[-1]+'</span></td></tr>'
                            self.response.out.write(t1)
            self.response.out.write("</table>")
            nummer += 1
           
        self.response.out.write("""
            </span>
            </body>
          </html>""")
###########################################################################################################
class Drops2(webapp.RequestHandler):
    def get(self):
        global spliteffigies
       
        self.response.out.write("<html><body>"+"<span style=\"font-family:Verdana; font-size:11\">")
        if showadds: self.response.out.write("")

        query = db.GqlQuery('SELECT * FROM Item ORDER BY date DESC')

        items = query.fetch(100)
        maxdays = 120

        ausgaben = []
        tage = []
        dates = []
       
        for item in items:
            if not(item.date in dates) and ((str(item.content) != "eine uralte Skulptur") or not(spliteffigies)):
                if (datetime.datetime.today() - item.date < datetime.timedelta(days = maxdays)):
                    dates += item.date,
                    d = str(item.date)
                    tag = 'am '+d[8:10]+'.'+d[5:7]
                    if (datetime.datetime.today() - item.date < datetime.timedelta(hours = 48)):
                        tag = 'Gestern'
                    if (datetime.datetime.today() - item.date < datetime.timedelta(hours = 24)):
                        tag = 'Heute'
                    ausgaben += [],
                    tage += tag,
                else:
                    break
        nummer = 0

        for date in dates:
            spieler = []
            self.response.out.write('<div align="center">'+"<span style=\"font-family:Verdana; font-size:11; text-decoration:underline; font-style:bold\">"+tage[nummer]+"</span></div><div align=\"center\"><table border=\"0\" cellspacing=\"3\" cellpadding=\"1\">")
            for item in items:
                if item.date == date and ((str(item.content) != "eine uralte Skulptur") or not(spliteffigies)):
                    heis = str(item.content).replace("ein Paar ","").replace("einen ","").replace("eine ","").replace("ein ","")
                    try:
                        bild_pfad = d_items[heis]
                        t1 = '<span style=\"font-family:Verdana; font-weight:bold; font-size:11\"> 999 </span>'+'<img src=\"'+bild1+bild_pfad+'\"'+' alt=\"'+heis+'\" title=\"'+heis+'\">'
                    except:
                        t1 = '<span style=\"font-family:Verdana; font-weight:bold; font-size:11\"> 999 '
                        t1 += heis+'</span>'
                    if item.author in spieler:
                        ausgaben[nummer][spieler.index(item.author)] += t1,
                    else:
                        spieler += item.author,
                        ausgaben[nummer] += [],
                        ausgaben[nummer][spieler.index(item.author)] += t1,
            notagain = []
            for s in spieler:
                self.response.out.write('<tr valign=\"middle\"><td align=\"right\">'+"<span style=\"font-family:Verdana; font-size:11; font-style:italic\">"+s+':</span></td><td align=\"left\">')
                for a in ausgaben[nummer][spieler.index(s)]:
                    zahl = ausgaben[nummer][spieler.index(s)].count(a)
                    if zahl == 1:
                        self.response.out.write(a.replace("999",""))
                    elif not (a in notagain):
                        self.response.out.write(a.replace("999",str(zahl)+'x '))
                        notagain += a,
                self.response.out.write('</td></tr></div>')
            nummer += 1
            self.response.out.write('</div></table>')

        self.response.out.write("""
            </span>
            </body>
          </html>""")
######################################################################################################

application = webapp.WSGIApplication(
                                    [('/', MainPage),
                                      ('/drops', Drops),
                                      ('/drops/items', Dropsitems),
                                      ('/skills', Skill2s),
                                      ('/drops/all', Drops2),
                                      ('/skills/all', Skill2s2),
                                      ('/update/xxxxxxxx', Update),
                                      ('/info', Info),
                                      ('/info/xxxxxxxx', Info2),
                                      ('/renew/xxxxxxxx', Renew),
                                      ('/renew_datastore/xxxxxxxx', Renew_Datastore)],
                                    debug=True)

def main():
    run_wsgi_app(application)

if __name__ == "__main__":
    main()



Zuletzt von Vota am Do 17 Nov 2011, 11:02 bearbeitet, insgesamt 1 mal bearbeitet
Nach oben Nach unten
Benutzerprofil anzeigen
Marv



Anzahl der Beiträge : 1
Anmeldedatum : 17.11.11

BeitragThema: Re: Droplog funktioniert nicht mehr   Do 17 Nov 2011, 02:33

Gut, dass keiner mehr weiß, dass ich der schlechte Code ursprünglich von mir kam. king

Vota du hast nicht zufällig Lust und Zeit, allen Leuten mit Rat und Tat zur Seite zu stehen die einen Droplog machen wollen? Ich werd immer noch oft gefragt, wenn wieder mal etwas nicht funktioniert (so wie diesmal), oder neue Items o.ä. entstehen, wie man denn den Code anpassen muss, habe aber, da ich inzwischen studiere, meistens keine Zeit mich darum zu kümmern. Ich hab ja mal in unserem Forum versucht so eine Art Tutorial zu schreiben wie das funktioniert (3gods.org/t1531-droplog-erstellen), das natürlich schon wieder veraltet ist (so ähnlich bzw. darauf aufbauend könnte man ja was schreiben). Dann würde nämlich meine Faulheit endgültig siegen und ich würde alle Leute an euch/dich weiterleiten, dann dürft ihr ihnen helfen.

Edit: Übrigens gute Arbeit, du hast meinen Code da deutlich verbessert. *Daumenhoch*
Nach oben Nach unten
Benutzerprofil anzeigen
Vota



Geschlecht : Männlich Anzahl der Beiträge : 304
Anmeldedatum : 09.05.09
Alter : 48
Ort : Frankfurt
RS-Anzeigename : Mystic Heart

BeitragThema: Re: Droplog funktioniert nicht mehr   Do 17 Nov 2011, 14:06

Oh da irrst du, wir wissen GENAU, von wem wir den Sourcecode haben. Schau mal in deine PMs

Aber Scherz beiseite. Es konnte ja keiner wissen, dass Google die Nutzungsbedingungen derart drastisch ändern würde. In meinen Recherchen habe ich gesehen, dass es wohl im Juli diesen Jahres eine Ankündigung gab. Über die neuen Quotas selbst habe ich dort aber nichts gefunden. Von schlechtem Code kann man also nicht sprechen. Die Anpassung, die ich nun vorgenommen habe, war der für mich naheliegendste Lösungsansatz, um die durch Googles Umstellung augekommene Probleme schnellstmöglich zu umgehen.

Das unter 3gods.org/t1531-droplog-erstellen befindliche Tutorial war, zusammen mit dem Guide von Jakob bei Infinitum und der Unterstützung durch Elora, für mich der Einstiegspunkt in das Thema. Es sollte auch jedem anderen Interessierten heute noch helfen, die Basisversion des Droplogs zu installieren (es müsste lediglich der Quellcode aktualisiert werden). Nach Abschluss der aktuell noch andauernden Arbeiten werde ich sicherlich auch eine Art Guide erstellen, zumal sich im Handling ein paar Kleinigkeiten ändern werden. Und evtl bekomme ich es auch hin, ein "Installationspackage" zu erstellen. Letzteres hat aber erstmal keine Priorität.

Ich habe auch nichts dagegen, dem einen oder anderen Clan "Starthilfe" bei der Einrichtung des Droplogs zu geben, bzw. bei Fragen zum Thema auszuhelfen. Ich garantiere aber keinerlei Reaktionszeiten, und kann kann auch nicht versprechen, auf alles eine Antwort zu finden. Von daher ist es wichtig, dass alle Clans, die ein solches Feature anbieten möchten, da auch jemand haben, der sich anschließend mit darum kümmert.

VG/Volker
Nach oben Nach unten
Benutzerprofil anzeigen
Elora Wood



Geschlecht : Weiblich Anzahl der Beiträge : 2725
Anmeldedatum : 06.11.09
Ort : Tierra
RS-Anzeigename : Elora Wood

BeitragThema: Re: Droplog funktioniert nicht mehr   So 20 Nov 2011, 19:27

Halloechen Zusammen,

Wie Euch vielleicht schon aufgefallen ist, wurde das Erfolge Log veraendert (neue Version wurde getestet und scheint sehr gut zu funktionieren - Vota hats einfach drauf! - Dankeschoen Smile ) Nun zeigt das Drop Log zB mehr Gegenstaende an und es gibt auch Bildchen fuer die ganzen neuen Gegenstaende die der voherige Code nicht hatte. Auch sind wir mit diesem hier auf niemanden mehr Angewiesen, sondern koennen selbt neues dazu machen.

Der code wird momentan noch nicht freigegeben da noch an ein paar Sachen gebastelt wird.
Vota wird sicherlich noch einiges dazu schreiben Smile

LG, Elo

EDIT: Nicht nur gibt es mehr Drops die Angezeigt werden - aber auch die Leute die Maxed out sind in Skills (99 in allem) oder 99 in einem Skill haben - koennen sich auf Anzeigen auf der Skill liste freuen! Smile

_________________
Be yourself, everyone else is already taken!
Nach oben Nach unten
Benutzerprofil anzeigen http://germanelite.forumieren.eu/
Vota



Geschlecht : Männlich Anzahl der Beiträge : 304
Anmeldedatum : 09.05.09
Alter : 48
Ort : Frankfurt
RS-Anzeigename : Mystic Heart

BeitragThema: Re: Droplog funktioniert nicht mehr   So 20 Nov 2011, 20:55

Danke für aktivieren, Elo Very Happy


Elo hat ja schon das wichtigste gesagt. Von mir aber noch ein paar Hinweise:

Erstens und am allerwichtigsten: Das neue log befindet sich noch immer im Beta-Status. Auch wenn wir in den letzten Tagen intensiv getestet haben und das meiste an Bugs herausgeholt haben sollten, es können noch immer Fehler auftreten. Sollte euch etwas auffallen, gebt mir bitte Bescheid, damit ich danach schauen kann. Wenn die neue Version einige Tage stabil und fehlerfrei gelaufen ist, würde ich sie offiziell freigeben.

Zweitens: Die Update Frequenz ist wieder erhöht. Derzeit werden alle 20 Minuten sieben Abenteuerlogs gelesen (grob gerechnet also 20 pro Stunde). Für uns bedeutet dies, dass sich bei glaube 16 fürs Droplog infrage kommenden Spieler spätestens nach einer Stunde die Erfolge eines Mitgliedes sichtbar sein sollten. Die Art, wie nicht-öffentlche Adv-Logs behandelt werden, ist ebenfalls geändert und blockiert nun das Lesen von den öffentlichen Adv-Logs nicht mehr über die Maßen.

Drittens: Ich habe zunächst einmal die Verlinkung in die Markthalle herausgenommen. Solltet ihr die häufiger genutzt haben, lasst es mich wissen. Eigentlich würde ich sie gerne draußen lassen, aber würde sie auch wieder einbauen, wenn die Nachfrage sehr groß ist.

Viertens: Die Anzeigen "weitere Drops" und "weitere Skills" sind auch erstmal herausgenommen. Das hat hauptsächlich etwas mit der Performance zu tun, denn das Aufbauen der langen Liste verbraucht in Relation natürlich mehr CPU, und nach Auswertung der Aufrufe in den letzten Wochen (auch schon vor Anfang November) hatte ich festgestellt, dass diese Funktion fast nie genutzt wurde. Somit stand für mich CPU Verbauch zu tatsächlichem Nutzen in keinem sinnvollen Verhältnis.

Fünftens: Im Gegenzug ist die Anzahl der Tage für Skillanzeigen von vorher 3 auf nun 12, und die Dropanzeige von 10 auf 14 erhöht worden.

Die meisten Änderungen sieht man sowieso nicht, sondern befinden sich in den Tiefen des Sourcecodes. Ich würde aber schätzen, so ca. 80-85 % der Codes sind geändert. Ich hoffe jetzt nur, dass die angekündigte Neuerung der RS-Website sich nicht auf die App durchschlägt. Sonst müsste ich evtl. weitere Anpassungen vornehmen.

Ansonsten gilt natürlich: Feedback ausdrücklich erwünscht.

VG/Volker
Nach oben Nach unten
Benutzerprofil anzeigen
Lutze53



Anzahl der Beiträge : 7
Anmeldedatum : 12.11.11

BeitragThema: Re: Droplog funktioniert nicht mehr   So 20 Nov 2011, 22:09

wow Super Arbeit,

mittlweile habe ich es auch auf 20min stehen aber nur bei 2 Alogs und es läuft ohne Probleme Smile.

aber deine verbesserungen und neuerungen höre sich nicht schlecht an, hoffe die beta läuft fehlerfrei und würde mich auf eine bereitstellung freuen.
Meinen Dank nochmal hier an alle beteiligten

Lutze
Final Destruction
Nach oben Nach unten
Benutzerprofil anzeigen
Vota



Geschlecht : Männlich Anzahl der Beiträge : 304
Anmeldedatum : 09.05.09
Alter : 48
Ort : Frankfurt
RS-Anzeigename : Mystic Heart

BeitragThema: Re: Droplog funktioniert nicht mehr   Mo 21 Nov 2011, 18:04

Hallo Lutze,

natürlich gebe ich Dir, und auch allen anderen Interessierten, die neue Version gerne weiter.

Ich brauche halt nur noch ein paar Tage, um mir neben möglicher Fehlerquellen auch das Verhalten unter "Live"-Bedingungen anzuschauen. Mit den bisherigen Einstellungen scheinen wir bei "normalem" Nutzverhalten im Forum auf einen CPU Verbauch von ca. 85-90% und einen Datastore Verbrauch von max. 40% zu kommen. Damit wäre ich eigentlich vorerst zufrieden.
(Nach "Release" werde ich mich an V3 machen, ein paar Ideen zur Ergänzung habe ich schon )

Ich gebe hier im Forum Bescheid, sobald ich das Paket fertig habe

Danke & Grüße
Volker
Nach oben Nach unten
Benutzerprofil anzeigen
Lutze53



Anzahl der Beiträge : 7
Anmeldedatum : 12.11.11

BeitragThema: Re: Droplog funktioniert nicht mehr   Mo 21 Nov 2011, 20:09

ja thx vota Smile

neue ideen hören sich immer gut an, wobei mir momentan nicht genau einfällt was man noch an guten features einbauen könnte, aber ich lass mich mal überraschen.
Nach oben Nach unten
Benutzerprofil anzeigen
Vota



Geschlecht : Männlich Anzahl der Beiträge : 304
Anmeldedatum : 09.05.09
Alter : 48
Ort : Frankfurt
RS-Anzeigename : Mystic Heart

BeitragThema: Re: Droplog funktioniert nicht mehr   Do 24 Nov 2011, 15:49

Hallo zusammen,

mal einen kurzen Zwischenstand:

Seit Sonntag läuft die Version 2.2 in der Anzeige des GE Forums im Beta-Test
Dienstag habe ich "Die Scherzkekse", deren Droplog wir ja vorher bereits im GE Account gehostet haben, ebenfalls umgestellt und in den Beta-Test mit eingebunden.
Beide Versionen laufen mit sieben gelesenen Abenteuerlogs pro 20 Minuten

Der tägliche Ressourcenverbrauch hat sich unter den gegebenen Parametern auf 80% "Frontend Instance Hours" und max. 30% "Datastore" eingependelt.

Tests mit kürzeren Intervallen (z.B. 15 Minuten) erhöhen die "Frontend Instance Hours" in kritischen Maß. Von daher sehe ich davon im Weiteren erstmal ab.
Tests mit mehr als sieben gelesenen Abenteuerlogs erhöhen den Verbrauch "Frontend Instance Hours" und "Datastore" nur leicht. Von daher wäre dieser Parameter eher geeignet die Anzahl "Spieler pro Stunde" zu erhöhen. Jedoch tritt hier ab einem mir noch nicht genau bekannten Punkt der Effekt ein, dass Jagex die Zugriffe blockiert, wenn man zuviele Abenteuerlogs in zu kurzer Zeit lesen will. Versuche in meiner lokalen Testumgebung indizieren, dass man wohl nicht über 15 hinausgehen sollte. Ich werde nächste Woche hierzu noch ein bisschen experimentieren, aber einstweilen möchte ich die derzeit eingestellten Werte so belassen.

Denn mein Hauptaugenmerk liegt momentan darauf zu schauen, ob die Anzeigen korrekt funktioniern. Sollte beispielsweise statt einem Bild nur der Text eines Drops angezeigt werden, könnte das an Schreibfehlern bei der Benennung der Bilddateien liegen.

Außerdem hat Jagex zusammen mit der neu gestalteten Web-Page auch leichte Änderungen am Abenteuer-Log vorgenommen. Sind glücklicherweise keine größeren Sachen, von daher waren die Anpassungen in V2.2 leicht zu implementieren (die bisherige Version 1.x jedoch dürfte seit Dienstag keine neuen Drops mehr finden). Trotzdem bin ich momentan sehr vorsichtig, was Prognosen bzgl. der offiziellen Freigabe von V2.2 angeht. Denn nach meiner Einschätzung ist Jagex noch lange nicht durch mit den Anpassungen, und wer weiß was ihnen noch einfällt und wie sich das auf die App auswirkt ...

Einstweilen wünsche ich allen "Happy 'Scaping" und viele gute Drops und Level-Ups
VG
Volker
Nach oben Nach unten
Benutzerprofil anzeigen
Lutze53



Anzahl der Beiträge : 7
Anmeldedatum : 12.11.11

BeitragThema: Re: Droplog funktioniert nicht mehr   Do 24 Nov 2011, 18:08

ja das mit den Droplog seit dem Dienstagsupdate habe ich auch gemerkt, deshalb habe ich bei uns vorerst das Log komplett offline genommen.
Nach oben Nach unten
Benutzerprofil anzeigen
Bauherr



Anzahl der Beiträge : 15
Anmeldedatum : 25.11.11
Alter : 24
Ort : Niederösterreich

BeitragThema: Re: Droplog funktioniert nicht mehr   Sa 26 Nov 2011, 02:06

Hi Vota!

Ich hätte interesse daran, die neuen verbesserten Logs von dir zu beziehen.
Hab dich bereits in Skype zwecks Datenaustausch added und freue mich auf eine Antwort von dir.
Nach oben Nach unten
Benutzerprofil anzeigen
Gesponserte Inhalte




BeitragThema: Re: Droplog funktioniert nicht mehr   Heute um 17:30

Nach oben Nach unten
 
Droplog funktioniert nicht mehr
Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach oben 
Seite 1 von 2Gehe zu Seite : 1, 2  Weiter
 Ähnliche Themen
-
» [N64] Passport Plus III
» Rs cc Funktioniert nicht mehr!
» Schlummerhaus geht nicht mehr :(
» Schlummerhaus funktioniert bei mir nicht
» Nintendo Zone von Zuhause aus benutzen *Update*

Befugnisse in diesem ForumSie können in diesem Forum nicht antworten
German Elite - Runescape Skilling-Based Clan :: Extern :: Allgemeines :: Allgemeines-
Gehe zu: