hect0x7 / JMComic-Crawler-Python

Python API for JMComic | 提供Python API访问禁漫天堂,同时支持网页端和移动端 | 禁漫天堂GitHub Actions下载器🚀
https://jmcomic.readthedocs.io/zh-cn/latest/option_file_syntax/#
MIT License
792 stars 1.85k forks source link

[Help] 下载图片失败 #271

Closed Smile8848 closed 1 month ago

Smile8848 commented 1 month ago

注意事项

你使用的是哪种方式?

Python代码

你的目的?

No response

你遇到的困难?

下载下来图片被切片?

其他信息

剪贴板图片 (1) 剪贴板图片

hect0x7 commented 1 month ago

没看懂,什么问题?

Smile8848 commented 1 month ago

没看懂,什么问题?

它切成了2张图。。

hect0x7 commented 1 month ago

禁漫图片本来就是这样吧,你手动访问图片URL看下就知道了

Smile8848 commented 1 month ago

禁漫图片本来就是这样吧,你手动访问图片URL看下就知道了

网页上确实是切掉了下面部分,需要怎么配置才能下多章节的漫画呢?我尝试下456688 基本都反复重试了。。

hect0x7 commented 1 month ago

download_album 就是下载整个本子,包括所有的章节 贴一下你的代码和option配置

Smile8848 commented 1 month ago

download_album 就是下载整个本子,包括所有的章节 贴一下你的代码和option配置

import jmcomic

def main():

创建配置对象

option = jmcomic.create_option_by_file('C:/Users/Administrator/Desktop/option.yml')

while True:
    print("请输入要下载的本子ID(多个ID用逗号分隔),或输入 'exit' 或 'quit' 退出:")
    user_input = input().strip().lower()

    if user_input in ['exit', 'quit']:
        print("退出程序。")
        break

    # 将输入的字符串转换为列表
    album_ids_list = [int(id.strip()) for id in user_input.split(',')]

    # 下载本子
    for album_id in album_ids_list:
        print(f"开始下载本子ID: {album_id}")
        jmcomic.download_album(album_id, option)
        print(f"本子ID: {album_id} 下载完成")

if name == "main": main()

Smile8848 commented 1 month ago

配置:

client: cache: null domain: [] impl: api postman: meta_data: headers: null impersonate: chrome110 proxies: system

http: 127.0.0.1:7897

    #https: 127.0.0.1:7897
type: cffi

retry_times: 5 dir_rule: base_dir: C:\Users\Administrator\Desktop rule: Bd_Pname download: cache: true image: decode: true suffix: null threading: image: 30 photo: 3 log: true plugins: valid: log version: '2.1'

Smile8848 commented 1 month ago

image 这玩意也下不动...

hect0x7 commented 1 month ago

download_album 就是下载整个本子,包括所有的章节 贴一下你的代码和option配置

import jmcomic

def main(): # 创建配置对象 option = jmcomic.create_option_by_file('C:/Users/Administrator/Desktop/option.yml')

while True:
    print("请输入要下载的本子ID(多个ID用逗号分隔),或输入 'exit' 或 'quit' 退出:")
    user_input = input().strip().lower()

    if user_input in ['exit', 'quit']:
        print("退出程序。")
        break

    # 将输入的字符串转换为列表
    album_ids_list = [int(id.strip()) for id in user_input.split(',')]

    # 下载本子
    for album_id in album_ids_list:
        print(f"开始下载本子ID: {album_id}")
        jmcomic.download_album(album_id, option)
        print(f"本子ID: {album_id} 下载完成")

if name == "main": main()

你写的没问题呀,下载456688有什么问题吗 github actions暂时用不了

hect0x7 commented 1 month ago

禁漫图片本来就是这样吧,你手动访问图片URL看下就知道了

网页上确实是切掉了下面部分,需要怎么配置才能下多章节的漫画呢?我尝试下456688 基本都反复重试了。。

你说的反复重试是啥意思?

Smile8848 commented 1 month ago

download_album 就是下载整个本子,包括所有的章节 贴一下你的代码和option配置

import jmcomic def main(): # 创建配置对象 option = jmcomic.create_option_by_file('C:/Users/Administrator/Desktop/option.yml')

while True:
    print("请输入要下载的本子ID(多个ID用逗号分隔),或输入 'exit' 或 'quit' 退出:")
    user_input = input().strip().lower()

    if user_input in ['exit', 'quit']:
        print("退出程序。")
        break

    # 将输入的字符串转换为列表
    album_ids_list = [int(id.strip()) for id in user_input.split(',')]

    # 下载本子
    for album_id in album_ids_list:
        print(f"开始下载本子ID: {album_id}")
        jmcomic.download_album(album_id, option)
        print(f"本子ID: {album_id} 下载完成")

if name == "main": main()

你写的没问题呀,下载456688有什么问题吗 github actions暂时用不了

禁漫图片本来就是这样吧,你手动访问图片URL看下就知道了

网页上确实是切掉了下面部分,需要怎么配置才能下多章节的漫画呢?我尝试下456688 基本都反复重试了。。

你说的反复重试是啥意思?

[2024-08-18 16:12:27] [thread_pool_executor_1]:【req.error】禁漫图片获取失败: [https://cdn-msp2.jmapinodeudzn.net/media/photos/456743/00002.webp?v=1723968725],http状态码=522 [2024-08-18 16:12:27] [thread_pool_executor_1]:【req.retry】次数: [1/5], 域名: [0 of ['www.jmapinodeudzn.xyz', 'www.cdn-eldenringproxy.xyz', 'www.cdn-eldenringproxy.me', 'www.cdn-eldenringproxy.vip', 'www.jmapinode.xyz']], 路径: [https://cdn-msp2.jmapinodeudzn.net/media/photos/456743/00002.webp?v=1723968725], 参数: [{'headers': {'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.7', 'accept-language': 'zh-CN,zh;q=0.9', 'cache-control': 'no-cache', 'dnt': '1', 'pragma': 'no-cache', 'priority': 'u=0, i', 'referer': 'https://18comic.vip', 'sec-ch-ua': '"Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-platform': '"Windows"', 'sec-fetch-dest': 'document', 'sec-fetch-mode': 'navigate', 'sec-fetch-site': 'none', 'sec-fetch-user': '?1', 'upgrade-insecure-requests': '1', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36', 'authority': '18comic.vip', 'origin': 'https://18comic.vip'}}] [2024-08-18 16:12:27] [thread_pool_executor_25]:【req.error】禁漫图片获取失败: [https://cdn-msp2.jmapinodeudzn.net/media/photos/456743/00026.webp?v=1723968725],http状态码=522

Smile8848 commented 1 month ago

后面就会一直报这个了。

hect0x7 commented 1 month ago

试下把impl: api换成impl: html,然后重新运行你的代码

Smile8848 commented 1 month ago

试下把impl: api换成impl: html,然后重新运行你的代码

mcomic.jm_exception.ResponseUnexpectedException: 请求失败,响应状态码为403,原因为: [ip地区禁止访问/爬虫被识别], URL=[https://18comic.vip/album/456688]

。。。ban了

hect0x7 commented 1 month ago

应该是图片请求headers的问题,更新下jmcomic:

pip install jmcomic -i https://pypi.org/project -U
Smile8848 commented 1 month ago

应该是图片请求headers的问题,更新下jmcomic:

pip install jmcomic -i https://pypi.org/project -U

尝试更新 换了个节点,image: 10 还是522了0.0.

hect0x7 commented 1 month ago

很怪,我试了最新的jmcomic不会522,而且我看github actions又可以了用了:https://github.com/hect0x7/JMComic-Crawler-Python/actions/runs/10439140631/job/28907345344

Leoin01 commented 1 month ago

NameError: name 'AdvancedDict' is not defined 是缺少什么依赖吗?

Smile8848 commented 1 month ago

很怪,我试了最新的jmcomic不会522,而且我看github actions又可以了用了:https://github.com/hect0x7/JMComic-Crawler-Python/actions/runs/10439140631/job/28907345344

也开始522了

hect0x7 commented 1 month ago

NameError: name 'AdvancedDict' is not defined 是缺少什么依赖吗?

pip install commonX -U

hect0x7 commented 1 month ago

很怪,我试了最新的jmcomic不会522,而且我看github actions又可以了用了:https://github.com/hect0x7/JMComic-Crawler-Python/actions/runs/10439140631/job/28907345344

也开始522了

也许跟域名有关,cdn-msp2.jmapinodeudzn.net 这个线路看起来炸了,禁漫APP请求也522 image

hect0x7 commented 1 month ago

把下面这段加在你代码最前面,再试试看

from jmcomic import JmModuleConfig
JmModuleConfig.DOMAIN_IMAGE_LIST = [
    'cdn-msp.jmapinodeudzn.net',
    'cdn-msp3.jmapinodeudzn.net'
]
Smile8848 commented 1 month ago

把下面这段加在你代码最前面,再试试看

from jmcomic import JmModuleConfig
JmModuleConfig.DOMAIN_IMAGE_LIST = [
    'cdn-msp.jmapinodeudzn.net',
    'cdn-msp3.jmapinodeudzn.net'
]

正常了。。我去,感谢大佬