Project Icon

Manga_downloader

多平台漫画小说一键下载的强大工具

Manga_downloader是一款支持多个热门平台的漫画和小说下载工具。它可以自动下载Bookwalker、DMM等网站的高质量原图,支持批量下载、自动翻页和自定义文件名。最新版本新增了封面下载和页码匹配功能,进一步优化了使用体验。该工具采用定制Chrome浏览器实现,可以轻松获取数字漫画和小说资源。

BW尝试的新方法!

新版本

v0.3.3 (建议更新)

  • 更新到Chromium 112.0.5590.0。
  • 更好地支持BW书籍页码模式,支持小说。

发布页面下载或点击这里:Windows x64 发布版 v0.3.3

v0.3.2

此版本为BW提供了以下优秀功能:

  • 可以下载封面(如果封面图片是jpeg格式,请在分享前检查或最好转换为png格式,因为jpeg文件会包含你的BW账户信息)。
  • 可以使用页码自动命名图片,你可以从任意页面开始,向前或向后进行!
  • 可以使用BW的uuid命名文件夹,不再使用随机命名。
  • 不再跳过空白或重复页面,不再使用图像哈希检查重复页面,性能更佳。

示例截图: 1670681578(1)

如果在下载某些漫画时发现文件名全变成了"cover_or_extra_xxx",请提交bug。可能BW存在我未见过的URL模式或他们改变了模式,应该覆盖这些情况以确保页码正常工作。

发布页面下载或点击这里:Windows x64 发布版 v0.3.2

v0.3.1

此版本改进了保存快照的性能,如果你在下载过程中遇到浏览器变得非常慢的问题,请尝试新版本。

发布页面下载或点击这里:Windows x64 发布版 v0.3.1

v0.3

修复了部分宽度小于800px的漫画无法下载的问题,详见#113

发布页面下载或点击这里:Windows x64 发布版 v0.3

v0.2.1

将Chromium更新至109.0.5393,可能修复了一些问题。

发布页面下载或点击这里:Windows x64 发布版 v0.2.1

v0.2

此版本基于Chromium 106.0.5243.0,变更如下:

  • 支持https://ebook.tongli.com.tw,下载的图片将保存在C:\bw_export_data\TONGLI_URL_STRING
  • 支持https://www.dlsite.com,但这是保存缓存图片,所以最后3~4页应该按以下方式下载(假设有10页):
    • 浏览第1页到第10页(确保当前页面完全加载后再进入下一页)。
    • 你会发现在第10页时,可能只有1-7页的图片。
    • 从第10页返回到第5页,你会发现最后几页已保存。(但可能顺序相反)
    • 目前我们无法做得比这更好。
  • 适用于https://book.dmm.com,使用以下脚本移动页面:
  window.i=0;setInterval(()=>{NFBR.a6G.Initializer.views_.menu.options.a6l.moveToPage(window.i);console.log(window.i);window.i++;},3000)

上述脚本适用于DMM,对于BW请使用以下脚本:

  window.i=0;setInterval(()=>{NFBR.a6G.Initializer.L7v.menu.options.a6l.moveToPage(window.i);console.log(window.i);window.i++;},3000)
  • BW可能稍快一些,并可能下载一些宽度大于高度的图片。

发布页面下载或点击这里:Windows x64 发布版 v0.2

使用方法(与旧版相同):

  1. 解压BW-downloader-chrome-bin.zip文件。
  2. 打开powershellcmdcd到解压后的浏览器目录。
  3. 使用命令行.\chrome.exe --user-data-dir=c:\bw-downloader-profile --no-sandbox打开浏览器。
  4. 浏览漫画,漫画将保存到C:\bw_export_data

请勿将其用于其他网站,仅用作漫画下载器,它不如普通Chrome浏览器安全!

旧版本

发布页面下载或点击这里:Windows x64 发布版 v0.1

如果你正在寻找下载BW的方法,请尝试这个方法,这真的是个值得尝试的好方法,你会喜欢的!

对于coma,请参见下文。

现在有了一个新方法,使用定制的chromium浏览器,可以非常轻松地下载BW原始图像及其原始尺寸。它可以下载漫画和小说,可能适用于所有使用canvas渲染页面的网站(目前仅在BW上测试过)。 这只是一个开发版本,可能存在漏洞和崩溃问题,但你现在可以下载定制浏览器并尝试使用。

请勿将其用于其他网站,仅作为BW下载器使用,它不如普通Chrome浏览器安全!

克隆此仓库或仅下载BW-downloader-chrome-bin.zip

  1. 解压文件BW-downloader-chrome-bin.zip

  2. 打开powershellcmdcd到解压后的浏览器目录。

  3. 使用命令行.\chrome.exe --user-data-dir=c:\bw-downloader-profile --no-sandbox打开浏览器。

  4. 调整浏览器窗口大小,使其变小并只能显示一个漫画页面,如下例所示 图片

  5. 现在你可以访问BW网站,登录并打开想要下载的漫画,记得在打开前重置漫画的阅读状态。

  6. F12,将其设为单独窗口(见下图),然后运行以下脚本(只需进入console复制粘贴代码,按回车)以自动翻页。如果你的网络良好,可以将3000改为更小的数值,3000表示3000毫秒即3秒,每3秒翻到下一页。

    你也可以手动点击鼠标左键/使用键盘方向键/使用键盘模拟软件来翻页,选择你喜欢的方式,只要确保页面在移动即可。

    window.i=0;setInterval(()=>{NFBR.a6G.Initializer.L7v.menu.options.a6l.moveToPage(window.i);console.log(window.i);window.i++;},3000)
    

    如果这不起作用并显示'Uncaught TypeError: Cannot read properties of undefined (reading 'menu') at :1:54',说明BW已更新了js,你可以尝试在控制台中寻找,只需尝试NFBR.a6G.Initializer.*.menu不为undefined,其中*是新的对象名;或者你可以提交一个bug。

    图片

  7. 现在你可以查看C:\bw_export_data,你会发现一个随机UUID文件夹,里面包含了所有的漫画图片。 图片

如果你想同时下载多部漫画,只需打开你想要的多个漫画,并执行步骤5到6。

这种方法非常易用、稳定,无需寻找任何分辨率或cookies,而且可以下载没有条形码的真正原始图像。

也许将来会为其添加新的浏览器界面,可以点击下载。

现在可能无法下载封面页。

仅在Windows上构建,目前没有其他平台的程序。

如果你发现任何问题,请提交bug,谢谢!

漫画下载器

一个使用selenium的漫画下载框架。

现在支持以下网站:

  1. Bookwalker.jp
  2. Bookwalker.com.tw
  3. Cmoa.jp

程序会自动检查给定URL的网站

如果你给定的网站不受支持,程序将抛出错误。

现在支持只登录一次就可以下载多部漫画

你需要准备以下信息:

  1. 漫画URL
  2. Cookies
  3. 图片目录(存放图片的位置,文件夹名)
  4. 对于某些网站,你需要查看图片大小并在res中设置。Cmoa.jp不需要这个。

如何使用

所有设置

所有设置都在main.py中。

settings = {
    # 漫画URL,应该是同一个网站
    'manga_url': [
        'URL_1',
        'URL_2'
    ],
    # 你的cookies
    'cookies': '在此处填入你的COOKIES',
    # 存储漫画的文件夹名,顺序与manga_url相同
    'imgdir': [
        'URL_1的IMGDIR',
        'URL_2的IMGDIR'
    ],
    # 分辨率,(宽度,高度),对于cmoa.jp这不重要。
    'res': (1393, 2048),
    # 每页的睡眠时间(秒),通常不需要更改。
    'sleep_time': 2,
    # 页面加载等待时间(秒),如果你的网络良好,可以减少这个参数。
    'loading_wait_time': 20,
    # 裁剪图片,(左,上,右,下)单位为像素,None表示不裁剪图片。这通常用于裁剪边缘。
    # 比如(0, 0, 0, 3)表示从图片底部裁剪3个像素。
    'cut_image': None,
    # 文件名前缀,如果你想要文件名像'klk_v1_001.jpg',在这里写'klk_v1'。
    'file_name_prefix': '',
    # 文件名数字位数,如果你想要文件名像'001.jpg',在这里写3。
    'number_of_digits': 3,
    # 起始页,如果你想从第3页开始下载,将此设置为3,None表示从0开始
    'start_page': None,
    # 结束页,如果你想下载到第10页,将此设置为10,None表示直到结束
    'end_page': None,
}

安装环境 & 如何获取URL/Cookies

这个程序现在适用于Chrome,如果你使用其他浏览器,请查看此页面

  1. 安装python包_selenium_和_pillow_,并获取_Google chrome驱动程序_。

    1. 对于_selenium_和_pillow_:
    pip install selenium
    pip install Pillow
    # 这个undetected_chromedriver是为了防止我们被BW检测到
    pip install undetected_chromedriver
    
    1. 对于Google chrome驱动程序:

      1. 请检查你的Chrome版本,'帮助'->'关于Google Chrome'。

      2. 这里下载适合你Chrome版本的驱动程序。

      3. 将其放入任何文件夹,并将该文件夹添加到PATH中。

    2. 更多信息,我建议你在这里查看

  2. 在main.py中更改IMGDIR以指定存放漫画的位置。

  3. 在程序中添加你的cookies。

    记得使用F12查看cookies!

    因为某些http only cookies无法通过javascript看到!

    记得访问以下链接获取cookies!

    1. 对于[Bookwalker.jp]的cookies,请访问这里

    2. 对于[Bookwalker.com.tw]的cookies,请访问这里

    3. 对于[www.cmoa.jp]的cookies,请访问这里,并且必须使用插件EditThisCookie获取cookies,可以在这里下载Chrome版本。

    • 对于EditThisCookie,可以用于上述任何网站,但对于cmoa,你必须使用以下方法:

      1. 进入EditThisCookie的用户偏好设置(chrome-extension://fngmhnnpilhplaeedifhccceomclgfbg/options_pages/user_preferences.html)
      2. 将cookie导出格式设置为分号分隔的name=value对
      3. 访问cmoa,点击EditThisCookie图标,然后点击导出按钮
      4. 将文件中的cookies(// Example: http://www.tutorialspoint.com/javascript/javascript_cookies.htm之后)复制到程序中
    • 对于传统方式:

      1. 打开页面。
      2. 按F12。
      3. 点击"网络"。
      4. 刷新页面。
      5. 找到第一个"profile"请求,点击它。
      6. 在右侧,会有"请求头",前往那里。
      7. 找到"cookie:...",复制"cookie:"后面的字符串,粘贴到main.py的YOUR_COOKIES_HERE处。
  4. 在main.py中更改manga_url。

    1. 对于[Bookwalker.jp]

      首先前往購入済み書籍一覧,你可以在这里找到所有你的漫画。

      这次的URL是你的漫画**"この本を読む"**按钮的URL。

      右键点击这个按钮,然后点击**"复制链接地址"**。

      URL应以member.bookwalker.jp开头,而不是viewer.bookwalker.jp。这里我们以漫画【期間限定 無料お試し版】あつまれ!ふしぎ研究部 1为例。

      这是あつまれ!ふしぎ研究部 1的URL:https://member.bookwalker.jp/app/03/webstore/cooperation?r=BROWSER_VIEWER/640c0ddd-896c-4881-945f-ad5ce9a070a6/https%3A%2F%2Fbookwalker.jp%2FholdBooks%2F

    2. 对于[Bookwalker.com.tw]

      请前往线上阅读

      漫画URL类似这样:https://www.bookwalker.com.tw/browserViewer/56994/read

    3. 对于[Cmoa.jp]

      打开漫画,直接复制浏览器上的URL。

      漫画URL类似这样:https://www.cmoa.jp/bib/speedreader/speed.html?cid=0000156072_jp_0001&u0=0&u1=0&rurl=https%3A%2F%2Fwww.cmoa.jp%2Fmypage%2Fmypage_top%2F%3Ftitle%3D156072

    将这个URL复制到main.py中的MANGA_URL

  5. 编辑完程序后,运行python main.py来执行。

注意事项

  1. SLEEP_TIME默认为2秒,你可以根据自己的网络情况调整,如果下载时出现重复图片,可以将其改为5或更多。如果你觉得太慢,可以尝试改为1甚至0.5。

  2. LOADING_WAIT_TIME = 20,这是等待漫画浏览器页面加载的时间,如果你的网络不好,可以将其设置为30或50秒。

  3. 分辨率,你可以根据需要更改,但请先检查原始图片的分辨率。

    RES = (784, 1200)
    

    如果原始图片有更高的分辨率,你可以这样更改(分辨率仅作示例)。

    RES = (1568, 2400)
    

    对于[Cmoa.jp]不需要这个,分辨率由[Cmoa.jp]固定。

  4. 有时我们需要登出并重新登录,这个网站非常严格,采取了很多方法防止滥用。

  5. 现在你可以通过设置CUT_IMAGE为(左, 上, 右, 下)来裁剪图片。

    例如,如果你想从图片底部裁剪3像素,可以这样设置:

    CUT_IMAGE = (0, 0, 0, 3)
    

    这个功能使用Pillow,如果你想使用它,需要通过以下命令安装:

    pip install Pillow
    

    默认为None,表示不裁剪图片。

  6. 你现在可以通过更改file_name_prefixnumber_of_digits来改变文件名前缀和数字位数。

    例如,如果你正在下载《斩服少女》漫画第一卷,你想要文件名像这样:

        KLK_V1
        │--KLK_V1_001.jpg
        │--KLK_V1_002.jpg
        │--KLK_V1_003.jpg
    

    那么你可以这样设置参数:

    settings = {
        ...,
        'file_name_prefix': 'KLK_V1',
        # 文件名数字位数,如果你想要文件名像'001.jpg',这里写3。
        'number_of_digits': 3
    }
    

开发

  1. 概念

    要下载漫画,通常我们会这样做:

    +------------+     +-----------+      +------------+      +-------------------+      +--------------+
    |            |     |           |      |            |      |                   | 结束 |              |
    |   登录     +-----+  加载页面 +----->+  保存图片  +----->+    移至下一页     +----->+    完成      |
    |            |     |           |      |            |      |                   |      |              |
    +------------+     +-----------+      +-----+------+      +---------+---------+      +--------------+
                                                ^                       |
                                                |                       |
                                                |     还有更多页面      |
                                                +-----------------------+

因此,我们可以创建一个框架来重复使用代码。对于新网站,通常我们只需要编写一些方法。

  1. 文件结构
|--main.py
│--downloader.py
│--README.MD
└─website_actions
    │--abstract_website_actions.py
    │--bookwalker_jp_actions.py
    │--bookwalker_tw_actions.py
    │--cmoa_jp_actions.py
    │--__init__.py
  1. 抽象WebsiteActions类介绍

对于每个网站,该类应具有以下方法/属性,这里我们以bookwalker.jp为例:

class BookwalkerJP(WebsiteActions):
    '''
    bookwalker.jp
    '''

    # login_url是我们首先加载并放置cookie的页面。
    login_url = 'https://member.bookwalker.jp/app/03/login'

    @staticmethod
    def check_url(manga_url):
        '''
        此方法返回一个布尔值,检查给定的漫画URL是否属于此类。
        '''
        return manga_url.find('bookwalker.jp') != -1

    def get_sum_page_count(self, driver):
        '''
        此方法返回一个整数,获取总页数。
        '''
        return int(str(driver.find_element_by_id('pageSliderCounter').text).split('/')[1])

    def move_to_page(self, driver, page):
        '''
        此方法不返回任何内容,移动到给定的页码。
        '''
        driver.execute_script(
            'NFBR.a6G.Initializer.B0U.menu.a6l.moveToPage(%d)' % page)

    def wait_loading(self, driver):
        '''
        此方法不返回任何内容,等待漫画加载。
        '''
        WebDriverWait(driver, 30).until_not(lambda x: self.check_is_loading(
            x.find_elements_by_css_selector(".loading")))

    def get_imgdata(self, driver, now_page):
        '''
        此方法返回可以写入文件或转换为BytesIO的字符串/内容,获取图像数据。
        '''
        canvas = driver.find_element_by_css_selector(".currentScreen canvas")
        img_base64 = driver.execute_script(
            "return arguments[0].toDataURL('image/jpeg').substring(22);", canvas)
        return base64.b64decode(img_base64)

    def get_now_page(self, driver):
        '''
        此方法返回一个整数,当前页面上的页码
        '''
        return int(str(driver.find_element_by_id('pageSliderCounter').text).split('/')[0])

我们还有一个before_download方法,这个方法在开始下载之前运行,因为某些网站需要在开始下载之前关闭一些弹出组件。

def before_download(self, driver):
    '''
    此方法不返回任何内容,在下载之前运行。
    '''
    driver.execute_script('parent.closeTips()')
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号