Beispiel #1
0
    def get(self, db):
        loaded = list(starlight.cached_db(starlight.ark_data_path(db)))
        fields = loaded[0].__class__._fields

        self.set_header("Content-Type", "text/html")
        self.render("debug_view_database.html", data=loaded,
                    fields=fields, **self.settings)
Beispiel #2
0
    def get(self):
        eda = starlight.cached_db(starlight.ark_data_path("event_data.csv"))
        now = pytz.utc.localize(datetime.utcnow())
        if now.day == 29 and now.month == 2:
            now += timedelta(days=1)

        for event in eda:
            if starlight.JST(event.event_start) < now < starlight.JST(event.event_end):
                break
        else:
            event = None

        # FIXME this is ridiculous. i just want to convert a f*****g timestamp to a f*****g UTC timestamp.
        if event:
            evedt = starlight.JST(event.event_end)
            event_end = timegm(evedt.timetuple())
        else:
            event_end = None

        local_gachas = list(filter(lambda x: starlight.JST(x.start_date) < now < starlight.JST(x.end_date), self.gachas))
        card_ids = itertools.chain( * ([x.reward_id for x in llist] for llist in [x.clist for x in local_gachas]) )
        s_cards = {idp: starlight.evolutionary_chains[x.series_id][0]
                   for idp, x in filter(bool, [(x, starlight.card_db.get(x)) for x in card_ids])}

        self.render("main.html", history=HISTORY,
            has_event=bool(event),
            event=event,
            event_end=event_end,
            gachas={"lg": local_gachas, "ci": s_cards}, **self.settings)
        self.settings["analytics"].analyze_request(self.request, self.__class__.__name__)
Beispiel #3
0
    def get(self, db):
        loaded = list(starlight.cached_db(starlight.ark_data_path(db)))
        fields = loaded[0].__class__._fields

        self.set_header("Content-Type", "text/html")
        self.render("debug_view_database.html",
                    data=loaded,
                    fields=fields,
                    **self.settings)
Beispiel #4
0
    def get(self):
        gen = sorted(starlight.cached_db(starlight.ark_data_path(
            "story_detail.csv")), key=lambda x: (x.story_detail_type, x.dialog_id))

        self.set_header("Content-Type", "text/html; charset=utf-8")
        self.write("<pre>")
        self.write(self.banner)
        for story in gen:
            if self.story_exists(story):
                self.write_story_ent(story)
        self.write("</pre>")
Beispiel #5
0
    def get(self):
        gen = sorted(starlight.cached_db(
            starlight.ark_data_path("story_detail.csv")),
                     key=lambda x: (x.story_detail_type, x.dialog_id))

        self.set_header("Content-Type", "text/html; charset=utf-8")
        self.write("<pre>")
        self.write(self.banner)
        for story in gen:
            if self.story_exists(story):
                self.write_story_ent(story)
        self.write("</pre>")
Beispiel #6
0
    def get(self):
        eda = starlight.cached_db(starlight.ark_data_path("event_data.csv"))
        now = pytz.utc.localize(datetime.utcnow())
        if now.day == 29 and now.month == 2:
            now += timedelta(days=1)

        for event in eda:
            if starlight.JST(event.event_start) < now < starlight.JST(
                    event.event_end):
                break
        else:
            event = None

        # FIXME this is ridiculous. i just want to convert a f*****g timestamp to a f*****g UTC timestamp.
        if event:
            evedt = starlight.JST(event.event_end)
            event_end = timegm(evedt.timetuple())
        else:
            event_end = None

        local_gachas = list(
            filter(
                lambda x: starlight.JST(x.start_date) < now < starlight.JST(
                    x.end_date), self.gachas))
        card_ids = itertools.chain(
            *([x.reward_id for x in llist]
              for llist in [x.clist for x in local_gachas]))
        s_cards = {
            idp: starlight.evolutionary_chains[x.series_id][0]
            for idp, x in filter(bool, [(x, starlight.card_db.get(x))
                                        for x in card_ids])
        }

        self.render("main.html",
                    history=HISTORY,
                    has_event=bool(event),
                    event=event,
                    event_end=event_end,
                    gachas={
                        "lg": local_gachas,
                        "ci": s_cards
                    },
                    **self.settings)
        self.settings["analytics"].analyze_request(self.request,
                                                   self.__class__.__name__)
Beispiel #7
0
    def get(self):
        self.set_header("Content-Type", "text/plain; charset=utf-8")

        eda = starlight.cached_db(starlight.ark_data_path("event_data.csv"))
        now = pytz.utc.localize(datetime.utcnow())
        for event in eda:
            if starlight.JST(event.event_start) < now < starlight.JST(event.event_end):
                break
        else:
            event = None

        # FIXME this is ridiculous. i just want to convert a f*****g timestamp to a f*****g UTC timestamp.
        if event:
            evedt = starlight.JST(event.event_end, to_utc=0)
            self.set_header("Content-Type", "text/plain; charset=utf-8")
            self.write("{1}".format(event.name, evedt.strftime("%B %d, %Y %H:%M")))
        else:
            self.write("None")
Beispiel #8
0
    def get(self):
        self.set_header("Content-Type", "text/plain; charset=utf-8")

        eda = starlight.cached_db(starlight.ark_data_path("event_data.csv"))
        now = pytz.utc.localize(datetime.utcnow())
        for event in eda:
            if starlight.JST(event.event_start) < now < starlight.JST(
                    event.event_end):
                break
        else:
            event = None

        # FIXME this is ridiculous. i just want to convert a f*****g timestamp to a f*****g UTC timestamp.
        if event:
            evedt = starlight.JST(event.event_end, to_utc=0)
            self.set_header("Content-Type", "text/plain; charset=utf-8")
            self.write("{1}".format(event.name,
                                    evedt.strftime("%B %d, %Y %H:%M")))
        else:
            self.write("None")
Beispiel #9
0
async def update_to_res_ver(res_ver):
    global last_version_check
    mdb_path = starlight.ark_data_path("{0}.mdb".format(res_ver))
    if not os.path.exists(mdb_path):
        new_path = await acquisition.get_master(
            res_ver, starlight.transient_data_path("{0}.mdb".format(res_ver)))

    last_version_check = time()

    if new_path:
        old_path = None
        if starlight.data:
            old_path = starlight.transient_data_path("{0}.mdb".format(
                starlight.data.version))

        try:
            do_preswitch_tasks(new_path, old_path)
        except Exception as e:
            print("do_preswitch_tasks croaked, update aborted.")
            raise

        starlight.hand_over_to_version(res_ver)
        apiclient.ApiClient.shared().res_ver = str(res_ver)
Beispiel #10
0
def sieve_diff_contents(de):
    ret = {
        "event": [],
        "ssr": [],
        "sr": [],
        "r": [],
        "n": []
    }
    for card_id in filter(lambda x: starlight.card_db[x].evolution_id, de["cids"]):
        if card_id in event_cards:
            ret["event"].append(card_id)
        else:
            key = ["n", "n", "r", "r", "sr", "sr", "ssr", "ssr"][starlight.card_db[card_id].rarity - 1]
            ret[key].append(card_id)
    return {"date": de["date"], "cids": ret}
event_cards = [x.reward_id for x in starlight.cached_db(starlight.ark_data_path("event_available.csv"))]
HISTORY = [sieve_diff_contents(x) for x in reversed(starlight.jsonl(starlight.private_data_path("history.json")))]

@route(r"/")
class Home(tornado.web.RequestHandler):
    gachas = list(filter(lambda x: sum(y.limited_flag for y in x.clist), # note: gachas with limited cards
                         starlight.cached_db(starlight.ark_data_path("gacha_data.csv"),
                                             # gacha_available_t -> reward_id...
                                             clist=lambda obj: list(filter(lambda x: obj.id == x.gacha_id and x.limited_flag,
                                                 starlight.cached_db(starlight.ark_data_path("gacha_available.csv")))),
                                             # int
                                             end_t=lambda obj: timegm(starlight.JST(obj.end_date).timetuple()) )))

    def get(self):
        eda = starlight.cached_db(starlight.ark_data_path("event_data.csv"))
        now = pytz.utc.localize(datetime.utcnow())
Beispiel #11
0
def sieve_diff_contents(de):
    ret = {"event": [], "ssr": [], "sr": [], "r": [], "n": []}
    for card_id in filter(lambda x: starlight.card_db[x].evolution_id,
                          de["cids"]):
        if card_id in event_cards:
            ret["event"].append(card_id)
        else:
            key = ["n", "n", "r", "r", "sr", "sr", "ssr",
                   "ssr"][starlight.card_db[card_id].rarity - 1]
            ret[key].append(card_id)
    return {"date": de["date"], "cids": ret}


event_cards = [
    x.reward_id for x in starlight.cached_db(
        starlight.ark_data_path("event_available.csv"))
]
HISTORY = [
    sieve_diff_contents(x) for x in reversed(
        starlight.jsonl(starlight.private_data_path("history.json")))
]


@route(r"/")
class Home(tornado.web.RequestHandler):
    gachas = list(
        filter(
            lambda x: sum(y.limited_flag
                          for y in x.clist),  # note: gachas with limited cards
            starlight.cached_db(
                starlight.ark_data_path("gacha_data.csv"),