Skip to content

请问进行登陆之后有获得已收藏本子的方法吗? #163

Closed

Description

@FengZhe-ZYH

请问有模块能帮助获得账号下已收藏本子的id序列吗?想通过这个来对收藏的内容进行批量下载

Activity

  1. hect0x7 commented on Nov 15, 2023

    @hect0x7
    Owner

    v2.4.1 已实现,参考如下代码:

    from jmcomic import *
    
    op = create_option('xxx')
    cl = op.new_jm_client()
    
    # 登录,可以使用插件或配置AVS等其他方式
    cl.login('username', 'password')
    
    # 遍历收藏页
    for page in cl.favorite_folder_gen(username='username'): # 指定username参数,api Client 可以不传
        # 遍历收藏页下的每个结果
        for aid, atitle in page:
            # aid: 本子的album_id
            print(aid)
  2. pinned this issue on Nov 15, 2023
  3. FengZhe-ZYH commented on Nov 20, 2023

    @FengZhe-ZYH
    Author

    v2.4.1 已实现,参考如下代码:

    from jmcomic import *
    
    op = create_option('xxx')
    cl = op.new_jm_client()
    
    # 登录,可以使用插件或配置AVS等其他方式
    cl.login('username', 'password')
    
    # 遍历收藏页
    for page in cl.favorite_folder_gen(username='username'): # 指定username参数,api Client 可以不传
        # 遍历收藏页下的每个结果
        for aid, atitle in page:
            # aid: 本子的album_id
            print(aid)

    非常感谢您的工作,另外请问cl.favorite_folder(username='xxx')这个获取收藏夹信息功能是在完善中吗?我无法通过它获得我的文件夹信息。当然也有可能是我使用错误

  4. hect0x7 commented on Nov 20, 2023

    @hect0x7
    Owner

    v2.4.1 已实现,参考如下代码:

    from jmcomic import *
    
    op = create_option('xxx')
    cl = op.new_jm_client()
    
    # 登录,可以使用插件或配置AVS等其他方式
    cl.login('username', 'password')
    
    # 遍历收藏页
    for page in cl.favorite_folder_gen(username='username'): # 指定username参数,api Client 可以不传
        # 遍历收藏页下的每个结果
        for aid, atitle in page:
            # aid: 本子的album_id
            print(aid)

    非常感谢您的工作,另外请问cl.favorite_folder(username='xxx')这个获取收藏夹信息功能是在完善中吗?我无法通过它获得我的文件夹信息。当然也有可能是我使用错误

    这个方法是完全可用的。
    可能是你使用有误,你可以贴一下你的代码和option配置吗(记得脱敏)?

  5. hect0x7 commented on Nov 20, 2023

    @hect0x7
    Owner

    贴一个favorite_folder最简单的使用方式,无option配置,直接运行代码即可。

    from jmcomic import JmOption, JmApiClient
    
    cl = JmOption.default().new_jm_client(impl=JmApiClient)
    cl.login('你的用户名', '你的密码')
    # 获取收藏夹 (第一页)
    for aid, atitle in cl.favorite_folder():
        print(aid)
  6. FengZhe-ZYH commented on Nov 20, 2023

    @FengZhe-ZYH
    Author

    v2.4.1 已实现,参考如下代码:

    from jmcomic import *
    
    op = create_option('xxx')
    cl = op.new_jm_client()
    
    # 登录,可以使用插件或配置AVS等其他方式
    cl.login('username', 'password')
    
    # 遍历收藏页
    for page in cl.favorite_folder_gen(username='username'): # 指定username参数,api Client 可以不传
        # 遍历收藏页下的每个结果
        for aid, atitle in page:
            # aid: 本子的album_id
            print(aid)

    非常感谢您的工作,另外请问cl.favorite_folder(username='xxx')这个获取收藏夹信息功能是在完善中吗?我无法通过它获得我的文件夹信息。当然也有可能是我使用错误

    这个方法是完全可用的。 可能是你使用有误,你可以贴一下你的代码和option配置吗(记得脱敏)?

    是的,这个方法完全能够正确地返回atittle以及aid,但是当我尝试传递参数folder = 'folder_name'进去时它仍然会返回所有的收藏内容而不是特定收藏夹下的内容

  7. hect0x7 commented on Nov 20, 2023

    @hect0x7
    Owner

    v2.4.1 已实现,参考如下代码:

    from jmcomic import *
    
    op = create_option('xxx')
    cl = op.new_jm_client()
    
    # 登录,可以使用插件或配置AVS等其他方式
    cl.login('username', 'password')
    
    # 遍历收藏页
    for page in cl.favorite_folder_gen(username='username'): # 指定username参数,api Client 可以不传
        # 遍历收藏页下的每个结果
        for aid, atitle in page:
            # aid: 本子的album_id
            print(aid)

    非常感谢您的工作,另外请问cl.favorite_folder(username='xxx')这个获取收藏夹信息功能是在完善中吗?我无法通过它获得我的文件夹信息。当然也有可能是我使用错误

    这个方法是完全可用的。 可能是你使用有误,你可以贴一下你的代码和option配置吗(记得脱敏)?

    是的,这个方法完全能够正确地返回atittle以及aid,但是当我尝试传递参数folder = 'folder_name'进去时它仍然会返回所有的收藏内容而不是特定收藏夹下的内容

    参数传得不对,特定收藏夹,对应的参数是folder_id,文件夹id。而不是folder_name文件夹名。
    你可以参考禁漫网页url:
    image

    cl.favorite_folder(folder_id='18xxxx')
  8. hect0x7 commented on Nov 20, 2023

    @hect0x7
    Owner

    你也可以使用代码来获取目标文件夹的id

    from jmcomic import *
    
    cl = JmOption.default().new_jm_client(impl=JmApiClient)
    cl.login('xxx', 'yyy')
    page = cl.favorite_folder()
    for folder_info in page.folder_list:
        fname, fid = folder_info['name'], folder_info['FID']
        print(f'文件夹名: {fname},文件夹id: {fid}')
  9. FengZhe-ZYH commented on Nov 20, 2023

    @FengZhe-ZYH
    Author

    你也可以使用代码来获取目标文件夹的id

    from jmcomic import *
    
    cl = JmOption.default().new_jm_client(impl=JmApiClient)
    cl.login('xxx', 'yyy')
    page = cl.favorite_folder()
    for folder_info in page.folder_list:
        fname, fid = folder_info['name'], folder_info['FID']
        print(f'文件夹名: {fname},文件夹id: {fid}')

    image
    image
    感谢你的指导,但是当我传入参数如上图所示时仍然返回了所有的收藏内容,并且我注意到此时page.folder_list是一个空的列表,这合理吗?

  10. hect0x7 commented on Nov 20, 2023

    @hect0x7
    Owner

    你也可以使用代码来获取目标文件夹的id

    from jmcomic import *
    
    cl = JmOption.default().new_jm_client(impl=JmApiClient)
    cl.login('xxx', 'yyy')
    page = cl.favorite_folder()
    for folder_info in page.folder_list:
        fname, fid = folder_info['name'], folder_info['FID']
        print(f'文件夹名: {fname},文件夹id: {fid}')

    image image 感谢你的指导,但是当我传入参数如上图所示时仍然返回了所有的收藏内容,并且我注意到此时page.folder_list是一个空的列表,这合理吗?

    注意 new_jm_client(impl=JmApiClient),需要指定impl参数为JmApiClient,也就是使用移动端api。
    原因是目前网页端的Client还没完整实现page.folder_list
    你使用了配置文件,那就改一下new_option.yml就可以了,代码不用改:

    client:
      impl: api
  11. FengZhe-ZYH commented on Nov 20, 2023

    @FengZhe-ZYH
    Author

    十分感谢您迅速的回复,完全解决了我的问题。
    这里贴出一个可能会遇到的包导入错误: ModuleNotFoundError: No module named 'Crypto'
    当使用impl: api时可能会产生这个错误,这个时候请检查pycryptodome与Crypto的两个库是否包含,安装顺序相反也可能会导致此错误

    pip install pycryptodome
    pip install Crypto
    
  12. hect0x7 commented on Nov 20, 2023

    @hect0x7
    Owner

    十分感谢您迅速的回复,完全解决了我的问题。 这里贴出一个可能会遇到的包导入错误: ModuleNotFoundError: No module named 'Crypto' 当使用impl: api时可能会产生这个错误,这个时候请检查pycryptodome与Crypto的两个库是否包含,安装顺序相反也可能会导致此错误

    pip install pycryptodome
    pip install Crypto
    

    噢是的,问题在于jmcomic的setup漏了这个库,导致在安装jmcomic时没有自动装上这个库依赖,感谢你的补充

  13. Repository owner locked and limited conversation to collaborators on Apr 29, 2024
  14. converted this issue into a discussion #235 on Apr 29, 2024
  15. unpinned this issue on Apr 29, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions