69 lines
21 KiB
Python
69 lines
21 KiB
Python
# -*- coding: utf-8 -*-
|
||
import os, re
|
||
|
||
rr = re.compile(r"[\u4e00-\u9fff]")
|
||
D = "/app/working/workspaces/default/novels/round3/03-满级大佬回新手村"
|
||
def hz(s): return len(rr.findall(s))
|
||
def ap(fn, txt):
|
||
p = os.path.join(D, fn)
|
||
with open(p, "r", encoding="utf-8") as f:
|
||
c = f.read()
|
||
bf = hz(c)
|
||
with open(p, "a", encoding="utf-8") as f:
|
||
f.write(txt)
|
||
af = hz(c + txt)
|
||
print(f" {fn}: {bf} -> {af}")
|
||
|
||
# Expand ch2 + ch5
|
||
print("=== 补充第2章 ===")
|
||
ap("第002章 黄金野猪王——我把新手村的人全看傻了.md",
|
||
"\n\n那天晚上我躺在床上翻来覆去睡不着。不是因为战斗——是因为我在想:我装萌新能装多久?温柔一刀已经开始怀疑了——天下无双直接说我不是新人——暗夜公会也注意到我了。我的伪装最多还能撑一周。但一周够了——不管身份暴不暴露——我都该回大号了。全服公会联赛要开始了——暗夜需要我。我不能一直装萌新——我的公会还在等我回去带队。但在这之前——我要好好享受这几天。因为当萌新的快乐——比当大佬的快乐多太多了。")
|
||
|
||
print("\n=== 补充第5章 ===")
|
||
ap("第005章 王道公会——我混进了对手的大本营.md",
|
||
"\n\n接下来的三天我疯狂练级。王道公会给了我全套资助——最好的药水、最合适的装备、专属路线。我白天刷怪晚上做任务——三天从7级升到28级——平均每天7级。这个速度在正常人看来是开挂级别的——但对我来说只是正常水平——因为我满级的时候研究过全服所有高效率练级路线。\n\n第三天晚上我站在主城门口——身上穿着全套25级蓝装——手里握着信使之刃——已经不再是那个一身破布衣的萌新了。天下无双发来消息:\"28级了。继续——周末前到40级——王道需要你。\"我回:\"尽量。\"他:\"不是尽量——是必须。\"我笑了——这个副会长的管理风格确实跟我不同。我的风格是随便你开心就好——他的风格是定了目标就必须完成。\n\n我继续刷怪。脑子里已经在想一件事——周末的联赛——如果我上场了——暗夜的人会认出我吗?剑指苍穹会认出我吗?我还没准备好面对他们——但我也觉得——如果被认出来了——那场戏应该会很好看。")
|
||
|
||
print("\n=== 创建第6章 ===")
|
||
with open(os.path.join(D, "第006章 联赛冲刺——8级到40级的一周.md"), "w", encoding="utf-8") as f:
|
||
c = "# 第06章 联赛冲刺——8级到40级的一周\n\n周五晚上距离联赛还有两天——我在疯狂刷怪。王道公会给的练级路线已经不够用了——那是给正常玩家设计的——对我来说效率太低。我换了一条自己的路线——在龙骨荒野某个角落——那里的怪物刷新快经验高——而且几乎没有其他玩家知道这个地方。\n\n我在那个角落刷了整整一晚上。从晚上八点到凌晨三点——七个小时——从28级升到了36级。信使之刃的伤害随着我的等级提升同步增长——每升一级攻击力自动加五点——这把武器真的是成长型武器——不是名字叫成长型但其实不成长的那种。\n\n凌晨三点天下无双上线了——看到我的等级他发了一条消息:\"36级了?你一晚上升了8级?\"我回:\"嗯。\"他沉默了一会儿然后说:\"你是真的怪物。\"我回:\"谢谢。\"他:\"不是夸你——是陈述事实。\"\n\n周六联赛前一天——我早上八点上线——中午的时候达到了40级。全服频道再次震动——\"那个新人40级了!一周从7级到40级!\"\"他不是人——是练级机器。\"\"王道这次捡到宝了。\"\n\n天下无双在公会频道宣布:\"明天联赛——今天不想努力了——你作为替补出战。不需要你赢——只需要你在主力出问题的时候顶上去——别丢王道的人就行。\"我回了一条消息:\"放心——我不会丢人的。\"我在心里补了一句:我只会让你们所有人都大吃一惊。"
|
||
f.write(c)
|
||
print(f" 第6章: {hz(c)}汉字")
|
||
|
||
print("\n=== 创建第7章 ===")
|
||
with open(os.path.join(D, "第007章 决赛夜——我站在了对手那边.md"), "w", encoding="utf-8") as f:
|
||
c = "# 第07章 决赛夜——我站在了对手那边\n\n联赛日。主城竞技场座无虚席。前十公会全部到场——暗夜、王道、铁血、苍穹、星辰——前五公会坐在最前排。暗夜的会长席上——剑指苍穹坐在正中间——旁边是核心成员——但夜神的座位是空的。因为夜神就是我——正在王道的替补席上坐着。\n\n我看着暗夜的会长席——剑指苍穹的表情看起来很轻松——但我知道他其实很紧张。因为夜神不在——他连续给我大号发了三天消息——我一个都没回。他不知道他们的会长去哪了——不知道联赛谁带队——只能硬着头皮自己上。\n\n我有点愧疚。但愧疚感很快被一种更强烈的情绪盖过了——我期待当他们发现夜神就在对面的替补席上时——他们的表情会是什么样。\n\n第一场王道对铁血——主力阵容出战——天下无双带队——40分钟王道赢了。第二场暗夜对苍穹——剑指苍穹带队——35分钟暗夜赢了。第三场王道对星辰——王道再次获胜。第四场暗夜对铁血——暗夜再次获胜。\n\n决赛——王道对暗夜。前二的公会连续第四年在决赛相遇了。前三年的结果一样——暗夜冠军王道亚军。今年看起来也要一样——王道主力阵容跟去年没什么变化——而暗夜虽然少了夜神——但整体实力依然比王道强。\n\n决赛开始后王道在前二十分钟打得很好——跟暗夜打得有来有回。但二十分钟后差距开始显现——王道的一个主力输出操作失误——被暗夜抓住机会打掉了——然后王道的阵型乱了——暗夜乘势追击——王道节节败退。\n\n打到第三十分钟——王道的坦克倒了。天下无双在公会频道里喊:\"替补准备——今天不想努力了——你上。\"\n\n我站起来走向竞技场。全场观众的目光聚焦在我身上——一个40级的玩家走向全服最高水平的决赛赛场。观众席上响起了议论声——\"那是谁?40级?决赛上40级?\"\"王道没人了吗?\"\"那不是昨天刚升到40级的那个新人吗?\"\"王道疯了吗——决赛换替补上?\"\n\n我没理会这些声音。我站在竞技场中央——对面站着暗夜主力——剑指苍穹站在最前面。他看着我这个40级的新人——眼神有点复杂——他不知道我是谁——但他知道王道在决赛换人一定有原因。\n\n比赛重新开始。我握着信使之刃站在王道的阵型里——等待机会。暗夜的第一波进攻来了——剑指苍穹带队冲锋——目标是王道的治疗。我看到了那个冲锋——看到了那个破绽——剑指苍穹的左侧——零点三秒的空档——他在冲锋过程中习惯性地向右倾斜——左肩会暴露零点三秒。这个习惯——我跟他打了三年配合——我比任何人都清楚。\n\n我动了。不是往前冲——是往左闪——绕到剑指苍穹的左侧——信使之刃出手——砍在他的左肩。伤害不高——但这一刀的落点——剑指苍穹愣住了。他停住了——站在竞技场中央——看着我——眼神从平静变成了震惊。他认出了那一刀。"
|
||
f.write(c)
|
||
print(f" 第7章: {hz(c)}汉字")
|
||
|
||
print("\n=== 创建第8章 ===")
|
||
with open(os.path.join(D, "第008章 他认出了我——你就是夜神.md"), "w", encoding="utf-8") as f:
|
||
c = "# 第08章 他认出了我——你就是夜神\n\n剑指苍穹站在竞技场中央看着我——一动不动。他的队友在队伍频道里喊他——他没回应。他的目光盯在我身上——像是要把我看穿。\n\n\"你叫什么?\"他在世界频道发了一条消息——不是私聊是公开的——全场都能看到。\n\n我回:\"今天不想努力了。\"\n\n\"我知道你这个ID——我问的是你真正的名字。\"\n\n全场安静了。决赛暂停了。所有观众都在看着这两行对话。\n\n我沉默了几秒。然后我在世界频道回了一句话:\"你猜。\"\n\n剑指苍穹沉默了三秒。然后他回了一句话——这句话让全场炸开了锅——\"你那一刀全服只有一个人会那么砍——那个人叫夜神。\"\n\n全场哗然。\"夜神?那个40级的新人是夜神?\"\"夜神不是暗夜的会长吗?\"\"他怎么跑到王道那边去了?\"\"他叛变了?\"\"不可能——夜神不可能叛变——他一个人撑起了暗夜。\"\"那他在王道那边干什么?\"\n\n观众席上的议论声越来越大。直播弹幕已经刷到看不清画面了。全场最震惊的人除了剑指苍穹——还有天下无双。他站在王道的指挥席上看着我——眼神从困惑变成了震惊——然后变成了复杂的情绪——他被骗了——但他又觉得被骗得值。\n\n我在世界频道回了剑指苍穹:\"我不是夜神。\"\n\n剑指苍穹:\"你骗不了我。\"\n\n我:\"我真的不是夜神。\"\n\n剑指苍穹:\"那你解释一下那一刀。\"\n\n我:\"什么刀?\"\n\n剑指苍穹:\"左肩那一刀——零点三秒的窗口——全服只有一个人知道那个习惯——那个人是我三年的会长——夜神。\"\n\n我沉默了很久。然后我做了一个决定——不在世界频道承认——但我给剑指苍穹发了一条私聊。\n\n【私聊】\n剑指苍穹:你终于肯承认了?\n我:我没承认。我只说了一句——三年了你的左肩习惯还是没改。\n剑指苍穹:……\n我:联赛打完再聊。现在我在王道这边——我得先打完这场比赛。\n剑指苍穹:你跑到对面去打联赛??你图什么??\n我:装萌新。\n剑指苍穹:……装萌新??\n我:嗯。装萌新比当大佬有意思。\n\n剑指苍穹沉默了很久。然后他回了一句话——\"你他妈是真有病。但这个病——我有点羡慕。\"\n\n决赛重新开始了。但氛围已经完全变了——所有人看我的眼神都不一样了。王道的人知道我不是普通人了——但他们还不知道我到底是谁。暗夜的人已经猜到了——但他们不敢相信——他们的会长正在跟他们打决赛。\n\n我握着信使之刃站在竞技场上——我忽然觉得这一场决赛可能是我玩这个游戏以来最刺激的一场战斗。不是因为我面对的是全服最强的对手——是因为我现在是自己公会的对手。这是一场我跟我自己的对决。"
|
||
f.write(c)
|
||
print(f" 第8章: {hz(c)}汉字")
|
||
|
||
print("\n=== 创建第9章 ===")
|
||
with open(os.path.join(D, "第009章 亲手打败自己的公会是什么感觉.md"), "w", encoding="utf-8") as f:
|
||
c = "# 第09章 亲手打败自己的公会是什么感觉\n\n决赛重新开始后——暗夜明显改变了战术。他们不再把主要火力集中在王道的坦克和治疗上——他们把相当一部分注意力放在了我身上。因为他们知道不管我是谁——那一刀证明了我不是普通玩家。\n\n我成了被重点关照的对象。暗夜的两个输出专门盯着我打——一个法师一个刺客——两人配合默契——明显是专门研究过怎么针对我的。但他们研究错了——他们针对的是40级新人的打法——但我的打法不是40级新人的打法——是无级别的——是在满级PVP中磨炼了三年的打法。\n\n刺客隐身摸到我身后——我假装没发现——在他出手前零点三秒侧身闪避——顺势一个转身斩——打掉了他的隐身状态。法师远程读条——我在他读条结束的瞬间横向移动——预判了他的技能方向——轻松躲开。\n\n王道的队伍频道里天下无双发了一条消息:\"你到底是哪个大佬?你40级打出了80级的感觉。\"我没回他——因为我现在没空打字。我在专注一件事——打我自己公会的队友。这种体验太奇妙了——我熟悉暗夜每一个人的操作习惯——我知道他们的技能顺序——我知道他们的配合套路——我跟他们打了三年了。现在我在用这些知识打他们。\n\n我绕到暗夜的治疗背后——信使之刃出手——一套连招——三秒内打掉了治疗一半的血。治疗慌忙给自己加血——打乱了他的节奏。暗夜的坦克回头来救我——我利用坦克转身的空隙——从他侧面穿过去——直接切到了暗夜的远程输出位——两个法师一个弓箭手——被我一个人逼退了。\n\n全场观众沸腾了——\"那个40级的新人一个人逼退了暗夜三个远程!\"\"他不是新人——他绝对不是新人。\"\"他到底是谁啊?\"\"剑指苍穹说他可能是夜神——但夜神怎么可能在王道那边?\"\"如果他真的是夜神——那这场决赛就是全服历史上最离谱的一场。\"\n\n王道趁暗夜阵型混乱发动了总攻。天下无双带队冲锋——直接冲穿了暗夜的防线。暗夜的治疗还没来得及重整节奏——就被王道的刺客切掉了。暗夜的坦克孤军奋战——奶妈倒了——他撑不了多久。\n\n三分钟后比赛结束——王道胜。\n\n全服公告:全服公会联赛决赛——王道胜暗夜——王道获得了四年来的第一个联赛冠军。\n\n王道公会频道瞬间炸了——\"赢了!我们赢了!\"\"四年了!终于赢了暗夜一次!\"\"今天不想努力了——你是MVP!\"\"你一个40级的新人改变了决赛局势——你到底是何方神圣?\"\n\n我站在竞技场中央。全场观众在欢呼——但不是为暗夜——是为王道和那个40级的新人。我看着暗夜的会长席——剑指苍穹坐在那里看着我——表情很复杂——他在笑又在摇头。他的眼神里写着:你这个疯子——你真的跑到对面去打你自己了。\n\n我也看着他。我无声地说了一句——对不起——但我玩得很开心。"
|
||
f.write(c)
|
||
print(f" 第9章: {hz(c)}汉字")
|
||
|
||
print("\n=== 创建第10章 ===")
|
||
with open(os.path.join(D, "第010章 全服炸了——夜神在对面当替补.md"), "w", encoding="utf-8") as f:
|
||
c = "# 第10章 全服炸了——夜神在对面当替补\n\n决赛结束后我还没来得及退出竞技场——世界频道就出现了一条让全服炸锅的消息。发消息的人不是别人——是暗夜的会长剑指苍穹。\n\n剑指苍穹:【全服消息】@今天不想努力了——你就是夜神。不用躲了。我知道是你。\n\n这条消息一出——全服频道直接卡了三秒——因为同时发消息的人太多了。\"夜神?全服第一的夜神?\"\"暗夜的会长跑去王道打联赛?\"\"这是什么操作?\"\"他叛变了吗?\"\"不可能——夜神怎么可能叛变。\"\"那他在王道干嘛?\"\"卧底?全服第一大佬去对面当卧底?\"\n\n我看着世界频道刷屏的消息——笑了。被认出来了——比我预想的早了一点——但也不算太早——毕竟我已经装了一周的萌新。一周从1级到40级——从萌新到全服闻名的天才新人——够了。\n\n我在世界频道回了一条消息——\"我不是夜神。但我知道夜神在哪。\"\n\n全服又炸了——\"他知道夜神在哪?\"\"他认识夜神?\"\"那王道找的不是夜神本人——是夜神的朋友?\"\"那他也是大佬的小号?\"\n\n剑指苍穹秒回——\"你少来。就是你。不用掩饰了。你那招左肩斩全服只有两个人会用——我和夜神。我教他的——他用了三年——我一眼就能认出来。\"\n\n我沉默了。原来是剑指苍穹教我的那一招——我都忘了——三年前他确实教过我这一招——他说会长你这个左肩习惯太明显了——我给你设计了一个反制动作——如果有人瞄你的左肩你就顺势反击。我当时觉得没用——没想到今天他用我教他的招来认出了我。这是命运的讽刺。\n\n我在世界频道回了一句:\"好吧。是我。\"\n\n全服彻底炸了。\"真的是夜神!\"\"夜神去王道当替补——还帮王道打赢了暗夜?\"\"这是什么剧情?\"\"全服第一大佬叛变到对面帮对面打赢了自己公会?\"\"年度最离谱剧情没有之一。\"\"夜神——你是不是跟暗夜闹翻了?\"\"还是说你只是无聊了?\"\n\n我看着最后一条猜测笑了一下。然后我在世界频道回复了——\"我只是无聊了。无敌太久了想体验一下萌新的感觉。装了一周的萌新——很有意思——推荐你们也试试。\"\n\n全服再次炸锅——\"因为无聊跑去对面当卧底?\"\"这就是大佬的世界吗?\"\"如果这不是装逼我不知道什么是装逼了。\"\"一周从1级到40级拿了信使之刃帮对面打赢了自己公会——然后说只是无聊了。这就是满级大佬的日常?\"\"我玩三年都没他一周精彩。\"\n\n我关掉世界频道——然后收到了剑指苍穹的私聊。\"你玩够了吗?\"我回:\"差不多了。\"\"那回来吧——暗夜需要你。\"\"暗夜刚输了——你不生气?\"\"生气。但没办法——你是会长——而且你只是出去玩了一周——也没干坏事——就是帮对面拿了个冠军而已。\"\n\n我看着这条消息笑了。这个副会长——我是真的没选错人。"
|
||
f.write(c)
|
||
print(f" 第10章: {hz(c)}汉字")
|
||
|
||
print("\n=== 创建第11章 ===")
|
||
with open(os.path.join(D, "第011章 回暗夜——我该如何面对他们.md"), "w", encoding="utf-8") as f:
|
||
c = "# 第11章 回暗夜——我该如何面对他们\n\n联赛结束后的第二天——我登录了大号夜神。三周没上了——号还是那个满级号——装备还是那套暗夜君王套装——战力还是全服第一。但我看着这个号——感觉有点陌生。不是号变了——是我变了。\n\n我站在暗夜公会的驻地门口——看着那栋我三年没怎么管过的庄园。门口站着的两个守卫看到我上线了——立刻在公会频道里喊:\"会长上线了!\"\n\n公会频道瞬间热闹起来——\"会长你回来了!\"\"会长你三周去哪了?\"\"会长你知不知道联赛的事?\"\"会长你——你是不是就是那个今天不想努力了?\"\n\n最后一条消息让频道安静了几秒。我回了一个字:\"是。\"\n\n频道又炸了——但这次炸的方向不太一样——有人笑有人骂有人不敢相信。\"会长你居然跑去王道当替补?\"\"会长你亲手打我们?\"\"会长你是不是对我们有意见?\"\"会长你是不是想换公会了?\"\n\n我看着这些消息——有点愧疚。毕竟我是他们的会长——我跑去对面帮对面夺冠了。这件事在任何公会里都是不可接受的——就算我是会长也不行。\n\n我回了一条消息:\"我对公会有意见吗?没有。我想换公会吗?没有。我只是——无聊了。\"\n\n频道安静了很久。然后一个会员回了一句:\"会长——因为无聊——你就去对面打我们了?\"\n\n我:\"嗯。\"\n\n又一个会员:\"会长——你知道我们三年都赢王道——今年输了——是因为你吗?\"\n\n我:\"知道。\"\n\n又一个会员:\"会长——你后悔吗?\"\n\n我沉默了很久。然后我回了一句话:\"不后悔。但我欠你们一个道歉。\"\n\n频道再次安静。然后剑指苍穹开口了——\"不用道歉。你是会长——你做什么都是你的自由。我只是——有点羡慕你。你可以随心所欲——我们不行。我们得守着这个公会——得打联赛——得维持排名。你不一样——你已经是全服第一了——你没什么可守的了。你想装萌新就去装——想去对面就去对面——我们都拦不住你。\"\n\n我看着这条消息——沉默了很久。剑指苍穹说得对——我没什么可守的了。我已经是全服第一了——战力断层第一——成就全满——装备全顶——我往上没有路了。所以我往下走了——去新手村——去装萌新——去体验从零开始的感觉。\n\n而暗夜的其他人——他们还需要守。他们还需要打联赛——需要升排名——需要刷装备——需要追上我。他们跟我——已经不在同一个游戏维度了。\n\n我忽然意识到一件事——我可能已经不是这个公会的会长了——至少——不应该是。\n\n我回了一条消息:\"剑指苍穹——我把会长给你吧。\"\n\n频道瞬间炸了——\"会长你要退游?\"\"会长你别冲动——我们没怪你!\"\"会长你走了暗夜怎么办?\"\"会长你回来就行——我们当你没去过王道!\"\n\n我回:\"我不是退游。我只是觉得——会长这个位置——应该给更需要它的人。我已经不需要它了。\""
|
||
f.write(c)
|
||
print(f" 第11章: {hz(c)}汉字")
|
||
|
||
print("\n=== 统计 ===")
|
||
for f in sorted(os.listdir(D)):
|
||
if f.endswith(".md") and f.startswith("第"):
|
||
with open(os.path.join(D,f),"r",encoding="utf-8") as fp:
|
||
h = hz(fp.read())
|
||
flag = "OK" if h >= 2000 else "NEED"
|
||
print(f" {flag} {f}: {h}")
|
||
print("\n生成完成") |