Login

Ich habe mein Passwort vergessen!

Forumsregeln

Navigation


    Droplog erstellen

    Teilen
    avatar
    Bauherr

    Anmeldedatum : 02.10.10
    Anzahl der Beiträge : 12

    Re: Droplog erstellen

    Beitrag von Bauherr am 13.07.11 23:29

    Hab die Anweisungen/Anleitung genau befolgt und das ist das Ergebnis: http://umbranoc.appspot.com/

    main.py
    Code:
    # -*- coding: cp1252 -*-
    #Sicherheitscode: xxx
    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","Hoher Rat","Member"]

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

    bannerlink = "http://r13.imgfast.net/users/1314/82/00/73/album/c84elw10.png"
    bannerlink2 = "http://r13.imgfast.net/users/1314/82/00/73/album/ocqev811.png"
    showadds = False

    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'}<br>
    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) < len(adding):
                goto("a href")
                if -1 in last_positions:
                    break
                farbe = between_goto("style='","'")
                if -1 in last_positions:
                    break
                r = between_goto("title='Display Rank: ","'")
                if -1 in last_positions:
                    break
                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("; ","'")
                goto("href='")
                memb = between_goto("'>","<")
                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"),

            for m in adding_members:
                m.replace("Heinrichviii","HeinrichVIII")

            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()

    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:13\"><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

            self.response.out.write("""<head><meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"></head>""")
            self.response.out.write("<html><body>"+"<span style=\"font-family:Verdana; font-size:13\">")
            if showadds: self.response.out.write("<a href=\"http://www.3gods.org/\" target=\"_blank\"><img src=\""+bannerlink+"\" alt=\"Clan of the 3 Gods\" title=\"Clan of the 3 Gods\"></a>")

            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:14; 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("ü","&uuml;").replace("ö","&ouml;").replace("ä","&auml;")
                        try:
                            bild_pfad = d_items[heis]
                            t1 = '<span style=\"font-family:Verdana; font-weight:bold; font-size:18\"> 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; font-size:12\"> 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("""
                <a href="/drops/all" target="_blank">Mehr Drops anzeigen</a></span>
                </body>
              </html>""")

    class Skill2s(webapp.RequestHandler):
        def get(self,limited = True):
                self.response.out.write("<html><body>"+"<span style=\"font-family:Verdana; font-size:11\">")
                if showadds: self.response.out.write("<a href=\"http://www.3gods.org/\" target=\"_blank\"><img src=\""+bannerlink2+"\" alt=\"Clan of the 3 Gods\" title=\"Clan of the 3 Gods\"></a>")

                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; font-size:14; 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:12; 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:16\">'
                                    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>""")
         
    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; 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; font-size:11\">")
            if showadds: self.response.out.write("<a href=\"http://www.3gods.org/\" target=\"_blank\"><img src=\""+bannerlink+"\" alt=\"Clan of the 3 Gods\" title=\"Clan of the 3 Gods\"></a>")
            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; 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 == 6:
                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()
         
    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("<a href=\"http://www.3gods.org/\" target=\"_blank\"><img src=\""+bannerlink+"\" alt=\"Clan of the 3 Gods\" title=\"Clan of the 3 Gods\"></a>")

            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:14; 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:12; 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:16\">'
                                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:13\">")
            if showadds: self.response.out.write("<a href=\"http://www.3gods.org/\" target=\"_blank\"><img src=\""+bannerlink+"\" alt=\"Clan of the 3 Gods\" title=\"Clan of the 3 Gods\"></a>")

            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:14; 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:18\"> 999 </span>'+'<img src=\"'+bild1+bild_pfad+'\"'+' alt=\"'+heis+'\" title=\"'+heis+'\">'
                        except:
                            t1 = '<span style=\"font-family:Verdana; font-weight:bold; font-size:12\"> 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/xxx', Update),
                                          ('/info', Info),
                                          ('/info/xxx', Info2),
                                          ('/renew/xxx', Renew),
                                          ('/renew_datastore/xxx', Renew_Datastore)],
                                        debug=True)

    def main():
        run_wsgi_app(application)

    if __name__ == "__main__":
        main()

    app.yaml
    Code:
    application: umbranoc
    version: 1
    runtime: python
    api_version: 1

    handlers:
    - url: .*
      script: main.py

    cron.yaml
    Code:
    cron:
    - description: autoupdate
      url: /update/xxx
      schedule: every 1 minutes
    - description: memberlisteupdate
      url: /renew/xxx
      schedule: every day 02:00

    Zuerst kam ein Error 500 mit dem Hinweis:
    <type 'exceptions.SyntaxError'>: invalid syntax (main.py, line 67)

    Hab das <br> rausgelöscht.

    Jetzt kommt dieser Error:
    Code:
    'Renew' object has no attribute 'response'
    Traceback (most recent call last):
      File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/__init__.py", line 700, in __call__
        handler.get(*groups)
      File "/base/data/home/apps/s~umbranoc/1.351799734361996238/main.py", line 475, in get
        r.get(write = False)
      File "/base/data/home/apps/s~umbranoc/1.351799734361996238/main.py", line 164, in get
        self.response.out.write("<!-- "+text.replace("-->","")+"\n")
    AttributeError: 'Renew' object has no attribute 'response'

    Wär nett, wenn du mir helfen könntest.
    Danke
    avatar
    Dimmy

    Anmeldedatum : 19.06.09
    Anzahl der Beiträge : 2692

    Re: Droplog erstellen

    Beitrag von Dimmy am 14.07.11 1:48

    Ohne den Moderator spielen zu wollen (die Zeiten sind vorbei Ugly )

    aber hier sind nur Runescpae tipps gefragt, probier es doch mal unter der Rubrik Support
    avatar
    Bauherr

    Anmeldedatum : 02.10.10
    Anzahl der Beiträge : 12

    Re: Droplog erstellen

    Beitrag von Bauherr am 14.07.11 2:12

    ich möchte dir ja nicht die stimmung vermiesen aber, elora hat dort gefragt wegen support für die logs und wurde hierher verlinkt

    also passt der post hier perfekt rein Zwinker
    avatar
    Marv
    Ehrenmitglied

    Anmeldedatum : 22.05.09
    Anzahl der Beiträge : 1852

    Re: Droplog erstellen

    Beitrag von Marv am 14.07.11 4:44

    Wo ist denn jetzt hier genau das Problem? Ugly Scheint doch ganz gut zu funktionieren, bis auf das eine Holzfällerei was er da nicht ordentlich anzeigt? Nixblick

    Und ja ist genau der richtige Thread dazu. Ja


    _________________________________________
    16.08.2010
    01.10.2010
    16.10.2010
    Erfolge und Ziele
    avatar
    mac

    Anmeldedatum : 09.03.11
    Anzahl der Beiträge : 4

    Re: Droplog erstellen

    Beitrag von mac am 14.07.11 5:41

    Hey marv wie ist den der quellcode fürs UN droplog den du erstellt hast, den wollen wir ins forum einfügen Happy
    avatar
    Bauherr

    Anmeldedatum : 02.10.10
    Anzahl der Beiträge : 12

    Re: Droplog erstellen

    Beitrag von Bauherr am 14.07.11 5:48

    oh cool^^
    wusste nicht wie das zu erreichen war XD

    mac, ich habs brav erstellt, hab den code und alles, werde mich mit esco zusammenreden wegen einbauen ins forum Zwinker

    hab ich das richtig gesehen? alle spieler deren abenteurerlogbücher, die nicht öffentlich zugänglich sind, werden aus der liste entfernt?

    danke dir marv Happy
    spielst du eigentlicht noch? - würde dir gern ne spende von paar m geben fürs entwickeln von dem teil Happy

    edit:
    In der Codes.txt steht fälschlicher Weise zweimal "Armadyl-Plattenrock" drin. Der Gegenstand lautet jedoch korrekt "Armadyl-Kettenrock".
    avatar
    0wnage8
    Ehrenmitglied

    Anmeldedatum : 06.08.09
    Anzahl der Beiträge : 2095

    Re: Droplog erstellen

    Beitrag von 0wnage8 am 14.07.11 8:12

    Bauherr schrieb:oh cool^^
    wusste nicht wie das zu erreichen war XD

    mac, ich habs brav erstellt, hab den code und alles, werde mich mit esco zusammenreden wegen einbauen ins forum Zwinker

    hab ich das richtig gesehen? alle spieler deren abenteurerlogbücher, die nicht öffentlich zugänglich sind, werden aus der liste entfernt?

    danke dir marv Happy
    spielst du eigentlicht noch? - würde dir gern ne spende von paar m geben fürs entwickeln von dem teil Happy

    edit:
    In der Codes.txt steht fälschlicher Weise zweimal "Armadyl-Plattenrock" drin. Der Gegenstand lautet jedoch korrekt "Armadyl-Kettenrock".

    Marv hat gequitted gerne kannst du jedoch das geld beliebigen 3 godslern schenken^^oder gescheit investieren =P
    avatar
    Bauherr

    Anmeldedatum : 02.10.10
    Anzahl der Beiträge : 12

    Re: Droplog erstellen

    Beitrag von Bauherr am 14.07.11 8:12

    Marv schrieb:... bis auf das eine Holzfällerei was er da nicht ordentlich anzeigt? Nixblick

    Und ja ist genau der richtige Thread dazu. Ja

    Zwei Möglichkeiten:
    1. Wir verbieten den Clanmembern das lvln von Holzfällerei

    2. Es soll das Bild
    "http://www.3gods.org/users/1314/82/00/73/album/holzf&10.png"
    angezeigt werden, jedoch findet man das richtige Bild unter
    "http://www.3gods.org/users/1314/82/00/73/album/holzfa10.png"

    Ich hab es nirgendwo gefunden, wo man es ändern könnte.
    Marv kannst du bitte mal nachschauen? - Danke

    Rest funktioniert super und ist nun im Forum unter:
    http://umbranoctis.plusboard.de/
    auf der linken Bildschirmhälfte zu finden.
    avatar
    Marv
    Ehrenmitglied

    Anmeldedatum : 22.05.09
    Anzahl der Beiträge : 1852

    Re: Droplog erstellen

    Beitrag von Marv am 14.07.11 11:00

    Bauherr schrieb:hab ich das richtig gesehen? alle spieler deren abenteurerlogbücher, die nicht öffentlich zugänglich sind, werden aus der liste entfernt?
    [...]
    edit:
    In der Codes.txt steht fälschlicher Weise zweimal "Armadyl-Plattenrock" drin. Der Gegenstand lautet jedoch korrekt "Armadyl-Kettenrock".
    Ja, die werden entfernt, manchmal werden im Laufe des Tages (fälschlicherweise) auch Mitglieder deren Abenteuerlog öffentlich ist entfernt, aber meistens wurden die an dem Tag sowieso schon geupdatet und sind am nächsten Tag ja auch wieder mit drin.

    Danke, hab das mal "behoben" und Kettenrock durch Plattenrock ersetzt.
    Bauherr schrieb:
    Marv schrieb:... bis auf das eine Holzfällerei was er da nicht ordentlich anzeigt? Nixblick

    Und ja ist genau der richtige Thread dazu. Ja

    Zwei Möglichkeiten:
    1. Wir verbieten den Clanmembern das lvln von Holzfällerei

    2. Es soll das Bild
    "http://r13.imgfast.net/users/1314/82/00/73/album/holzf&10.png"
    angezeigt werden, jedoch findet man das richtige Bild unter
    "http://r13.imgfast.net/users/1314/82/00/73/album/holzfa10.png"
    Nehmt Variante 1. Ugly Nein, da muss ich nochmal nachschauen woran das liegen könnte. Sonderzeichen (in dem Fall das "ä") werden ja in HTML als &xxx dargestellt und da nach dem sechsten Zeichen abgeschnitten wird bleibt nur holzf& übrig, keine Ahnung warum er das jetzt bei euch nicht wieder zurück ersetzt.

    Edit: Problem vermutlich identifziert, in Zeile 392 kommt ein replace("ä","a") vor dort das "ä" durch "&# 228" (ohne das Leerzeichen) ersetzen.


    _________________________________________
    16.08.2010
    01.10.2010
    16.10.2010
    Erfolge und Ziele
    avatar
    Bauherr

    Anmeldedatum : 02.10.10
    Anzahl der Beiträge : 12

    Re: Droplog erstellen

    Beitrag von Bauherr am 15.07.11 3:43

    Ok, Danke, jetzt funktioniert alles soweit ich seh Happy

    vielleicht verschieben wir das ganze noch auf die rechte seite und machen es breiter, damit man nicht waagrecht scrollen muss

    Edit:
    Marv schrieb:...
    Edit: Problem vermutlich identifziert, in Zeile 392 kommt ein replace("ä","a") vor dort das "ä" durch "&# 228" (ohne das Leerzeichen) ersetzen.
    Das selbe ist nochmal in Zeile 697 auszubessern
    bei mir hat es dann aber erst funktioniert als ich "&# 228;" geschrieben hab (ohne Leerzeichen)
    avatar
    Elora Wood

    Anmeldedatum : 09.05.11
    Anzahl der Beiträge : 17

    Re: Droplog erstellen

    Beitrag von Elora Wood am 16.11.11 7:55

    Hallo Zusammen,

    Wie Ihr ja sicherlich schon bemerkt habt geht das Log nicht mehr -
    In unserem Forum gibts eine Erklaerung dafuer - und, auf Seite 2, einen NEUEN CODE und Erklaerungen was geaendert werden muss damit es wieder funkioniert - hier ist das link:
    http://germanelite.forumieren.eu/t2338-droplog-funktioniert-nicht-mehr
    Wer fragen hat kann sie dort hinterlassen.

    LG & viel Glueck, Elo

    Gesponserte Inhalte

    Re: Droplog erstellen

    Beitrag von Gesponserte Inhalte


      Aktuelles Datum und Uhrzeit: 24.01.18 20:00