• VSCode小说插件ReadNovel根据内容查找页码


    VSCode小说插件ReadNovel根据内容查找页码

    写在前面

    • 环境

      • 平平无奇的vscode

      • 插件ReadNovel(暗示)

        在这里插入图片描述

    • 问题

      • 我用手机看了好多章了,然后要用vscode这个看
      • 如何在vscode续上呢?(即从当前 章节/段落 继续看)
    • 目标:

      • 输入当前章节的关键字,查找到对应的 页码 (注意这个页码是ReadNovel在小说文件上对应的页码, 不是对应的行数)

        请添加图片描述

      • 进一步说明:

        • 这个页码用于保存你看到的位置,实际上插件的作者在对小说文本进行处理的时候,在小说文件的开头新增了好几行文本
        • 其次,在读取处理的时候,对空行进行了处理,所以上述页码的数值并不是完全对应文档的总行数,而是去掉空行的文本总行数,再减去开头新增的这些行

    解决方案

    1. 使用步骤:

      1. 启动脚本,输入关键词,查找目标页码 page
      2. 打开小说,修改第一行的页码为 page,保存小说
      3. 启动vscode,启动ReadNovel
      4. 开始
    2. 脚本如下,需要注意的是,我这里是读取了vscode的配置文件,所以写的比较复杂,你自己用的话,直接把小说的路径 赋给 book_path 就ok了

      """
      对vscode插件:ReadNovel提供内容查找和页码定位的操作
      """
      
      # -----------------【可以删除】---------------------
      # 这里是获取vscode配置文件json,读取成dict的过程
      import sys
      sys.path.append("constants folder")
      from constants import get_vscode_json_dict
      vscode_json_dict = get_vscode_json_dict()
      # --------------------------------------------------
      
      
      import os
      from dataclasses import dataclass
      
      # 可以直接把文件路径粘到这里就行,不需要像我这样从vscode的配置文件中
      book_path = vscode_json_dict.get("ReadNovel.filePath")
      book_name = os.path.split(book_path)[-1]
      
      
      @dataclass
      class LocationReadNovel:
      
          def __post_init__(self):
              self.lines_without_blank = self.read_aim_file()
      
          def read_aim_file(self):
              with open(book_path, 'r', encoding='utf-8') as f:
                  lines = f.readlines()
              return [x for x in lines if len(x.strip()) > 0]
      
          def find_page(self, words):
              index = 0
              infos = []
              for l in self.lines_without_blank:
                  if words in l:
                      infos.append((index, l))
                  index += 1
      
              # 展示
              for i, info in infos:
                  print(i, ': ', info)
      
      
      def main():
          lrn = LocationReadNovel()
          print('当前书名:', book_name)
          while True:
              find_words = input("请输入检索内容:(输入q退出)\n\r")
              if find_words.strip() == 'q':
                  break
              lrn.find_page(find_words)
      
      
      if __name__ == '__main__':
          main()
      
    3. 最后展示一下效果:

      在这里插入图片描述


    碌碌谋生,谋其所爱。 @李英俊小朋友

  • 相关阅读:
    luogu P1613 跑路
    luogu P2047 社交网络
    luogu P2740 [USACO4.2]草地排水Drainage Ditches
    「字典树」最大异或对
    「贪心」耍杂技的牛
    「贪心」士兵
    「贪心」糖果传递
    「几何」[USACO12DEC]疯狂的栅栏Crazy Fences
    「LCA」[USACO10HOL]牛的政治Cow Politics
    「二分答案 + 前缀和」防线
  • 原文地址:https://www.cnblogs.com/lyjun/p/15565888.html
Copyright © 2020-2023  润新知