Skip to main content

用于 Libgen.rs 的异步 python 库

项目描述

自由发生

Libgen.rs 用于搜索和下载书籍的异步 python 库。

PyPI 版本 构建 Python 包

Bookdlbot异步电报机器人利用这个库

安装 libgenesis

使用命令行

pip install libgenesis

导入 libgenesis

from libgenesis import Libgen

创建 libgenesis 对象

lg = Libgen()

或者

lg = Libgen(sort= 'year', sort_mode= 'ASC', result_limit= '50')

创建 LibGen 实例时,可以设置 3 个选项。

  • sort:您可以使用它从允许的字段('id','author','title','publisher','year','pages','language','size','extension'中选择排序方法)。默认为“定义”。
  • sort_mode:选择升序或降序的排序顺序('ASC','DESC')。默认为“DESC”。
  • result_limit:根据允许的限制(25、50、100)限制结果的数量。默认为 25。

寻找一本书

async def search():
    q = 'japan history'
    result = await lg.search(q)
    for item in result:
        print('id = ' + item)
        print('title = ' + result[item]['title'])
        print('md5 = ' + result[item]['md5'])

返回的数据是这样的:(dict键是书的Libgen id)

{
    '881061':{
        'title': 'The Japanese Experience: A Short History of Japan (History of Civilisation)',
        'volumeinfo': '',
        'series': '',
        'periodical': '',
        'author': 'W. G. Beasley',
        'year': '1999',
        'edition': '',
        'publisher': 'University of California Press',
        'city': '',
        'pages': '331',
        'language': 'English',
        'topic': '',
        'library': '',
        'issue': '0',
        'identifier': '0520220501, 9780520220508',
        'issn': '',
        'asin': '',
        'udc': '',
        'lbc': '',
        'ddc': '',
        'lcc': '',
        'doi': '',
        'googlebookid': '',
        'openlibraryid': '',
        'commentary': '',
        'dpi': '0',
        'color': '',
        'cleaned': '',
        'orientation': '',
        'paginated': '',
        'scanned': '',
        'bookmarked': '',
        'searchable': '1',
        'filesize': '29750320',
        'extension': 'pdf',
        'md5': 'a382109f7fdde3be5b2cb4f82d97443b',
        'generic': '',
        'visible': '',
        'local': '0',
        'timeadded': '2013-02-15 18:40:21',
        'timelastmodified': '2019-12-21 21:23:21',
        'coverurl': 'http://libgen.rs/covers/881000/a382109f7fdde3be5b2cb4f82d97443b-g.jpg',
        'identifierwodash': '0520220501,9780520220508',
        'tags': '',
        'pagesinfile': '331',
        'descr': '',
        'toc': '',
        'sha1': 'ZZYRRG56BOX3XAQ5D2IWAV2FUUC35ELG',
        'sha256': '3B40D6524409A18573900B729AB1BFB872E26CF111A4845F375A84BD0CB12460',
        'crc32': '3DB84D01',
        'edonkey': 'A63EEBB71C46DAE130725C07F2CDC67C',
        'aich': '733CLKTMCYOGD4W5PIG2GMA7CMLAFN2V',
        'tth': 'O4O5Z7UL2YAOUG57PINCLOAN63HVZPCSDYACT6Q',
        'btih': '84195af51fa738cb232297dd1376df6d8b8313be',
        'mirrors':
            {
                'main': 'http://library.lol/main/a382109f7fdde3be5b2cb4f82d97443b',
                'libgen.lc': 'http://libgen.lc/ads.php?md5=a382109f7fdde3be5b2cb4f82d97443b',
                'z-library': 'http://b-ok.cc/md5/a382109f7fdde3be5b2cb4f82d97443b',
                'libgen.pw': 'https://libgen.pw/item?id=881061',
                'bookfi': 'http://bookfi.net/md5/a382109f7fdde3be5b2cb4f82d97443b',
                'torrent': 'http://libgen.rs/book/index.php?md5=a382109f7fdde3be5b2cb4f82d97443b&oftorrent=',
                'torrent_1k': 'http://libgen.rs/repository_torrent/r_881000.torrent',
                'gnutella': 'magnet:?xt=urn:sha1:ZZYRRG56BOX3XAQ5D2IWAV2FUUC35ELG&xl=29750320&dn=a382109f7fdde3be5b2cb4f82d97443b.pdf',
                'ed2k': 'ed2k://|file|A382109F7FDDE3BE5B2CB4F82D97443B.pdf|29750320|A63EEBB71C46DAE130725C07F2CDC67C|h=733CLKTMCYOGD4W5PIG2GMA7CMLAFN2V|/',
                'dc++': 'magnet:?xt=urn:tree:tiger:O4O5Z7UL2YAOUG57PINCLOAN63HVZPCSDYACT6Q&xl=29750320&dn=a382109f7fdde3be5b2cb4f82d97443b.pdf'
            }
    },
    'id_of_book':{
        ...
        ...
        ...
    },
    'id_of_book':{
        ...
        ...
        ...
    },
}

请注意,除镜像之外的上述信息均来自 Libgen,并且由书籍的上传者决定是否包含书籍的元数据。

下载一本书

仅支持对返回结果中的前3 个镜像('main'、'libgen.lc'、'z-library')进行下载。将 3 个链接之一传递给 Libgen 对象的下载方法。可选地,可以使用dest_folder参数与 url 一起传递目标路径。下载方法的输出是下载文件的路径。

async def download():
    q = 'japan history'
    result = await lg.search(q)
    download_location = []
    path = Path('Downloads')
    for item in result:
        file_path = await lg.download(result[item]['mirrors']['main'],
                                      dest_folder=path,
                                      progress=progress,
                                      progress_args=[
                                          result[item]['title']
                                      ])
        download_location.append(file_path)

async def progress(current, total, title):
    print('Downloading ', current, ' of ', total, ' ', title)

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

libgenesis-0.1.9.tar.gz (12.5 kB 查看哈希

已上传 source

内置分布

libgenesis-0.1.9-py3-none-any.whl (11.9 kB 查看哈希

已上传 py3