diff --git a/database/Creators/913304C0CC74CC1F/74CC1F_0D3AA40F2B3A0_000.ppm b/database/Creators/913304C0CC74CC1F/74CC1F_0D3AA40F2B3A0_000.ppm new file mode 100644 index 0000000..df5680a Binary files /dev/null and b/database/Creators/913304C0CC74CC1F/74CC1F_0D3AA40F2B3A0_000.ppm differ diff --git a/database/Creators/913304C0CC74CC1F/flipnotes.dat b/database/Creators/913304C0CC74CC1F/flipnotes.dat new file mode 100644 index 0000000..4eeff11 --- /dev/null +++ b/database/Creators/913304C0CC74CC1F/flipnotes.dat @@ -0,0 +1 @@ +74CC1F_0D3AA40F2B3A0_000 2 0 0 0 0 0 0 \ No newline at end of file diff --git a/database/__init__.py b/database/__init__.py new file mode 100644 index 0000000..d223990 --- /dev/null +++ b/database/__init__.py @@ -0,0 +1,161 @@ +from __future__ import annotations + +import atexit +import os + +try: + from twisted.internet import reactor +except ImportError: # Allows the database module to be used/tested without Twisted installed. + reactor = None + +from Hatenatools import TMB + + +class Database: + """Plain-text Flipnote database used by the original server. + + This backend is intentionally single-process, matching the original design. + """ + + def __init__(self): + newest_path = "database/new_flipnotes.dat" + if os.path.exists(newest_path): + with open(newest_path, "r", encoding="utf-8", newline="") as f: + raw = f.read() + else: + raw = "" + + self.Newest = [tuple(line.split("\t")) for line in raw.splitlines() if line] if raw else [] + self.Creator = {} + + self.new = False + self.Views = 0 + self.Stars = 0 + self.Downloads = 0 + + if reactor is not None: + reactor.callLater(60 * 3, self.flusher) + atexit.register(self.write) + + def flusher(self): + if reactor is not None: + reactor.callLater(60 * 3, self.flusher) + self.write() + + def write(self): + if self.new: + if len(self.Newest) > 5000: + self.Newest = self.Newest[:5000] + with open("database/new_flipnotes.dat", "w", encoding="utf-8", newline="") as f: + f.write("\n".join("\t".join(map(str, row)) for row in self.Newest)) + self.new = False + + for creator_id in list(self.Creator.keys()): + creator_dir = os.path.join("database", "Creators", creator_id) + os.makedirs(creator_dir, exist_ok=True) + with open(os.path.join(creator_dir, "flipnotes.dat"), "w", encoding="utf-8", newline="") as f: + f.write("\n".join("\t".join(map(str, row)) for row in self.Creator[creator_id])) + del self.Creator[creator_id] + + def CreatorExists(self, CreatorID): + return os.path.exists(os.path.join("database", "Creators", CreatorID)) or CreatorID in self.Creator + + def FlipnoteExists(self, CreatorID, filename): + return os.path.exists(self.FlipnotePath(CreatorID, filename)) + + def GetCreator(self, CreatorID, Store=False): + if CreatorID in self.Creator: + return self.Creator[CreatorID] + + creator_dir = os.path.join("database", "Creators", CreatorID) + if not os.path.exists(creator_dir): + return None + + with open(os.path.join(creator_dir, "flipnotes.dat"), "r", encoding="utf-8", newline="") as f: + raw = f.read() + ret = [line.split("\t") for line in raw.splitlines() if line] + + # Current format: + # filename, views, stars, green, red, blue, purple, channel, downloads + for row in ret: + filename = row[0] + defaults = (filename, 0, 0, 0, 0, 0, 0, "", 0) + while len(row) < len(defaults): + row.append(defaults[len(row)]) + + if Store: + self.Creator[CreatorID] = ret + return ret + + def GetFlipnote(self, CreatorID, filename, Store=False): + for row in self.GetCreator(CreatorID, Store) or []: + if row[0] == filename: + return row + return False + + def GetFlipnotePPM(self, CreatorID, filename): + with open(self.FlipnotePath(CreatorID, filename), "rb") as f: + return f.read() + + def GetFlipnoteTMB(self, CreatorID, filename): + with open(self.FlipnotePath(CreatorID, filename), "rb") as f: + return f.read(0x6A0) + + def AddFlipnote(self, content, Channel=""): + content = bytes(content) + tmb = TMB().Read(content) + if not tmb: + return False + + CreatorID = tmb.EditorAuthorID + filename = tmb.CurrentFilename[:-4] + if self.FlipnoteExists(CreatorID, filename): + return False + + self.new = True + self.Newest.insert(0, (CreatorID, filename)) + + if not self.GetCreator(CreatorID, True): + self.Creator[CreatorID] = [[filename, 0, 0, 0, 0, 0, 0, Channel, 0]] + else: + self.Creator[CreatorID].append([filename, 0, 0, 0, 0, 0, 0, Channel, 0]) + + creator_dir = os.path.join("database", "Creators", CreatorID) + os.makedirs(creator_dir, exist_ok=True) + with open(self.FlipnotePath(CreatorID, filename), "wb") as f: + f.write(content) + return CreatorID, filename + + def AddView(self, CreatorID, filename): + for i, flipnote in enumerate(self.GetCreator(CreatorID, True) or []): + if flipnote[0] == filename: + self.Creator[CreatorID][i][1] = int(flipnote[1]) + 1 + self.Views += 1 + return True + return False + + def AddStar(self, CreatorID, filename, amount=1, color="yellow"): + starindices = {"yellow": 2, "green": 3, "red": 4, "blue": 5, "purple": 6} + if color not in starindices: + return False + for i, flipnote in enumerate(self.GetCreator(CreatorID, True) or []): + if flipnote[0] == filename: + idx = starindices[color] + self.Creator[CreatorID][i][idx] = int(flipnote[idx]) + amount + self.Stars += 1 + return True + return False + + def AddDownload(self, CreatorID, filename): + for i, flipnote in enumerate(self.GetCreator(CreatorID, True) or []): + if flipnote[0] == filename: + self.Creator[CreatorID][i][8] = int(flipnote[8]) + 1 + self.Downloads += 1 + return True + return False + + def FlipnotePath(self, CreatorID, filename): + return os.path.join("database", "Creators", CreatorID, filename + ".ppm") + + +Database = Database() diff --git a/database/new_flipnotes.dat b/database/new_flipnotes.dat new file mode 100644 index 0000000..20df4ab --- /dev/null +++ b/database/new_flipnotes.dat @@ -0,0 +1 @@ +913304C0CC74CC1F 74CC1F_0D3AA40F2B3A0_000 \ No newline at end of file diff --git a/hatenadir/css/ds/basic.css b/hatenadir/css/ds/basic.css new file mode 100644 index 0000000..d24c935 --- /dev/null +++ b/hatenadir/css/ds/basic.css @@ -0,0 +1,830 @@ +@charset "UTF-8"; +table.profbox { + background-color: #82c300; + color: #ffffff; +} +div.prof_out { + margin: 0 11px 0 11px; + background-color: #82c300; + border-style: solid; + border-width: 0 1px 0 1px; + border-color: #82c300; +} +span.more-f{ + color: #ffffff; +} +div.notice2 { + margin:0 11px 5px 11px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#82c300; + background-color:#fbfbfb; +} +span.url{ + text-decoration:underline; +} +span.comptxt { + color:#ff8a00; +} +span.star0 { + color:#fdc556; +} +span.star1 { + color:#138200; +} +span.star2 { + color:#ff455c; +} +span.star3 { + color:#00b0f9; +} +span.star4 { + color:#a411b9; +} +span.star0c { + color:#fdc556; +} +span.star1c { + color:#138200; +} +span.star2c { + color:#ff455c; +} +span.star3c { + color:#00b0f9; +} +span.star4c { + color:#a411b9; +} +span.orange{ + color: #ff8d45; +} +span.green { + color: #82c300; +} +span.gray{ + color: #666666; +} +span.white { + color:#FFFFFF; +} +html { + margin:0; + padding:0; +} +body { + color:#333333; + margin:0; + padding:0; +} +div.title { + margin:0 7px 0 7px; + padding:7px 5px 7px 5px; + border-style:solid; + border-width:0 0 1px 0; + border-color:#CCCCCC; +} +div.description { + margin:0 7px 0 7px; + padding:7px 5px 7px 5px; + border-style:solid; + border-width:0 0 1px 0; + border-color:#CCCCCC; +} +div.hr { + border-style:solid; + border-width:0 0 1px 0; + border-color:#CCCCCC; +} +div.hr-tab { + border-style:solid; + border-width:0 0 1px 0; + border-color:#82c300; +} +span.timestamp { + color:#999999; +} +a.timestamp { + color:#999999; +} +a.violation { + color:#333333; +} +div.box { + padding:7px; + border-style:solid; + border-width:1px; + border-color:#CCCCCC; + background-color:#FFFFFF; +} +div.more { + margin:7px 0 0 0; +} +div.pager { + padding:5px; +} +div.num { + margin:5px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#CCCCCC; + background-color:#FFFFFF; +} +span.new { + color: #cc0000; +} +span.price { + color: #92cb22; +} +span.date { + color: #cccccc; +} +table.detail{ + margin:0 7px 0 7px; +} +table.fullsize { + margin:0; +} +div.item-term { + padding:3px 0 3px 5px; +} +div.item-value { + padding:3px 5px 3px 0; +} +div.item-text { + padding:3px 5px 3px 15px; +} +div.item-tcom { + padding: 3px 5px 0 5px; +} +div.item-com { + padding: 0 5px 0 5px; +} +div.td-body { + padding:3px 5px 3px 5px; +} +div.comlist { + background-color:#FFFFFF; +} +div.comment-text { + padding:3px 5px 5px 15px; +} +div.comment-memo { + padding:0 0 0 15px; +} +div.staff { + color:#FFFFFF; + background-color:#1a1a1a; +} +a.staffnam { + color:#FFFFFF; +} +div.notice { + width:226px; + margin:7px 7px 3px 7px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#BCCDED; + background-color:#E5EEFE; +} +div.colorstar { + margin:7px 0 7px 0; +} +div.code-box{ + width:226px; + margin:7px 0 0 0; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#BCCDED; + background-color:#E5EEFE; +} +div.code-data{ + margin:7px 0 7px 0; +} +div.mail-reply { + width:226px; + margin:7px 7px 2px 7px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#BCCDED; + background-color:#E5EEFE; +} +div.lett_txt { + margin: 0 11px 0 11px; + border-style:solid; + border-width:0 2px 0 2px; + border-color:#92d300; + background-color:#ffffff; +} +div.lett_to { + margin: 0 11px 0 11px; + background-color:#92d300; + color:#ffffff; + padding: 1px 0 6px 5px; +} +div.pad0{ + padding: 0 0 0 0; +} +div.pad5t{ + padding: 5px 0 0 0; +} +div.pad5b{ + padding: 0 0 5px 0; +} +div.pad1b{ + padding: 0 0 1px 0; +} +div.pad2b{ + padding: 0 0 2px 0; +} +div.pad2{ + padding: 2px 2px 2px 2px; +} +div.pad5{ + padding: 5px 5px 5px 5px; +} +div.pad0-5{ + padding: 0 5px 0 5px; +} +td.pad2{ + padding: 2px 2px 2px 2px; +} +div.pad3-5{ + padding: 3px 5px 3px 5px; +} +div.lett_from{ + padding: 3px 11px 3px 0; +} +div.pad11{ + padding: 11px 11px 11px 11px; +} +div.pad5-11{ + padding: 5px 11px 5px 11px; +} +div.pad10b{ + padding: 0 0 10px 0; +} +div.pad20b{ + padding: 0 0 20px 0; +} +div.mar0-7{ + margin: 0px 7px 0px 7px; +} +div.mar0-11{ + margin: 0px 11px 0px 11px; +} +div.mar0{ + margin: 0px 0px 0px 0px; +} +div.mar5 { + margin: 5px 5px 5px 5px; +} +div.yaritori{ + margin: 0 11px 0 11px; + background-color:#ffffff; + border-style:solid; + border-width:0 2px 0 2px; + border-color:#92d300; +} +div.gr-tit{ + margin: 0 11px 0 11px; + background-color:#92d300; + color:#ffffff; +} +div.kadomaru{ + margin: 0 11px 0 11px; +} +div.lett-note{ + margin: 5px 11px 5px 11px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#92d300; + background-color:#ffffff; +} +div.pk{ + background-color:#ff3ab7; +} +div.blue{ + background-color:#3acfff; +} +div.gray{ + background-color:#cccccc; +} +div.gray_box{ + padding:5px; + border-style:solid; + border-width:1px; + border-color:#cccccc; + background-color:#ffffff; +} +div.vio-intro { + width:240px; + padding:7px 0 7px 7px; +} +div.vio-memo { + padding:0 0 10px 15px; +} +div.vio-text { + padding:0 0 10px 15px; +} +div.vio-note { + color:#999999; + padding:0 0 10px 15px; +} +div.vio-submit { + padding:10px 0 10px 0; +} +div.info-head { + padding:5px 7px 5px 7px; + border-style:solid; + border-width:0 0 1px 0; + border-color:#CCCCCC; + background-color:#eeeeee; +} +div.noborder{ + border-style:solid; + border-color:#CCCCCC; + border-width:0 0 0 0; +} +div.info-body { + padding:7px; +} +div.info-msg { + margin:0 0 7px 0; +} +div.news-head { + padding:5px 7px 5px 7px; + border-style:solid; + border-width:0 0 1px 0; + border-color:#CCCCCC; + background-color:#eeeeee; +} +div.news-body { + padding:7px; +} +div.news-h1 { + margin:7px 7px 0 7px; + padding:7px; + border-style:solid; + border-width:3px; + border-color:#91C900; +} +div.news-h2 { + padding:0 0 3px 7px; + border-style:solid; + border-width:0 0 1px 4px; + border-color:#91C900; +} +img.news-memo { + margin:0 10px 5px 0; + border-style:solid; + border-width:1px; + border-color:#CCCCCC; +} +div.info-h2 { + padding:0 0 3px 7px; + border-style:solid; + border-width:0 0 1px 4px; + border-color:#91C900; +} +div.num-box{ + background-color:#cccccc; + margin:0 30px; +} +td.tit-star{ + background-color:#e9f8c3; +} +img.help{ + border-style:solid; + border-width:2px; + border-color:#ffffff; +} +div.list{ + padding:0 0 5px 0; +} +div.star-det{ + padding:5px 0 5px 0; +} +img.sc{ + border-style:solid; + border-width:1px; + border-color:#cccccc; +} +td.border { + background-color: #82c300; +} +div.border { + border-style: solid; + border-width: 0 0 5px 0; + border-color: #82c300; +} +div.border-c { + border-style: solid; + border-width: 0 0 2px 0; + border-color: #82c300; +} +td.space { + background-color: #82c300; + color: #82c300; +} +td.tabon { + color: #82c300; +} +td.taboff { + background-color: #82c300; + color: #ffffff; +} +td.tabpager { + background-color: #82c300; + color: #ffffff; +} +div.on { + padding: 1px 6px 3px 6px; +} +span.border { + color: #b2db59; +} +span.border-gray { + color: #cccccc; +} +a.taboff { + color: #ffffff; +} +div.comme { + padding: 3px 3px 3px 12px; + color: #b2db59; +} +span.text { + color: #333333; +} +td.gray { + background-color: #f2f2f2; +} +div.message { + width:226px; + margin:7px 7px 2px 7px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#BCCDED; + background-color:#E5EEFE; +} +div.error-message { + width:226px; + margin:7px 7px 2px 7px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#F5C8A7; + background-color:#FFEED8; + color:#9B2E2E; +} +div.ok-message { + width:226px; + margin:7px 7px 2px 7px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#C5DABA; + background-color:#E3F9DB; + color:#517B29; +} +div.guide-h2 { + padding:0 0 3px 7px; + border-style:solid; + border-width:0 0 1px 4px; + border-color:#66ccff; +} +div.guide-h3 { + padding:3px 3px 3px 3px; + background-color:#66ccff; + color: #ffffff; +} +div.select-t { + color: #66ccff; + padding: 0 0 3px 0; +} +div.select-b { + padding:5px 3px 5px 3px; + border-style: solid; + border-width: 1px 1px 1px 1px; + border-color: #99ccff; + background-color: #ffffff; +} +span.border-s { + color: #99ccff; +} +span.color { + color: #ffffff; +} +div.credit { + padding:5px 7px 5px 7px; + background-color:#eeeeee; +} +div.rule-tit { + background-color: #82c300; + color: #ffffff; + padding: 3px 3px 3px 3px; +} +div.rule-ind { + margin: 0 0 0 10px; +} +div.hr-prof { + border-style:solid; + border-width:0 0 3px 0; + border-color:transparent; +} +table.send { + margin: 5px 0 0 0 ; +} +div.icon { + border-style: solid; + border-width: 1px 1px 1px 1px; + border-color: #cccccc; +} +td.username { + height:20px; +} +td.mystatus { +} +div.prev { + padding: 1px 0 5px 0; +} +div.next { + padding: 5px 0 1px 0; +} +div.prof-det{ + padding: 0 5px 0 5px; +} +div.catch { + margin: 5px 5px 5px 5px; + padding: 5px 5px 5px 5px; + border-style: solid; + border-width: 2px 2px 2px 2px; + border-color: #ffffff; +} +a.still { + color: #ffffff; +} +div.head { + margin: 0px 0 0 0; +} +div.send { + margin: 0px 10px 3px 11px; +} +div.link { + margin: 0px 10px 0 11px; +} +img.button { + margin: 5px 0 0 0; +} +td.theme { + margin: 0 0 0 3px; +} +div.trial-h1 { + margin: 5px 0 5px 0; + padding:3px; + border-style:solid; + border-width:3px; + border-color:#91C900; +} +div.mar-b10{ +margin:0 0 10px 0; +} +div.cam1{ + margin:7px 7px 0 7px; + padding:7px; + background-color: #ff2828; + color: #ffffff; +} +div.cam2{ + margin:0 7px 0 7px; + padding:7px; + border-style:solid; + border-width: 2px 2px 2px 2px; + border-color: #ff2828; +} +table.xmas2009{ + margin: 0 10px 0 11px; + background-color: #c70606; + color: #ffffff; +} +div.yellow { + margin: 0 11px 0 11px; + background-color:#ffe800; +} +div.sttr_mes { + width:226px; + margin:7px 7px 0px 7px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#92cb22; + background-color:#ffffff; +} +div.sttr_gacha { + width:226px; + margin:7px 7px 0px 7px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#ea475c; + background-color:#ffffff; +} +div.compsp { + width:226px; + margin:7px 7px 0px 7px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#ffe800; + background-color:#fff9b7; +} +div.sttr_war { + width:226px; + margin:7px 7px 0px 7px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#F5C8A7; + background-color:#FFEED8; + color:#9B2E2E; +} +div.sttr_price { + background-color:#FF9933; + color: #ffffff; +} +div.sttr_item { + width:226px; + margin:0px 7px 0px 7px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#92cb22; + background-color:#ffffff; +} +div.sttr_theme { + width:226px; + margin:0px 7px 3px 7px; + padding:5px; + border-style:solid; + border-width:0px 1px 1px 1px; + border-color:#92cb22; + background-color:#ffffff; +} +div.sttr_back { + width:226px; + margin:0px 7px 0px 7px; +} +div.gift_l { + margin: 0 11px 0 11px; + border-style:solid; + border-width:0 2px 0px 2px; + border-color:#ff5252; +} +div.gift_h { + margin: 0 11px 0 11px; + border-style:solid; + border-width:0 2px 0px 2px; + border-color:#ffd616; +} +img.shop_icon { + margin:0 1px 1px 0; +} +div.help_guide { + border-style:solid; + border-width:0 1px 1px 1px; + border-color:#ffac3e; +} +div.guide-head { + color: #ffffff; + background-color: #5abcea; +} +div.guide-title { + color: #ffffff; + background-color: #5abcea; +} +div.guide-main { + border-style:solid; + border-width:0 1px 1px 1px; + border-color:#5abcea; +} +div.green-title { + color: #ffffff; + background-color: #91C900; +} +div.green-main { + border-style:solid; + border-width:0 1px 1px 1px; + border-color:#91C900; +} +table.method{ + border-style:solid; + border-width:1px; + border-color:#cccccc; +} +div.search { + background-color: #eeeeee; + border-style: solid; + border-width: 1px; + border-color:#cccccc; +} +td.keyboard { + background-color: #eeeeee; +} +table.key-tab{ + margin: 0 6px 0 6px; +} +div.keyout { + margin: 0 7px 0 7px; + border-style: solid; + border-width: 0 1px 1px 1px; + border-color:#cccccc; +} +div.on-ja { + border-style: solid; + border-width: 1px 1px 0 1px; + border-color:#cccccc; +} +div.off-en { + border-style: solid; + border-width: 1px 1px 0 0; + border-color:#cccccc; +} +div.off-aa { + border-style: solid; + border-width: 1px 1px 0 0; + border-color:#cccccc; +} +table.camp-detail { + border-style: solid; + border-width: 1px; + border-color:#cccccc; +} +table.center { + margin: 0 15px 0 16px; +} +div.codeborder { + border-style: solid; + border-width:0 1px 1px 1px; + border-color:#82c300; +} +div.codeprev { + border-style: solid; + border-width:1px; + border-color:#82c300; +} +td.code { + background-color:#ffffff; +} +table.codetab { + border-style: solid; + border-width: 1px 1px 0 1px; + border-color:#82c300; +} +div.codetab { + border-style: solid; + border-width: 0 1px 1px 1px; + border-color:#82c300; + background-color:#ffffff; +} +div.c_tab2 { + border-style: solid; + border-width: 1px 1px 1px 1px; + border-color:#82c300; + background-color:#ffffff; +} +div.topic { + border-style:solid; + border-width:1px; + border-color:#fff273; + background-color:#fff8b2; +} +div.icon-green { + border-style: solid; + border-width: 1px 1px 1px 1px; + border-color: #82c300; +} +div.p-block { + border-style:solid; + border-width:1px; + border-color:#000000; + color:#000000; + background-color:#ffffff; +} +div.clstar-help{ + background-color:#ffffff; + color:#82c300; +} +div.ugo4th{ + border-style:solid; + border-width:1px; + border-color:#c4260f; + background-color:#d52515; +} diff --git a/hatenadir/css/ds/camp100618.css b/hatenadir/css/ds/camp100618.css new file mode 100644 index 0000000..24246c6 --- /dev/null +++ b/hatenadir/css/ds/camp100618.css @@ -0,0 +1,863 @@ +@charset "UTF-8"; +div.head { + margin: 10px 0 0 0; +} +a { + color:#e63333; +} +table.profbox { + background-color: #353535; + color: #ffffff; +} +div.prof_out { + margin: 0 11px 0 11px; + background-color: #353535; + border-style: solid; + border-width: 0 1px 0 1px; + border-color: #6c8ff2; +} +span.more-f{ + color: #e63333; +} +div.notice2 { + margin:0 11px 5px 11px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#139a2f; + background-color:#ffffff; +} +td.border{ + background-color: #000000; +} +div.border { + border-style: solid; + border-width: 0 0 5px 0; + border-color: #000000; +} +div.border-c { + border-style: solid; + border-width: 0 0 2px 0; + border-color: #000000; +} +td.space { + background-color: #000000; +} +td.tabon { + color: #ed5151; +} +td.taboff { + background-color: #000000; + color: #ed5151; +} +td.tabpager { + background-color: #000000; + color: #ed5151; +} +span.url{ + text-decoration:underline; +} +span.comptxt { + color:#ff8a00; +} +span.star0 { + color:#fdc556; +} +span.star1 { + color:#138200; +} +span.star2 { + color:#ff455c; +} +span.star3 { + color:#00b0f9; +} +span.star4 { + color:#a411b9; +} +span.star0c { + color:#fdc556; +} +span.star1c { + color:#138200; +} +span.star2c { + color:#ff455c; +} +span.star3c { + color:#00b0f9; +} +span.star4c { + color:#a411b9; +} +span.orange{ + color: #ff8d45; +} +span.green { + color: #82c300; +} +span.gray{ + color: #666666; +} +span.white { + color:#FFFFFF; +} +html { + margin:0; + padding:0; +} +body { + color:#333333; + margin:0; + padding:0; +} +div.title { + margin:0 7px 0 7px; + padding:7px 5px 7px 5px; + border-style:solid; + border-width:0 0 1px 0; + border-color:#CCCCCC; +} +div.description { + margin:0 7px 0 7px; + padding:7px 5px 7px 5px; + border-style:solid; + border-width:0 0 1px 0; + border-color:#CCCCCC; +} +div.hr { + border-style:solid; + border-width:0 0 1px 0; + border-color:#CCCCCC; +} +div.hr-tab { + border-style:solid; + border-width:0 0 1px 0; + border-color:#82c300; +} +span.timestamp { + color:#999999; +} +a.timestamp { + color:#999999; +} +a.violation { + color:#333333; +} +div.box { + padding:7px; + border-style:solid; + border-width:1px; + border-color:#CCCCCC; + background-color:#FFFFFF; +} +div.more { + margin:7px 0 0 0; +} +div.pager { + padding:5px; +} +div.num { + margin:5px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#CCCCCC; + background-color:#FFFFFF; +} +span.new { + color: #cc0000; +} +span.price { + color: #92cb22; +} +span.date { + color: #cccccc; +} +table.detail{ + margin:0 7px 0 7px; +} +table.fullsize { + margin:0; +} +div.item-term { + padding:3px 0 3px 5px; +} +div.item-value { + padding:3px 5px 3px 0; +} +div.item-text { + padding:3px 5px 3px 15px; +} +div.item-tcom { + padding: 3px 5px 0 5px; +} +div.item-com { + padding: 0 5px 0 5px; +} +div.td-body { + padding:3px 5px 3px 5px; +} +div.comlist { + background-color:#FFFFFF; +} +div.comment-text { + padding:3px 5px 5px 15px; +} +div.comment-memo { + padding:0 0 0 15px; +} +div.staff { + color:#FFFFFF; + background-color:#1a1a1a; +} +a.staffnam { + color:#FFFFFF; +} +div.notice { + width:226px; + margin:7px 7px 3px 7px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#BCCDED; + background-color:#E5EEFE; +} +div.colorstar { + margin:7px 0 7px 0; +} +div.code-box{ + width:226px; + margin:7px 0 0 0; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#BCCDED; + background-color:#E5EEFE; +} +div.code-data{ + margin:7px 0 7px 0; +} +div.mail-reply { + width:226px; + margin:7px 7px 2px 7px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#BCCDED; + background-color:#E5EEFE; +} +div.lett_txt { + margin: 0 11px 0 11px; + border-style:solid; + border-width:0 2px 0 2px; + border-color:#92d300; + background-color:#ffffff; +} +div.lett_to { + margin: 0 11px 0 11px; + background-color:#92d300; + color:#ffffff; + padding: 1px 0 6px 5px; +} +div.pad0{ + padding: 0 0 0 0; +} +div.pad5t{ + padding: 5px 0 0 0; +} +div.pad5b{ + padding: 0 0 5px 0; +} +div.pad1b{ + padding: 0 0 1px 0; +} +div.pad2b{ + padding: 0 0 2px 0; +} +div.pad2{ + padding: 2px 2px 2px 2px; +} +div.pad5{ + padding: 5px 5px 5px 5px; +} +div.pad0-5{ + padding: 0 5px 0 5px; +} +td.pad2{ + padding: 2px 2px 2px 2px; +} +div.pad3-5{ + padding: 3px 5px 3px 5px; +} +div.lett_from{ + padding: 3px 11px 3px 0; +} +div.pad11{ + padding: 11px 11px 11px 11px; +} +div.pad5-11{ + padding: 5px 11px 5px 11px; +} +div.pad10b{ + padding: 0 0 10px 0; +} +div.pad20b{ + padding: 0 0 20px 0; +} +div.mar0-7{ + margin: 0px 7px 0px 7px; +} +div.mar0-11{ + margin: 0px 11px 0px 11px; +} +div.mar0{ + margin: 0px 0px 0px 0px; +} +div.mar5 { + margin: 5px 5px 5px 5px; +} +div.yaritori{ + margin: 0 11px 0 11px; + background-color:#ffffff; + border-style:solid; + border-width:0 2px 0 2px; + border-color:#92d300; +} +div.gr-tit{ + margin: 0 11px 0 11px; + background-color:#92d300; + color:#ffffff; +} +div.kadomaru{ + margin: 0 11px 0 11px; +} +div.lett-note{ + margin: 5px 11px 5px 11px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#92d300; + background-color:#ffffff; +} +div.pk{ + background-color:#ff3ab7; +} +div.blue{ + background-color:#3acfff; +} +div.gray{ + background-color:#cccccc; +} +div.gray_box{ + padding:5px; + border-style:solid; + border-width:1px; + border-color:#cccccc; + background-color:#ffffff; +} +div.vio-intro { + width:240px; + padding:7px 0 7px 7px; +} +div.vio-memo { + padding:0 0 10px 15px; +} +div.vio-text { + padding:0 0 10px 15px; +} +div.vio-note { + color:#999999; + padding:0 0 10px 15px; +} +div.vio-submit { + padding:10px 0 10px 0; +} +div.info-head { + padding:5px 7px 5px 7px; + border-style:solid; + border-width:0 0 1px 0; + border-color:#CCCCCC; + background-color:#eeeeee; +} +div.noborder{ + border-style:solid; + border-color:#CCCCCC; + border-width:0 0 0 0; +} +div.info-body { + padding:7px; +} +div.info-msg { + margin:0 0 7px 0; +} +div.news-head { + padding:5px 7px 5px 7px; + border-style:solid; + border-width:0 0 1px 0; + border-color:#CCCCCC; + background-color:#eeeeee; +} +div.news-body { + padding:7px; +} +div.news-h1 { + margin:7px 7px 0 7px; + padding:7px; + border-style:solid; + border-width:3px; + border-color:#91C900; +} +div.news-h2 { + padding:0 0 3px 7px; + border-style:solid; + border-width:0 0 1px 4px; + border-color:#91C900; +} +img.news-memo { + margin:0 10px 5px 0; + border-style:solid; + border-width:1px; + border-color:#CCCCCC; +} +div.info-h2 { + padding:0 0 3px 7px; + border-style:solid; + border-width:0 0 1px 4px; + border-color:#91C900; +} +div.num-box{ + background-color:#cccccc; + margin:0 30px; +} +td.tit-star{ + background-color:#e9f8c3; +} +img.help{ + border-style:solid; + border-width:2px; + border-color:#ffffff; +} +div.list{ + padding:0 0 5px 0; +} +div.star-det{ + padding:5px 0 5px 0; +} +img.sc{ + border-style:solid; + border-width:1px; + border-color:#cccccc; +} +td.border { + background-color: #82c300; +} +div.border { + border-style: solid; + border-width: 0 0 5px 0; + border-color: #82c300; +} +div.border-c { + border-style: solid; + border-width: 0 0 2px 0; + border-color: #82c300; +} +td.space { + background-color: #82c300; + color: #82c300; +} +td.tabon { + color: #82c300; +} +td.taboff { + background-color: #82c300; + color: #ffffff; +} +td.tabpager { + background-color: #82c300; + color: #ffffff; +} +div.on { + padding: 1px 6px 3px 6px; +} +span.border { + color: #b2db59; +} +span.border-gray { + color: #cccccc; +} +a.taboff { + color: #ffffff; +} +div.comme { + padding: 3px 3px 3px 12px; + color: #b2db59; +} +span.text { + color: #333333; +} +td.gray { + background-color: #f2f2f2; +} +div.message { + width:226px; + margin:7px 7px 2px 7px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#BCCDED; + background-color:#E5EEFE; +} +div.error-message { + width:226px; + margin:7px 7px 2px 7px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#F5C8A7; + background-color:#FFEED8; + color:#9B2E2E; +} +div.ok-message { + width:226px; + margin:7px 7px 2px 7px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#C5DABA; + background-color:#E3F9DB; + color:#517B29; +} +div.guide-h2 { + padding:0 0 3px 7px; + border-style:solid; + border-width:0 0 1px 4px; + border-color:#66ccff; +} +div.guide-h3 { + padding:3px 3px 3px 3px; + background-color:#66ccff; + color: #ffffff; +} +div.select-t { + color: #66ccff; + padding: 0 0 3px 0; +} +div.select-b { + padding:5px 3px 5px 3px; + border-style: solid; + border-width: 1px 1px 1px 1px; + border-color: #99ccff; + background-color: #ffffff; +} +span.border-s { + color: #99ccff; +} +span.color { + color: #ffffff; +} +div.credit { + padding:5px 7px 5px 7px; + background-color:#eeeeee; +} +div.rule-tit { + background-color: #82c300; + color: #ffffff; + padding: 3px 3px 3px 3px; +} +div.rule-ind { + margin: 0 0 0 10px; +} +div.hr-prof { + border-style:solid; + border-width:0 0 3px 0; + border-color:transparent; +} +table.send { + margin: 5px 0 0 0 ; +} +div.icon { + border-style: solid; + border-width: 1px 1px 1px 1px; + border-color: #cccccc; +} +td.username { + height:20px; +} +td.mystatus { +} +div.prev { + padding: 1px 0 5px 0; +} +div.next { + padding: 5px 0 1px 0; +} +div.prof-det{ + padding: 0 5px 0 5px; +} +div.catch { + margin: 5px 5px 5px 5px; + padding: 5px 5px 5px 5px; + border-style: solid; + border-width: 2px 2px 2px 2px; + border-color: #ffffff; +} +a.still { + color: #ffffff; +} +div.head { + margin: 0px 0 0 0; +} +div.send { + margin: 0px 10px 3px 11px; +} +div.link { + margin: 0px 10px 0 11px; +} +img.button { + margin: 5px 0 0 0; +} +td.theme { + margin: 0 0 0 3px; +} +div.trial-h1 { + margin: 5px 0 5px 0; + padding:3px; + border-style:solid; + border-width:3px; + border-color:#91C900; +} +div.mar-b10{ +margin:0 0 10px 0; +} +div.cam1{ + margin:7px 7px 0 7px; + padding:7px; + background-color: #ff2828; + color: #ffffff; +} +div.cam2{ + margin:0 7px 0 7px; + padding:7px; + border-style:solid; + border-width: 2px 2px 2px 2px; + border-color: #ff2828; +} +table.xmas2009{ + margin: 0 10px 0 11px; + background-color: #c70606; + color: #ffffff; +} +div.yellow { + margin: 0 11px 0 11px; + background-color:#ffe800; +} +div.sttr_mes { + width:226px; + margin:7px 7px 0px 7px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#92cb22; + background-color:#ffffff; +} +div.sttr_gacha { + width:226px; + margin:7px 7px 0px 7px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#ea475c; + background-color:#ffffff; +} +div.compsp { + width:226px; + margin:7px 7px 0px 7px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#ffe800; + background-color:#fff9b7; +} +div.sttr_war { + width:226px; + margin:7px 7px 0px 7px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#F5C8A7; + background-color:#FFEED8; + color:#9B2E2E; +} +div.sttr_price { + background-color:#FF9933; + color: #ffffff; +} +div.sttr_item { + width:226px; + margin:0px 7px 0px 7px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#92cb22; + background-color:#ffffff; +} +div.sttr_theme { + width:226px; + margin:0px 7px 3px 7px; + padding:5px; + border-style:solid; + border-width:0px 1px 1px 1px; + border-color:#92cb22; + background-color:#ffffff; +} +div.sttr_back { + width:226px; + margin:0px 7px 0px 7px; +} +div.gift_l { + margin: 0 11px 0 11px; + border-style:solid; + border-width:0 2px 0px 2px; + border-color:#ff5252; +} +div.gift_h { + margin: 0 11px 0 11px; + border-style:solid; + border-width:0 2px 0px 2px; + border-color:#ffd616; +} +img.shop_icon { + margin:0 1px 1px 0; +} +div.help_guide { + border-style:solid; + border-width:0 1px 1px 1px; + border-color:#ffac3e; +} +div.guide-head { + color: #ffffff; + background-color: #5abcea; +} +div.guide-title { + color: #ffffff; + background-color: #5abcea; +} +div.guide-main { + border-style:solid; + border-width:0 1px 1px 1px; + border-color:#5abcea; +} +div.green-title { + color: #ffffff; + background-color: #91C900; +} +div.green-main { + border-style:solid; + border-width:0 1px 1px 1px; + border-color:#91C900; +} +table.method{ + border-style:solid; + border-width:1px; + border-color:#cccccc; +} +div.search { + background-color: #eeeeee; + border-style: solid; + border-width: 1px; + border-color:#cccccc; +} +td.keyboard { + background-color: #eeeeee; +} +table.key-tab{ + margin: 0 6px 0 6px; +} +div.keyout { + margin: 0 7px 0 7px; + border-style: solid; + border-width: 0 1px 1px 1px; + border-color:#cccccc; +} +div.on-ja { + border-style: solid; + border-width: 1px 1px 0 1px; + border-color:#cccccc; +} +div.off-en { + border-style: solid; + border-width: 1px 1px 0 0; + border-color:#cccccc; +} +div.off-aa { + border-style: solid; + border-width: 1px 1px 0 0; + border-color:#cccccc; +} +table.camp-detail { + border-style: solid; + border-width: 1px; + border-color:#cccccc; +} +table.center { + margin: 0 15px 0 16px; +} +div.codeborder { + border-style: solid; + border-width:0 1px 1px 1px; + border-color:#82c300; +} +div.codeprev { + border-style: solid; + border-width:1px; + border-color:#82c300; +} +td.code { + background-color:#ffffff; +} +table.codetab { + border-style: solid; + border-width: 1px 1px 0 1px; + border-color:#82c300; +} +div.codetab { + border-style: solid; + border-width: 0 1px 1px 1px; + border-color:#82c300; + background-color:#ffffff; +} +div.c_tab2 { + border-style: solid; + border-width: 1px 1px 1px 1px; + border-color:#82c300; + background-color:#ffffff; +} +div.topic { + border-style:solid; + border-width:1px; + border-color:#fff273; + background-color:#fff8b2; +} +div.icon-green { + border-style: solid; + border-width: 1px 1px 1px 1px; + border-color: #82c300; +} +div.p-block { + border-style:solid; + border-width:1px; + border-color:#000000; + color:#000000; + background-color:#ffffff; +} +div.clstar-help{ + background-color:#ffffff; + color:#82c300; +} +div.ugo4th{ + border-style:solid; + border-width:1px; + border-color:#c4260f; + background-color:#d52515; +} diff --git a/hatenadir/css/ds/common.css b/hatenadir/css/ds/common.css new file mode 100644 index 0000000..04949bb --- /dev/null +++ b/hatenadir/css/ds/common.css @@ -0,0 +1,808 @@ +@charset "UTF-8"; +span.url{ + text-decoration:underline; +} +span.comptxt { + color:#ff8a00; +} +span.star0 { + color:#fdc556; +} +span.star1 { + color:#138200; +} +span.star2 { + color:#ff455c; +} +span.star3 { + color:#00b0f9; +} +span.star4 { + color:#a411b9; +} +span.star0c { + color:#fdc556; +} +span.star1c { + color:#138200; +} +span.star2c { + color:#ff455c; +} +span.star3c { + color:#00b0f9; +} +span.star4c { + color:#a411b9; +} +span.orange{ + color: #ff8d45; +} +span.green { + color: #82c300; +} +span.gray{ + color: #666666; +} +span.white { + color:#FFFFFF; +} +html { + margin:0; + padding:0; +} +body { + color:#333333; + margin:0; + padding:0; +} +div.title { + margin:0 7px 0 7px; + padding:7px 5px 7px 5px; + border-style:solid; + border-width:0 0 1px 0; + border-color:#CCCCCC; +} +div.description { + margin:0 7px 0 7px; + padding:7px 5px 7px 5px; + border-style:solid; + border-width:0 0 1px 0; + border-color:#CCCCCC; +} +div.hr { + border-style:solid; + border-width:0 0 1px 0; + border-color:#CCCCCC; +} +div.hr-tab { + border-style:solid; + border-width:0 0 1px 0; + border-color:#82c300; +} +span.timestamp { + color:#999999; +} +a.timestamp { + color:#999999; +} +a.violation { + color:#333333; +} +div.box { + padding:7px; + border-style:solid; + border-width:1px; + border-color:#CCCCCC; + background-color:#FFFFFF; +} +div.more { + margin:7px 0 0 0; +} +div.pager { + padding:5px; +} +div.num { + margin:5px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#CCCCCC; + background-color:#FFFFFF; +} +span.new { + color: #cc0000; +} +span.price { + color: #92cb22; +} +span.date { + color: #cccccc; +} +table.detail{ + margin:0 7px 0 7px; +} +table.fullsize { + margin:0; +} +div.item-term { + padding:3px 0 3px 5px; +} +div.item-value { + padding:3px 5px 3px 0; +} +div.item-text { + padding:3px 5px 3px 15px; +} +div.item-tcom { + padding: 3px 5px 0 5px; +} +div.item-com { + padding: 0 5px 0 5px; +} +div.td-body { + padding:3px 5px 3px 5px; +} +div.comlist { + background-color:#FFFFFF; +} +div.comment-text { + padding:3px 5px 5px 15px; +} +div.comment-memo { + padding:0 0 0 15px; +} +div.staff { + color:#FFFFFF; + background-color:#1a1a1a; +} +a.staffnam { + color:#FFFFFF; +} +div.notice { + width:226px; + margin:7px 7px 3px 7px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#BCCDED; + background-color:#E5EEFE; +} +div.colorstar { + margin:7px 0 7px 0; +} +div.code-box{ + width:226px; + margin:7px 0 0 0; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#BCCDED; + background-color:#E5EEFE; +} +div.code-data{ + margin:7px 0 7px 0; +} +div.mail-reply { + width:226px; + margin:7px 7px 2px 7px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#BCCDED; + background-color:#E5EEFE; +} +div.lett_txt { + margin: 0 11px 0 11px; + border-style:solid; + border-width:0 2px 0 2px; + border-color:#92d300; + background-color:#ffffff; +} +div.lett_to { + margin: 0 11px 0 11px; + background-color:#92d300; + color:#ffffff; + padding: 1px 0 6px 5px; +} +div.pad0{ + padding: 0 0 0 0; +} +div.pad5t{ + padding: 5px 0 0 0; +} +div.pad5b{ + padding: 0 0 5px 0; +} +div.pad1b{ + padding: 0 0 1px 0; +} +div.pad2b{ + padding: 0 0 2px 0; +} +div.pad2{ + padding: 2px 2px 2px 2px; +} +div.pad5{ + padding: 5px 5px 5px 5px; +} +div.pad0-5{ + padding: 0 5px 0 5px; +} +td.pad2{ + padding: 2px 2px 2px 2px; +} +div.pad3-5{ + padding: 3px 5px 3px 5px; +} +div.lett_from{ + padding: 3px 11px 3px 0; +} +div.pad11{ + padding: 11px 11px 11px 11px; +} +div.pad5-11{ + padding: 5px 11px 5px 11px; +} +div.pad10b{ + padding: 0 0 10px 0; +} +div.pad20b{ + padding: 0 0 20px 0; +} +div.mar0-7{ + margin: 0px 7px 0px 7px; +} +div.mar0-11{ + margin: 0px 11px 0px 11px; +} +div.mar0{ + margin: 0px 0px 0px 0px; +} +div.mar5 { + margin: 5px 5px 5px 5px; +} +div.yaritori{ + margin: 0 11px 0 11px; + background-color:#ffffff; + border-style:solid; + border-width:0 2px 0 2px; + border-color:#92d300; +} +div.gr-tit{ + margin: 0 11px 0 11px; + background-color:#92d300; + color:#ffffff; +} +div.kadomaru{ + margin: 0 11px 0 11px; +} +div.lett-note{ + margin: 5px 11px 5px 11px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#92d300; + background-color:#ffffff; +} +div.pk{ + background-color:#ff3ab7; +} +div.blue{ + background-color:#3acfff; +} +div.gray{ + background-color:#cccccc; +} +div.gray_box{ + padding:5px; + border-style:solid; + border-width:1px; + border-color:#cccccc; + background-color:#ffffff; +} +div.vio-intro { + width:240px; + padding:7px 0 7px 7px; +} +div.vio-memo { + padding:0 0 10px 15px; +} +div.vio-text { + padding:0 0 10px 15px; +} +div.vio-note { + color:#999999; + padding:0 0 10px 15px; +} +div.vio-submit { + padding:10px 0 10px 0; +} +div.info-head { + padding:5px 7px 5px 7px; + border-style:solid; + border-width:0 0 1px 0; + border-color:#CCCCCC; + background-color:#eeeeee; +} +div.noborder{ + border-style:solid; + border-color:#CCCCCC; + border-width:0 0 0 0; +} +div.info-body { + padding:7px; +} +div.info-msg { + margin:0 0 7px 0; +} +div.news-head { + padding:5px 7px 5px 7px; + border-style:solid; + border-width:0 0 1px 0; + border-color:#CCCCCC; + background-color:#eeeeee; +} +div.news-body { + padding:7px; +} +div.news-h1 { + margin:7px 7px 0 7px; + padding:7px; + border-style:solid; + border-width:3px; + border-color:#91C900; +} +div.news-h2 { + padding:0 0 3px 7px; + border-style:solid; + border-width:0 0 1px 4px; + border-color:#91C900; +} +img.news-memo { + margin:0 10px 5px 0; + border-style:solid; + border-width:1px; + border-color:#CCCCCC; +} +div.info-h2 { + padding:0 0 3px 7px; + border-style:solid; + border-width:0 0 1px 4px; + border-color:#91C900; +} +div.num-box{ + background-color:#cccccc; + margin:0 30px; +} +td.tit-star{ + background-color:#e9f8c3; +} +img.help{ + border-style:solid; + border-width:2px; + border-color:#ffffff; +} +div.list{ + padding:0 0 5px 0; +} +div.star-det{ + padding:5px 0 5px 0; +} +img.sc{ + border-style:solid; + border-width:1px; + border-color:#cccccc; +} +td.border { + background-color: #82c300; +} +div.border { + border-style: solid; + border-width: 0 0 5px 0; + border-color: #82c300; +} +div.border-c { + border-style: solid; + border-width: 0 0 2px 0; + border-color: #82c300; +} +td.space { + background-color: #82c300; + color: #82c300; +} +td.tabon { + color: #82c300; +} +td.taboff { + background-color: #82c300; + color: #ffffff; +} +td.tabpager { + background-color: #82c300; + color: #ffffff; +} +div.on { + padding: 1px 6px 3px 6px; +} +span.border { + color: #b2db59; +} +span.border-gray { + color: #cccccc; +} +a.taboff { + color: #ffffff; +} +div.comme { + padding: 3px 3px 3px 12px; + color: #b2db59; +} +span.text { + color: #333333; +} +td.gray { + background-color: #f2f2f2; +} +div.message { + width:226px; + margin:7px 7px 2px 7px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#BCCDED; + background-color:#E5EEFE; +} +div.error-message { + width:226px; + margin:7px 7px 2px 7px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#F5C8A7; + background-color:#FFEED8; + color:#9B2E2E; +} +div.ok-message { + width:226px; + margin:7px 7px 2px 7px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#C5DABA; + background-color:#E3F9DB; + color:#517B29; +} +div.guide-h2 { + padding:0 0 3px 7px; + border-style:solid; + border-width:0 0 1px 4px; + border-color:#66ccff; +} +div.guide-h3 { + padding:3px 3px 3px 3px; + background-color:#66ccff; + color: #ffffff; +} +div.select-t { + color: #66ccff; + padding: 0 0 3px 0; +} +div.select-b { + padding:5px 3px 5px 3px; + border-style: solid; + border-width: 1px 1px 1px 1px; + border-color: #99ccff; + background-color: #ffffff; +} +span.border-s { + color: #99ccff; +} +span.color { + color: #ffffff; +} +div.credit { + padding:5px 7px 5px 7px; + background-color:#eeeeee; +} +div.rule-tit { + background-color: #82c300; + color: #ffffff; + padding: 3px 3px 3px 3px; +} +div.rule-ind { + margin: 0 0 0 10px; +} +div.hr-prof { + border-style:solid; + border-width:0 0 3px 0; + border-color:transparent; +} +table.send { + margin: 5px 0 0 0 ; +} +div.icon { + border-style: solid; + border-width: 1px 1px 1px 1px; + border-color: #cccccc; +} +td.username { + height:20px; +} +td.mystatus { +} +div.prev { + padding: 1px 0 5px 0; +} +div.next { + padding: 5px 0 1px 0; +} +div.prof-det{ + padding: 0 5px 0 5px; +} +div.catch { + margin: 5px 5px 5px 5px; + padding: 5px 5px 5px 5px; + border-style: solid; + border-width: 2px 2px 2px 2px; + border-color: #ffffff; +} +a.still { + color: #ffffff; +} +div.head { + margin: 0px 0 0 0; +} +div.send { + margin: 0px 10px 3px 11px; +} +div.link { + margin: 0px 10px 0 11px; +} +img.button { + margin: 5px 0 0 0; +} +td.theme { + margin: 0 0 0 3px; +} +div.trial-h1 { + margin: 5px 0 5px 0; + padding:3px; + border-style:solid; + border-width:3px; + border-color:#91C900; +} +div.mar-b10{ +margin:0 0 10px 0; +} +div.cam1{ + margin:7px 7px 0 7px; + padding:7px; + background-color: #ff2828; + color: #ffffff; +} +div.cam2{ + margin:0 7px 0 7px; + padding:7px; + border-style:solid; + border-width: 2px 2px 2px 2px; + border-color: #ff2828; +} +table.xmas2009{ + margin: 0 10px 0 11px; + background-color: #c70606; + color: #ffffff; +} +div.yellow { + margin: 0 11px 0 11px; + background-color:#ffe800; +} +div.sttr_mes { + width:226px; + margin:7px 7px 0px 7px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#92cb22; + background-color:#ffffff; +} +div.sttr_gacha { + width:226px; + margin:7px 7px 0px 7px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#ea475c; + background-color:#ffffff; +} +div.compsp { + width:226px; + margin:7px 7px 0px 7px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#ffe800; + background-color:#fff9b7; +} +div.sttr_war { + width:226px; + margin:7px 7px 0px 7px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#F5C8A7; + background-color:#FFEED8; + color:#9B2E2E; +} +div.sttr_price { + background-color:#FF9933; + color: #ffffff; +} +div.sttr_item { + width:226px; + margin:0px 7px 0px 7px; + padding:5px; + border-style:solid; + border-width:1px; + border-color:#92cb22; + background-color:#ffffff; +} +div.sttr_theme { + width:226px; + margin:0px 7px 3px 7px; + padding:5px; + border-style:solid; + border-width:0px 1px 1px 1px; + border-color:#92cb22; + background-color:#ffffff; +} +div.sttr_back { + width:226px; + margin:0px 7px 0px 7px; +} +div.gift_l { + margin: 0 11px 0 11px; + border-style:solid; + border-width:0 2px 0px 2px; + border-color:#ff5252; +} +div.gift_h { + margin: 0 11px 0 11px; + border-style:solid; + border-width:0 2px 0px 2px; + border-color:#ffd616; +} +img.shop_icon { + margin:0 1px 1px 0; +} +div.help_guide { + border-style:solid; + border-width:0 1px 1px 1px; + border-color:#ffac3e; +} +div.guide-head { + color: #ffffff; + background-color: #5abcea; +} +div.guide-title { + color: #ffffff; + background-color: #5abcea; +} +div.guide-main { + border-style:solid; + border-width:0 1px 1px 1px; + border-color:#5abcea; +} +div.green-title { + color: #ffffff; + background-color: #91C900; +} +div.green-main { + border-style:solid; + border-width:0 1px 1px 1px; + border-color:#91C900; +} +table.method{ + border-style:solid; + border-width:1px; + border-color:#cccccc; +} +div.search { + background-color: #eeeeee; + border-style: solid; + border-width: 1px; + border-color:#cccccc; +} +td.keyboard { + background-color: #eeeeee; +} +table.key-tab{ + margin: 0 6px 0 6px; +} +div.keyout { + margin: 0 7px 0 7px; + border-style: solid; + border-width: 0 1px 1px 1px; + border-color:#cccccc; +} +div.on-ja { + border-style: solid; + border-width: 1px 1px 0 1px; + border-color:#cccccc; +} +div.off-en { + border-style: solid; + border-width: 1px 1px 0 0; + border-color:#cccccc; +} +div.off-aa { + border-style: solid; + border-width: 1px 1px 0 0; + border-color:#cccccc; +} +table.camp-detail { + border-style: solid; + border-width: 1px; + border-color:#cccccc; +} +table.center { + margin: 0 15px 0 16px; +} +div.codeborder { + border-style: solid; + border-width:0 1px 1px 1px; + border-color:#82c300; +} +div.codeprev { + border-style: solid; + border-width:1px; + border-color:#82c300; +} +td.code { + background-color:#ffffff; +} +table.codetab { + border-style: solid; + border-width: 1px 1px 0 1px; + border-color:#82c300; +} +div.codetab { + border-style: solid; + border-width: 0 1px 1px 1px; + border-color:#82c300; + background-color:#ffffff; +} +div.c_tab2 { + border-style: solid; + border-width: 1px 1px 1px 1px; + border-color:#82c300; + background-color:#ffffff; +} +div.topic { + border-style:solid; + border-width:1px; + border-color:#fff273; + background-color:#fff8b2; +} +div.icon-green { + border-style: solid; + border-width: 1px 1px 1px 1px; + border-color: #82c300; +} +div.p-block { + border-style:solid; + border-width:1px; + border-color:#000000; + color:#000000; + background-color:#ffffff; +} +div.clstar-help{ + background-color:#ffffff; + color:#82c300; +} +div.ugo4th{ + border-style:solid; + border-width:1px; + border-color:#c4260f; + background-color:#d52515; +} \ No newline at end of file diff --git a/hatenadir/ds/v2-xx/__ntfts/News.ntft b/hatenadir/ds/v2-xx/__ntfts/News.ntft new file mode 100644 index 0000000..8dadbcf --- /dev/null +++ b/hatenadir/ds/v2-xx/__ntfts/News.ntft @@ -0,0 +1 @@ +’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻ’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’ÓĻĻĻĻ’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’ÓĻĻĻĻ’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’ÓĻĻĻĻ’Ó’Ó’Ó’Ó’ÓĻĻ’Ó’ÓĻĻ’Ó’Ó’Ó’Ó’Ó’ÓĻĻĻĻĻĻĻĻ’Ó’Ó’ÓĻĻĻĻ’Ó’Ó’Ó’ÓĻ’ÓĻĻĻĻ’ÓĻ’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’ÓĻĻĻĻ’Ó’Ó’Ó’ÓĻ’ÓĻĻĻĻ’ÓĻ’Ó’Ó’Ó’Ó’ÓĻĻĻĻĻĻĻĻ’Ó’Ó’ÓĻĻĻĻ’Ó’Ó’Ó’ÓĻĻĻĻĻĻĻĻ’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’ÓĻĻĻĻ’Ó’Ó’ÓĻĻĻĻĻĻĻĻĻĻ’Ó’Ó’Ó’ÓĻĻĻĻĻĻĻĻ’Ó’Ó’ÓĻĻĻĻ’Ó’Ó’ÓĻĻ’Ó’Ó’Ó’Ó’Ó’ÓĻĻ’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’ÓĻĻĻĻ’Ó’ÓĻĻĻ’Ó’Ó’Ó’Ó’Ó’ÓĻĻĻ’Ó’Ó’ÓĻĻĻĻĻĻĻĻ’Ó’Ó’ÓĻĻĻĻ’Ó’ÓĻĻĻĻ’Ó’Ó’Ó’ÓĻĻĻĻ’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’ÓĻĻĻĻ’Ó’Ó’ÓĻĻĻĻ’Ó’ÓĻĻĻĻ’Ó’Ó’Ó’ÓĻĻĻĻĻĻĻĻ’Ó’Ó’ÓĻĻĻĻ’Ó’ÓĻĻĻĻĻĻĻĻĻĻĻĻ’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’ÓĻĻĻĻ’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’ÓĻĻĻĻ’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’ÓĻĻĻĻ’Ó’Ó’ÓĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻ’ÓĻĻĻĻĻĻ’Ó’Ó’ÓĻĻĻĻ’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’ÓĻĻĻĻ’Ó’Ó’ÓĻĻĻĻĻĻ’ÓĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻ’Ó’Ó’ÓĻĻĻĻ’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’ÓĻĻĻĻ’Ó’Ó’ÓĻĻĻĻĻĻĻĻĻ’ÓĻĻĻĻĻĻĻĻĻĻĻĻ’Ó’Ó’ÓĻĻĻĻ’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’ÓĻĻĻĻ’Ó’Ó’ÓĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻ’ÓĻĻĻĻĻĻ’Ó’Ó’ÓĻĻĻĻ’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’ÓĻĻĻĻ’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’Ó’ÓĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻĻ’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ \ No newline at end of file diff --git a/hatenadir/ds/v2-xx/__ntfts/Special Room.ntft b/hatenadir/ds/v2-xx/__ntfts/Special Room.ntft new file mode 100644 index 0000000..cbf8957 --- /dev/null +++ b/hatenadir/ds/v2-xx/__ntfts/Special Room.ntft @@ -0,0 +1 @@ +’’’’’’’’’’’’’’’»ćŪÜė’’’’’’’’’’’’’’’’’’’’’’’’ŻļyÓ«®®®®®®Š5»»ß’’’’’’’’’’’’’’’’’’ŻļVæ®®®®®®®®®®®®ńŪ’’’’’’’’’’’’’’’xĻ®®®®®®ŠņńŠ®®®®®ņ¢Üė’’’’’’’’’’’’5·®®®®5£·žĒ’˒˒˒˒˼æxÆŃ®®®Æß’’’’’’’’’’Æ®®®ņ»»’Ė’Ė’Ė’Ė’ĖW«®ŻĆ’Ė’Ė’Ėy³®®®®ß’’’’’’’’VĆ®®®V§’Ė’Ė’Ė’Ė’Ė’Ė’ĖW«®ń·’Ė’Ė’Ė¼æŠ®®®¼ė’’’’’’Ū®®®W«’Ė’Ė’Ė’Ė’Ė’Ė’Ė’ĖW«®®®Æ6§ŻĆ’ĖŻĆŠ®®Ń’’’’’’Š®®4£’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’ĖW«Æ®®®®Æy³’ĖÜæ®®®yÓ’’’’×®®ŠŽĒ’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’ĖW«ņ¼æ5£®®®ÆŻĆ’Ė·®®Ļ’’’’ņ¢®®·’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’ĖW«ņ’Ė’ĖžĒW«®®»»’Ė’Ėņ®®×’’Ü뮮В˒˒˒˒˒˒˒˒˒˒ĖW«ņ’Ė’Ė’Ė’Ė5£®ŻĆ’Ė’Ė·®®«’’WĆ®®5£’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’ĖW«ņ’Ė’Ė’ĖžĒŠ6§’Ė’Ė’ĖžĒ®®®’’³®®·’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’ĖW«ņ’Ė’Ė’ĖŻĆń’Ė’Ė’Ė’Ė’Ėņ®®¼ē’ņ¢®®¼æ’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’ĖW«ņ’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė4®®×’Ń®®ŻĆ’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’ĖW«ņ’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė5£®®xĻ’Ń®®ŻĆ’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’ĖW«ņ’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė5£®®xĻ’ņ¦®®»»’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’ĖW«ņ’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė®®×’5»®®xÆ’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’ĖW«ņ’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ėń®®Üė’yÓ®®5£’Ė’Ė’Ė’Ė’ĖŻĆxÆņ6§»»W«ņ’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’ĖŻĆ®®Ļ’’Żļ®®ÆŻĆ’Ė’Ė’Ė6§®®®®®®Šņ’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’ĖW«®®5·’’’4·®®V§’Ė’Ė¼æ®®®®®®®®ņ’Ė’Ė’Ė’Ė’Ė’Ė’Ė’ĖŻĆÆ®®»ć’’’»ć®®®¼æ’Ė»»®®®®®®®®ņ’Ė’Ė’Ė’Ė’Ė’Ė’Ė’ĖV§®®ņ¦’’’’’³®®ŠŽĆ’Ėń®®®®®®Æ¼æ’˒˒˒˒˒˒˳®®®»ć’’’’’¼ė®®®ŽĆ’Ėy³W«ņņ6§y³žĒ’Ė’Ė’Ė’Ė’Ė’Ė’Ė»»®®®4³’’’’’’’ß®®®ńŻæ’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’ĖxÆ®®®ń’’’’’’’’’xĻ®®®®w«žĒ’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė’Ė»»®®®ŠŻļ’’’’’’’’’’×®®®®Š5£·ŻĆŽĆžĒŽĆ»»xÆ®®®®ņ¦’’’’’’’’’’’’’¼ė«®®®®®®®®®®®®®®®WĒ’’’’’’’’’’’’’’’’»ßÆ®®®®®®®®®®ÆVæÜė’’’’’’’’’’’’’’’’’’’ÜėxĻÆŃŠĻŠņ¢5»»ß’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ \ No newline at end of file diff --git a/hatenadir/ds/v2-xx/de/confirm/delete.txt b/hatenadir/ds/v2-xx/de/confirm/delete.txt new file mode 100644 index 0000000..f53d3fa Binary files /dev/null and b/hatenadir/ds/v2-xx/de/confirm/delete.txt differ diff --git a/hatenadir/ds/v2-xx/de/confirm/download.txt b/hatenadir/ds/v2-xx/de/confirm/download.txt new file mode 100644 index 0000000..9850b6a Binary files /dev/null and b/hatenadir/ds/v2-xx/de/confirm/download.txt differ diff --git a/hatenadir/ds/v2-xx/de/confirm/upload.txt b/hatenadir/ds/v2-xx/de/confirm/upload.txt new file mode 100644 index 0000000..96a3d1a Binary files /dev/null and b/hatenadir/ds/v2-xx/de/confirm/upload.txt differ diff --git a/hatenadir/ds/v2-xx/de/eula.txt b/hatenadir/ds/v2-xx/de/eula.txt new file mode 100644 index 0000000..afde044 Binary files /dev/null and b/hatenadir/ds/v2-xx/de/eula.txt differ diff --git a/hatenadir/ds/v2-xx/en/confirm/delete.txt b/hatenadir/ds/v2-xx/en/confirm/delete.txt new file mode 100644 index 0000000..f53d3fa Binary files /dev/null and b/hatenadir/ds/v2-xx/en/confirm/delete.txt differ diff --git a/hatenadir/ds/v2-xx/en/confirm/download.txt b/hatenadir/ds/v2-xx/en/confirm/download.txt new file mode 100644 index 0000000..9850b6a Binary files /dev/null and b/hatenadir/ds/v2-xx/en/confirm/download.txt differ diff --git a/hatenadir/ds/v2-xx/en/confirm/upload.txt b/hatenadir/ds/v2-xx/en/confirm/upload.txt new file mode 100644 index 0000000..96a3d1a Binary files /dev/null and b/hatenadir/ds/v2-xx/en/confirm/upload.txt differ diff --git a/hatenadir/ds/v2-xx/en/eula.txt b/hatenadir/ds/v2-xx/en/eula.txt new file mode 100644 index 0000000..afde044 Binary files /dev/null and b/hatenadir/ds/v2-xx/en/eula.txt differ diff --git a/hatenadir/ds/v2-xx/es/confirm/delete.txt b/hatenadir/ds/v2-xx/es/confirm/delete.txt new file mode 100644 index 0000000..f53d3fa Binary files /dev/null and b/hatenadir/ds/v2-xx/es/confirm/delete.txt differ diff --git a/hatenadir/ds/v2-xx/es/confirm/download.txt b/hatenadir/ds/v2-xx/es/confirm/download.txt new file mode 100644 index 0000000..9850b6a Binary files /dev/null and b/hatenadir/ds/v2-xx/es/confirm/download.txt differ diff --git a/hatenadir/ds/v2-xx/es/confirm/upload.txt b/hatenadir/ds/v2-xx/es/confirm/upload.txt new file mode 100644 index 0000000..96a3d1a Binary files /dev/null and b/hatenadir/ds/v2-xx/es/confirm/upload.txt differ diff --git a/hatenadir/ds/v2-xx/es/eula.txt b/hatenadir/ds/v2-xx/es/eula.txt new file mode 100644 index 0000000..afde044 Binary files /dev/null and b/hatenadir/ds/v2-xx/es/eula.txt differ diff --git a/hatenadir/ds/v2-xx/eula_list.tsv b/hatenadir/ds/v2-xx/eula_list.tsv new file mode 100644 index 0000000..63798b1 --- /dev/null +++ b/hatenadir/ds/v2-xx/eula_list.tsv @@ -0,0 +1 @@ +RQBuAGcAbABpAHMAaAA= en diff --git a/hatenadir/ds/v2-xx/fr/confirm/delete.txt b/hatenadir/ds/v2-xx/fr/confirm/delete.txt new file mode 100644 index 0000000..f53d3fa Binary files /dev/null and b/hatenadir/ds/v2-xx/fr/confirm/delete.txt differ diff --git a/hatenadir/ds/v2-xx/fr/confirm/download.txt b/hatenadir/ds/v2-xx/fr/confirm/download.txt new file mode 100644 index 0000000..9850b6a Binary files /dev/null and b/hatenadir/ds/v2-xx/fr/confirm/download.txt differ diff --git a/hatenadir/ds/v2-xx/fr/confirm/upload.txt b/hatenadir/ds/v2-xx/fr/confirm/upload.txt new file mode 100644 index 0000000..96a3d1a Binary files /dev/null and b/hatenadir/ds/v2-xx/fr/confirm/upload.txt differ diff --git a/hatenadir/ds/v2-xx/fr/eula.txt b/hatenadir/ds/v2-xx/fr/eula.txt new file mode 100644 index 0000000..afde044 Binary files /dev/null and b/hatenadir/ds/v2-xx/fr/eula.txt differ diff --git a/hatenadir/ds/v2-xx/frontpage/hotmovies.ugo.py b/hatenadir/ds/v2-xx/frontpage/hotmovies.ugo.py new file mode 100644 index 0000000..2f98138 --- /dev/null +++ b/hatenadir/ds/v2-xx/frontpage/hotmovies.ugo.py @@ -0,0 +1,73 @@ +from twisted.web import resource +from twisted.internet import reactor +import time + +from hatena import Log, NotFound, request_args, request_path +from DB import Database +from Hatenatools import UGO + + +class PyResource(resource.Resource): + isLeaf = True + + def __init__(self): + super().__init__() + self.pages = [] + self.newestflip = None + self.newestview = None + self.Update() + + def render(self, request): + try: + page = int(request_args(request).get("page", ["1"])[0]) + except ValueError: + page = 1 + if 1 <= page <= len(self.pages): + path = "/".join(request_path(request).split("/")[3:]) + Log(request, "%s page %i" % (path, page)) + request.setHeader(b"content-type", b"text/plain") + return self.pages[page - 1] + return NotFound.render(request) + + def Update(self): + reactor.callLater(600, self.Update) + current = Database.Newest[0] if Database.Newest else None + if current != self.newestflip or self.newestview != Database.Views: + self.newestflip = current + self.newestview = Database.Views + reactor.callInThread(self.UpdateThreaded, list(Database.Newest)) + + def UpdateThreaded(self, flipnotes): + def score(item): + i, (creator_id, flip) = item + views, stars = Database.GetFlipnote(creator_id, flip)[1:3] + return int(views) * 60 + int(stars) // 4 - i + flipnotes = [x[1] for x in sorted(enumerate(flipnotes), key=score, reverse=True)[:500]] + pages = [] + pagecount = (len(flipnotes) + 49) // 50 + pagecount = min(pagecount, 10) + flipcount = min(len(flipnotes), 500) + for i in range(pagecount): + pages.append(self.MakePage(flipnotes[i * 50 : i * 50 + 50], i + 1, i < pagecount - 1, flipcount)) + if self.pages: + print(time.strftime("[%H:%M:%S] Updated hotmovies.ugo")) + self.pages = pages + + def MakePage(self, flipnotes, page, has_next, count): + ugo = UGO() + ugo.Loaded = True + ugo.Items = [] + ugo.Items.append(("layout", (2, 1))) + ugo.Items.append(("topscreen text", ["Popular Flipnotes", "Flipnotes", str(count), "", "The most popular new Flipnotes."], 0)) + ugo.Items.append(("category", "http://flipnote.hatena.com/ds/v2-xx/frontpage/hotmovies.uls", "Most Popular", True)) + ugo.Items.append(("category", "http://flipnote.hatena.com/ds/v2-xx/frontpage/likedmovies.uls", "Most Liked", False)) + ugo.Items.append(("category", "http://flipnote.hatena.com/ds/v2-xx/frontpage/newmovies.uls", "New Flipnotes", False)) + ugo.Items.append(("unknown", ("3", "http://flipnote.hatena.com/ds/v2-xx/help/post_howto.htm", "UABvAHMAdAAgAEYAbABpAHAAbgBvAHQAZQA="))) + if page > 1: + ugo.Items.append(("button", 115, "Previous", "http://flipnote.hatena.com/ds/v2-xx/frontpage/hotmovies.uls?page=%i" % (page - 1), ("", ""), None)) + for creatorid, filename in flipnotes: + stars = str(Database.GetFlipnote(creatorid, filename)[2]) + ugo.Items.append(("button", 3, "", "http://flipnote.hatena.com/ds/v2-xx/movie/%s/%s.ppm" % (creatorid, filename), (stars, "765", "573", "0"), (filename + ".ppm", Database.GetFlipnoteTMB(creatorid, filename)))) + if has_next: + ugo.Items.append(("button", 115, "Next", "http://flipnote.hatena.com/ds/v2-xx/frontpage/hotmovies.uls?page=%i" % (page + 1), ("", ""), None)) + return ugo.Pack() diff --git a/hatenadir/ds/v2-xx/frontpage/likedmovies.ugo.py b/hatenadir/ds/v2-xx/frontpage/likedmovies.ugo.py new file mode 100644 index 0000000..4ee9df4 --- /dev/null +++ b/hatenadir/ds/v2-xx/frontpage/likedmovies.ugo.py @@ -0,0 +1,73 @@ +from twisted.web import resource +from twisted.internet import reactor +import time + +from hatena import Log, NotFound, request_args, request_path +from DB import Database +from Hatenatools import UGO + + +class PyResource(resource.Resource): + isLeaf = True + + def __init__(self): + super().__init__() + self.pages = [] + self.newestflip = None + self.neweststar = None + reactor.callLater(2, self.Update) + + def render(self, request): + try: + page = int(request_args(request).get("page", ["1"])[0]) + except ValueError: + page = 1 + if 1 <= page <= len(self.pages): + path = "/".join(request_path(request).split("/")[3:]) + Log(request, "%s page %i" % (path, page)) + request.setHeader(b"content-type", b"text/plain") + return self.pages[page - 1] + return NotFound.render(request) + + def Update(self): + reactor.callLater(600, self.Update) + current = Database.Newest[0] if Database.Newest else None + if current != self.newestflip or self.neweststar != Database.Stars: + self.newestflip = current + self.neweststar = Database.Stars + reactor.callInThread(self.UpdateThreaded, list(Database.Newest)) + + def UpdateThreaded(self, flipnotes): + def score(item): + i, (creator_id, flip) = item + views, stars = Database.GetFlipnote(creator_id, flip)[1:3] + return int(stars) * 110 + int(views) // 10 - i + flipnotes = [x[1] for x in sorted(enumerate(flipnotes), key=score, reverse=True)[:500]] + pages = [] + pagecount = (len(flipnotes) + 49) // 50 + pagecount = min(pagecount, 10) + flipcount = min(len(flipnotes), 500) + for i in range(pagecount): + pages.append(self.MakePage(flipnotes[i * 50 : i * 50 + 50], i + 1, i < pagecount - 1, flipcount)) + if self.pages: + print(time.strftime("[%H:%M:%S] Updated likedmovies.ugo")) + self.pages = pages + + def MakePage(self, flipnotes, page, has_next, count): + ugo = UGO() + ugo.Loaded = True + ugo.Items = [] + ugo.Items.append(("layout", (2, 1))) + ugo.Items.append(("topscreen text", ["Liked Flipnotes", "Flipnotes", str(count), "", "The most liked new Flipnotes."], 0)) + ugo.Items.append(("category", "http://flipnote.hatena.com/ds/v2-xx/frontpage/hotmovies.uls", "Most Popular", False)) + ugo.Items.append(("category", "http://flipnote.hatena.com/ds/v2-xx/frontpage/likedmovies.uls", "Most Liked", True)) + ugo.Items.append(("category", "http://flipnote.hatena.com/ds/v2-xx/frontpage/newmovies.uls", "New Flipnotes", False)) + ugo.Items.append(("unknown", ("3", "http://flipnote.hatena.com/ds/v2-xx/help/post_howto.htm", "UABvAHMAdAAgAEYAbABpAHAAbgBvAHQAZQA="))) + if page > 1: + ugo.Items.append(("button", 115, "Previous", "http://flipnote.hatena.com/ds/v2-xx/frontpage/likedmovies.uls?page=%i" % (page - 1), ("", ""), None)) + for creatorid, filename in flipnotes: + stars = str(Database.GetFlipnote(creatorid, filename)[2]) + ugo.Items.append(("button", 3, "", "http://flipnote.hatena.com/ds/v2-xx/movie/%s/%s.ppm" % (creatorid, filename), (stars, "765", "573", "0"), (filename + ".ppm", Database.GetFlipnoteTMB(creatorid, filename)))) + if has_next: + ugo.Items.append(("button", 115, "Next", "http://flipnote.hatena.com/ds/v2-xx/frontpage/likedmovies.uls?page=%i" % (page + 1), ("", ""), None)) + return ugo.Pack() diff --git a/hatenadir/ds/v2-xx/frontpage/newmovies.ugo.py b/hatenadir/ds/v2-xx/frontpage/newmovies.ugo.py new file mode 100644 index 0000000..84a0910 --- /dev/null +++ b/hatenadir/ds/v2-xx/frontpage/newmovies.ugo.py @@ -0,0 +1,67 @@ +from twisted.web import resource +from twisted.internet import reactor +import time + +from hatena import Log, NotFound, request_args, request_path +from DB import Database +from Hatenatools import UGO + + +class PyResource(resource.Resource): + isLeaf = True + + def __init__(self): + super().__init__() + self.pages = [] + self.newestflip = None + reactor.callLater(4, self.Update) + + def render(self, request): + try: + page = int(request_args(request).get("page", ["1"])[0]) + except ValueError: + page = 1 + if 1 <= page <= len(self.pages): + path = "/".join(request_path(request).split("/")[3:]) + Log(request, "%s page %i" % (path, page)) + request.setHeader(b"content-type", b"text/plain") + return self.pages[page - 1] + return NotFound.render(request) + + def Update(self): + reactor.callLater(60, self.Update) + current = Database.Newest[0] if Database.Newest else None + if current != self.newestflip: + self.newestflip = current + reactor.callInThread(self.UpdateThreaded, list(Database.Newest)) + + def UpdateThreaded(self, flipnotes): + flipnotes = list(flipnotes) + pages = [] + pagecount = (len(flipnotes) + 49) // 50 + pagecount = min(pagecount, 10) + flipcount = len(flipnotes) + for i in range(pagecount): + pages.append(self.MakePage(flipnotes[i * 50 : i * 50 + 50], i + 1, i < pagecount - 1, flipcount)) + if self.pages: + print(time.strftime("[%H:%M:%S] Updated newmovies.ugo")) + self.pages = pages + + def MakePage(self, flipnotes, page, has_next, count): + ugo = UGO() + ugo.Loaded = True + ugo.Items = [] + ugo.Items.append(("layout", (2, 1))) + ugo.Items.append(("topscreen text", ["New Flipnotes", "Flipnotes", str(count), "", "The newest Flipnotes submitted."], 0)) + ugo.Items.append(("category", "http://flipnote.hatena.com/ds/v2-xx/frontpage/hotmovies.uls", "Most Popular", False)) + ugo.Items.append(("category", "http://flipnote.hatena.com/ds/v2-xx/frontpage/likedmovies.uls", "Most Liked", False)) + ugo.Items.append(("category", "http://flipnote.hatena.com/ds/v2-xx/frontpage/newmovies.uls", "New Flipnotes", True)) + ugo.Items.append(("unknown", ("3", "http://flipnote.hatena.com/ds/v2-xx/help/post_howto.htm", "UABvAHMAdAAgAEYAbABpAHAAbgBvAHQAZQA="))) + if page > 1: + ugo.Items.append(("button", 115, "Previous", "http://flipnote.hatena.com/ds/v2-xx/frontpage/newmovies.uls?page=%i" % (page - 1), ("", ""), None)) + for creatorid, filename in flipnotes: + stars = str(Database.GetFlipnote(creatorid, filename)[2]) + ugo.Items.append(("button", 3, "", "http://flipnote.hatena.com/ds/v2-xx/movie/%s/%s.ppm" % (creatorid, filename), (stars, "765", "573", "0"), (filename + ".ppm", Database.GetFlipnoteTMB(creatorid, filename)))) + if has_next: + ugo.Items.append(("button", 115, "Next", "http://flipnote.hatena.com/ds/v2-xx/frontpage/newmovies.uls?page=%i" % (page + 1), ("", ""), None)) + return ugo.Pack() diff --git a/hatenadir/ds/v2-xx/help/info.htm b/hatenadir/ds/v2-xx/help/info.htm new file mode 100644 index 0000000..5cded24 --- /dev/null +++ b/hatenadir/ds/v2-xx/help/info.htm @@ -0,0 +1 @@ +
This server is a proof of concept server. There's not much functionality yet because it's in early stages. Please enjoy your stay.
Posting a flipnote is as easy as pressing the button down below and selecting the flipnote you want to upload!
| + + | ++ + | ++ + | +
| + |
+ Description
+ |
+ + Comments(%%CommentCount%%) + | +