7 个版本 (重大变更)

0.6.0 2020年7月24日
0.5.0 2020年7月10日
0.4.0 2020年6月13日
0.3.1 2020年2月14日
0.1.0 2019年11月6日

#868 in 文本处理

MIT/Apache

165KB
2K SLoC

story-dl

story-dl 是一个程序,允许您从多个不同站点下载故事。

注意

此爬虫不支持抓取人物、配对、标签、警告或其他任何所需信息之外的内容。或者至少目前还不支持。

截至 v0.5.0,story-dl 包含了 Élisabeth Henry 的 epub-builder 的修改版,但未经测试。

支持站点

  • 我们的档案馆
  • 粉丝小说
  • (我还需要添加更多...)

依赖

  • Rust (构建)
  • C/C++ 编译器 (构建)
  • OpenSSL (Unix/Linux 和 macOS) (运行时)

命令

用法

story-dl 尝试拥有一个简单的命令行,仅包含足够的选项来更改您所需的内容,同时足够简单,不需要20个手册页面。

示例

下载故事为 EPub

story-dl -u <URL> -o epub

下载导入文件中的所有内容为 EPub

story-dl -f import.json -o epub

导入.json:

[
    "<URL>",
    {
        "url": "<URL>"
    }
]

用法

将此添加到您的 Cargo.toml

story_dl = { version = "0.3", default-features = false }

这将添加 story-dl,但禁用了所有命令版本所需的 crate。

选择要抓取的网站,让我们用 FanFiction 作为此示例。

// Import required structs.
use story_dl::fanfiction;

#[tokio::main]
async fn main() {
    // Convert story url string into the required Uri.
    let url = "<story url>".parse().expect("Not a valid URL");

    // Start the scraper, this will return the finished story.
    let story = fanfiction::scrape(&url).await.expect("Error scraping story");

    // Scraped information
    println!("Title: {}", story.name);
    println!("Authors: {}", story.authors.join(", "));
    println!("Chapters: {}", story.chapters);
}

鸣谢

内部使用 Gonzih 的 CrabQuery 的修改版。

感谢 Archive Of Our Own 上的 Quiet Wraith 和 FanFiction.net,他们的两篇故事 "Little Cog" 和 "Fellow Traveler" 被用作网站抓取的测试数据。

依赖

~17–28MB
~449K SLoC