Coder Social home page Coder Social logo

jmcomic-crawler-python's Introduction

Python API For JMComic (禁漫天堂)

封装了一套可用于爬取JM的Python API.

简单来说,就是可以通过简单的几行Python代码,实现下载JM上的本子到本地,并且是处理好的图片.

友情提示:珍爱JM,为了减轻JM的服务器压力,请不要一次性爬取太多本子,西门🙏🙏🙏.

安装教程

  • 通过pip官方源安装(推荐,并且更新也是这个命令)

    pip install jmcomic -i https://pypi.org/project --upgrade
  • 本地安装

    pip install -e ./

快速上手

使用下面的两行代码,即可实现功能:把某个本子(album)里的所有章节(photo)下载到本地

import jmcomic  # 导入此模块,需要先安装.
jmcomic.download_album('422866')  # 传入要下载的album的id,即可下载整个album到本地.
# 上面的这行代码,还有一个可选参数option: JmOption,表示配置项,
# 配置项的作用是告诉程序下载时候的一些选择,
# 比如,要下载到哪个文件夹,使用怎样的路径组织规则(比如[/作者/本子id/图片] 或者 [/作者/本子名称/图片]).
# 如果没有配置,则会使用 JmOption.default(),下载的路径是[当前工作文件夹/本子名称/图片].
# 如果你想要配置,请参考文件 assets/config/常用配置介绍.yml
  • v2.2.9: 新增命令行调用方式,上述的代码可以转为一行命令
# 下载album_id为422866的本子
$ jmcomic 422866
# 更多用法请参考文件 usage/usage_cl.py (命令行使用介绍)

进阶使用

进阶使用可以参考本repo下usage文件夹内的示例代码文件,下面是各个文件的作用,你可以挑感兴趣的阅读:

  • API上手介绍: getting_started.py
  • 命令行使用介绍: usage_cl.py
  • 使用API实现简单功能: usage_simple.py
  • 演示jmcomic模块的可自定义功能点: usage_custom.py
  • 使用API的Filter过滤功能: usage_feature_filter.py
  • 演示jmcomic模块的Plugin插件体系: usage_feature_plugin.py
  • 演示一个综合使用实例: usage_advanced.py
    • 包括6个功能需求的介绍、实现方案和完整运行日志
    • 实现方案非常简洁,充分jmcomic的便利性,以及强大的插件扩展机制

以及一些趣味用法:

  • 测试你的ip可以访问哪些禁漫域名: pick_domain.py
  • 基于GitHub Actions下载本子: workflow_download.py

项目特点

  • 绕过Cloudflare的反爬虫
  • 支持使用命令行下载本子,无需写Python代码,简单易用
  • 支持使用GitHub Actions下载本子,网页上直接输入本子id就能下载(教程:使用GitHub Actions下载禁漫本子
  • 可配置性强
    • 不配置也能使用,十分方便
    • 配置可以从配置文件生成,支持多种文件格式
    • 配置点有:是否使用磁盘缓存 并发下载图片数 图片类型转换 下载路径 请求元信息(headers,cookies,proxies)
  • 可扩展性强
    • 支持Plugin插件,可以方便地扩展功能,以及使用别人的插件
      • 目前内置支持的插件有:登录插件 硬件占用监控插件 只下载新章插件 压缩文件插件
    • 支持自定义本子/章节/图片下载前后的回调函数
    • 支持自定义debug日志
    • 支持自定义类:Downloader(负责调度)/Option(负责配置)/Client(负责请求)/实体类 等等
    • ......
  • 支持自动重试和域名切换机制
  • 多线程下载(可细化到一图一线程,效率极高)
  • 跟进了JM最新的图片分割算法(2023-02-08)

使用小说明

  • Python >= 3.7
  • 个人项目,文档和示例会有不及时之处,可以Issue提问

项目文件夹介绍

  • assets:存放一些非代码的资源文件

    • config:存放配置文件
    • docs:项目文档
  • src:存放源代码

    • jmcomic:jmcomic模块
  • tests:测试目录,存放测试代码,使用unittest

  • usage:用法目录,存放示例/使用代码

感谢以下项目

图片分割算法代码+禁漫移动端API

Readme Card

jmcomic-crawler-python's People

Contributors

hect0x7 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.