Skip to content

8f235831/moegirlpedia_category_crawler

Repository files navigation

萌摆备份程序

适用于芳文专题条目的自动化备份程序。

程序功能同时依赖于萌百本站的页面服务与其镜像站(moegirl.uk)的页面导出服务。

导出数据应在其授权协议下使用,超出范围使用所造成的后果应由使用者自行承担。

使用

执行gradlew build,编译得到可执行程序的压缩包。在合适的目录解包后,放置配置文件,随后即可执行。

根据所在操作系统的不同,执行的启动命令有所不同。

  • Windows: .\bin\moegirlpedia-houbun-category.bat [config_path]
  • Linux: sh ./bin/moegirlpedia-houbun-category [config_path]

推荐配置为定期任务。

配置文件

路径

默认配置文件为相对路径下的config.json。如果有需要,也可以启动程序时通过参数指定。

配置格式

示例配置:

{
  "outputFilePath": "/hdd/mgp-houbun-backup/backup_%s.xml",
  "compressedFilePath": "/hdd/mgp-houbun-backup/backup_%s.7z",
  "exceptionTraceFilePath": "/hdd/mgp-houbun-backup/trace_%s.txt",
  "bufferSize": 2048,
  "requestIntervalTime": 1000,
  "emailConfig": {
    "emailHost": "example.com",
    "transportType": "smtp",
    "fromUser": "mgp-backup@example.com",
    "fromEmail": "mgp-backup@example.com",
    "authCode": "********",
    "mailSubject": "[MGP芳文组]自动备份任务报告",
    "receivers": [
      {
        "address": "receiver@example.com",
        "mailSubject": "[MGP芳文组]自动备份任务报告",
        "sendAttachment": true,
        "sendErrorStackTrace": true
      }
    ]
  },
  "printExceptionsToLog": true
}

字段说明如下:

{
    // 原始备份文件的输出路径。其中如果包含了"%s",则会替换为时间戳。
    outputFilePath: string;
    // 备份压缩文件的输出路径。其中如果包含了"%s",则会替换为时间戳。
    compressedFilePath: string;
    // 错误文件的输出路径。其中如果包含了"%s",则会替换为时间戳。
    exceptionTraceFilePath: string;
    // 缓冲区大小,推荐2-4K。
    bufferSize: number;
    // 网络请求等待时间初始值,以毫秒计。
    requestIntervalTime: number;
    // 邮件配置。
    emailConfig: {
        // 邮件服务器地址。
        emailHost: string;
        // 邮件协议名,如"smtp".
        transportType: string;
        // 发送人。
        fromUser: string;
        // 发送自邮箱。
        fromEmail: string;
        // 邮箱访问口令。
        authCode: string;
        // 邮件主题。
        mailSubject: string;
        // 接收人配置。
        receivers: Array<{
            // 地址。
            address: string;
            // 邮件主题。可选,如果指定则会覆盖上层的主题配置。
            mailSubject?: string;
            // 是否将结果作为附件发送。发送的文件是压缩过的(否则太大发不出去)。
            sendAttachment: boolean;
            // 是否在出现错误时将错误报告作为附件发送。
            sendErrorStackTrace: boolean;
        }>;
    }
}

  • 对不同访问过程的代理功能支持;

更新记录

1.2

  • 现在网络请求仅支持单线程进行,不再支持并发请求,同时在两次相邻的网络请求间将强制插入等待时间;
  • 基于指数退避算法,实现了可靠的网络自动重传功能;
  • 修复了分类页面不支持分页数据的问题;

1.1

  • 分离页面收集与备份的过程;
  • 新增备份文件压缩的功能;
  • 新增通过邮件发送备份文件的功能;

致谢

感谢众多编辑对条目内容所作出的贡献,感谢镜像站提供的页面导出服务,以及感谢下列第三方库的开发者们为我节省了造轮子的时间。