Skip to main content

115 tiny 302 backend.

Project description

115 tiny 302 backend

安装

你可以通过 pypi 安装

pip install -U p115tiny302

用法

作为模块

from p115client import P115Client
from p115tiny302 import make_application
from uvicorn import run

cookies = "UID=...; CID=...; SEID=...; KID=..."
client = P115Client(cookies, ensure_cookies=True, check_for_relogin=True)
run(
    make_application(client, debug=True), 
    host="0.0.0.0", 
    port=8000, 
    proxy_headers=True, 
    server_header=False, 
    forwarded_allow_ips="*", 
    timeout_graceful_shutdown=1, 
)

作为命令

$ p115tiny302 -h
usage: p115tiny302 [-h] [-c COOKIES] [-cp COOKIES_PATH] [-t TOKEN] [-H HOST]
                   [-P PORT] [-cu] [-d] [-uc UVICORN_RUN_CONFIG_PATH] [-v] [-l]

    ╭───────────────────────── Welcome to 115 tiny 302 ────────────────────────────╮
    │                                                                              │
    │  maintained by ❤     ChenyangGao https://chenyanggao.github.io               │
    │                                                                              │
    │                      Github      https://github.com/ChenyangGao/p115client/  │
    │                                                                              │
    │                      license     https://www.gnu.org/licenses/gpl-3.0.txt    │
    │                                                                              │
    │                      version     0.2.3                                       │
    │                                                                              │
    ╰──────────────────────────────────────────────────────────────────────────────╯

> 网盘文件支持用 id、pickcode、sha1、name 或 path 查询(此顺序即优先级从高到低)
> 分享文件支持用 id、name 或 path 查询(此顺序即优先级从高到低)
> 网盘文件指定 image=1 时,会获取图片的 CDN 链接
> 支持参数 refresh,用于搜索 sha1、name 或 path 时忽略缓存(强制刷新)
> 支持参数 size,用于搜索 sha1 或 name 时,要求文件大小等于此值
> 支持参数 app,用于指定从此设备的接口获取下载链接

🌰 携带 sign

通过命令行参数 -t/--token 指定令牌后,你就必须在请求时携带签名,即 sign 参数
计算方式为

    hashlib.sha1(bytes(f"302@115-{token}-{t}-{value}", "utf-8")).hexdigest()

其中:

    1. token 就是命令行所传入的令牌
    2. t 为过期时间点(默认值为 0,即永不过期)
    3. value 就是值,像这样的链接,优先级顺序为 id > pickcode > sha1 > name > path > name2

        http://localhost:8000/{name2}?id={id}&pickcode={pickcode}&sha1={sha1}&name={name}&path={path}

🌰 查询示例:

    1. 查询 id
        http://localhost:8000?2691590992858971545
        http://localhost:8000/2691590992858971545
        http://localhost:8000?id=2691590992858971545
    2. 带(任意)名字查询 id
        http://localhost:8000/Novembre.2022.FRENCH.2160p.BluRay.DV.HEVC.DTS-HD.MA.5.1.mkv?2691590992858971545
        http://localhost:8000/Novembre.2022.FRENCH.2160p.BluRay.DV.HEVC.DTS-HD.MA.5.1.mkv?id=2691590992858971545
        http://localhost:8000/2691590992858971545/Novembre.2022.FRENCH.2160p.BluRay.DV.HEVC.DTS-HD.MA.5.1.mkv
    3. 查询 pickcode
        http://localhost:8000?ecjq9ichcb40lzlvx
        http://localhost:8000/ecjq9ichcb40lzlvx
        http://localhost:8000?pickcode=ecjq9ichcb40lzlvx
    4. 带(任意)名字查询 pickcode
        http://localhost:8000/Novembre.2022.FRENCH.2160p.BluRay.DV.HEVC.DTS-HD.MA.5.1.mkv?ecjq9ichcb40lzlvx
        http://localhost:8000/Novembre.2022.FRENCH.2160p.BluRay.DV.HEVC.DTS-HD.MA.5.1.mkv?pickcode=ecjq9ichcb40lzlvx
        http://localhost:8000/ecjq9ichcb40lzlvx/Novembre.2022.FRENCH.2160p.BluRay.DV.HEVC.DTS-HD.MA.5.1.mkv
    5. 查询 sha1
        http://localhost:8000?E7FAA0BE343AF2DA8915F2B694295C8E4C91E691
        http://localhost:8000/E7FAA0BE343AF2DA8915F2B694295C8E4C91E691
        http://localhost:8000?sha1=E7FAA0BE343AF2DA8915F2B694295C8E4C91E691
    6. 带(任意)名字查询 sha1
        http://localhost:8000/Novembre.2022.FRENCH.2160p.BluRay.DV.HEVC.DTS-HD.MA.5.1.mkv?E7FAA0BE343AF2DA8915F2B694295C8E4C91E691
        http://localhost:8000/Novembre.2022.FRENCH.2160p.BluRay.DV.HEVC.DTS-HD.MA.5.1.mkv?sha1=E7FAA0BE343AF2DA8915F2B694295C8E4C91E691
        http://localhost:8000/E7FAA0BE343AF2DA8915F2B694295C8E4C91E691/Novembre.2022.FRENCH.2160p.BluRay.DV.HEVC.DTS-HD.MA.5.1.mkv
    7. 查询 name(如果直接以路径作为 name,则不要有 pickcode、id、sha1、name 或 path)
        http://localhost:8000/Novembre.2022.FRENCH.2160p.BluRay.DV.HEVC.DTS-HD.MA.5.1.mkv
        http://localhost:8000?Novembre.2022.FRENCH.2160p.BluRay.DV.HEVC.DTS-HD.MA.5.1.mkv
        http://localhost:8000?name=Novembre.2022.FRENCH.2160p.BluRay.DV.HEVC.DTS-HD.MA.5.1.mkv
    8. 查询 path(如果直接以路径作为 path,则不要有 pickcode、id、sha1、name 或 path,在根目录下要以 > 或 / 开头,如果整个路径中不含 > 或 /,则会视为 name)
        http://localhost:8000/电影/Novembre.2022.FRENCH.2160p.BluRay.DV.HEVC.DTS-HD.MA.5.1.mkv
        http://localhost:8000//电影/Novembre.2022.FRENCH.2160p.BluRay.DV.HEVC.DTS-HD.MA.5.1.mkv
        http://localhost:8000?/电影/Novembre.2022.FRENCH.2160p.BluRay.DV.HEVC.DTS-HD.MA.5.1.mkv
        http://localhost:8000?path=/电影/Novembre.2022.FRENCH.2160p.BluRay.DV.HEVC.DTS-HD.MA.5.1.mkv
    9. 查询分享文件(必须有 share_code,如果是你自己的分享,则可省略 receive_code)
        http://localhost:8000?share_code=sw68md23w8m&receive_code=q353&id=2580033742990999218
        http://localhost:8000?share_code=sw68md23w8m&id=2580033742990999218
    10. 带(任意)名字查询分享文件(必须有 share_code,如果是你自己的分享,则可省略 receive_code)
        http://localhost:8000/Cosmos.S01E01.1080p.AMZN.WEB-DL.DD+5.1.H.264-iKA.mkv?share_code=sw68md23w8m&receive_code=q353&id=2580033742990999218
        http://localhost:8000/Cosmos.S01E01.1080p.AMZN.WEB-DL.DD+5.1.H.264-iKA.mkv?share_code=sw68md23w8m&id=2580033742990999218
    11. 用 name 查询分享文件(直接以路径作为 name,且不要有 id 查询参数。必须有 share_code,如果是你自己的分享,则可省略 receive_code)
        http://localhost:8000/Cosmos.S01E01.1080p.AMZN.WEB-DL.DD+5.1.H.264-iKA.mkv?share_code=sw68md23w8m&receive_code=q353
        http://localhost:8000/Cosmos.S01E01.1080p.AMZN.WEB-DL.DD+5.1.H.264-iKA.mkv?share_code=sw68md23w8m
        http://localhost:8000?name=Cosmos.S01E01.1080p.AMZN.WEB-DL.DD%2B5.1.H.264-iKA.mkv&share_code=sw68md23w8m&receive_code=q353
        http://localhost:8000?name=Cosmos.S01E01.1080p.AMZN.WEB-DL.DD%2B5.1.H.264-iKA.mkv&share_code=sw68md23w8m
    12. 用 path 查询分享文件(直接以路径作为 path,且不要有 id 查询参数,在根目录下要以 > 或 / 开头,如果整个路径中不含 > 或 /,则会视为 name。必须有 share_code,如果是你自己的分享,则可省略 receive_code)
        http://localhost:8000/盗火纪录片/06286 [国家地理] 宇宙时空之旅:未知世界 / Cosmos Possible Worlds/Cosmos.Possible.Worlds.S01.1080p.AMZN.WEBRip.DDP5.1.x264-iKA[rartv]/Cosmos.S01E01.1080p.AMZN.WEB-DL.DD+5.1.H.264-iKA.mkv?share_code=sw68md23w8m&receive_code=q353
        http://localhost:8000/盗火纪录片/06286 [国家地理] 宇宙时空之旅:未知世界 / Cosmos Possible Worlds/Cosmos.Possible.Worlds.S01.1080p.AMZN.WEBRip.DDP5.1.x264-iKA[rartv]/Cosmos.S01E01.1080p.AMZN.WEB-DL.DD+5.1.H.264-iKA.mkv?share_code=sw68md23w8m
        http://localhost:8000?path=/盗火纪录片/06286 [国家地理] 宇宙时空之旅:未知世界 / Cosmos Possible Worlds/Cosmos.Possible.Worlds.S01.1080p.AMZN.WEBRip.DDP5.1.x264-iKA[rartv]/Cosmos.S01E01.1080p.AMZN.WEB-DL.DD%2B5.1.H.264-iKA.mkv&share_code=sw68md23w8m&receive_code=q353
        http://localhost:8000?path=/盗火纪录片/06286 [国家地理] 宇宙时空之旅:未知世界 / Cosmos Possible Worlds/Cosmos.Possible.Worlds.S01.1080p.AMZN.WEBRip.DDP5.1.x264-iKA[rartv]/Cosmos.S01E01.1080p.AMZN.WEB-DL.DD%2B5.1.H.264-iKA.mkv&share_code=sw68md23w8m

🌰 视频相关操作:

当你提供 method 参数时,通常就意味着你需要操作的目标是视频,此参数的值分别如下:

    1. "subs"、"subtitle" 或 "subtitles",获取目标文件的内嵌字幕和与它同一目录下的字幕,返回这些字幕的信息和下载链接,结果是一个 JSON
    2. "tran" 或 "transcode",获取目标文件的转码信息和在线播放地址,结果是一个 JSON
    3. "m3u8",获取在线播放地址,会执行 302 重定向,另外接受参数:
        1. audio_track,接受 1 个整数,以切换不同音轨,这个数字是数组下标(从 0 开始),请先查询 "tran" 或 "transcode" 方法,然后看 key 为 "multitrack_list" 的数组
        2. definition,接受 1 个整数,以切换不同画质:1:标清 2:高清 3:超清 4:1080P 5:4k 100:原画
    4. "hist" 或 "history",获取或设置视频播放进度。当你没有 time 和 watch_end 查询参数时,会获取视频播放进度,否则会进行设置。结果是一个 JSON
        - time,接受 1 个整数,视频播放进度时长,单位是:秒
        - watch_end,接受 0 或者 1,视频是否播放播放完毕,默认为 0,1 表示播放完毕
    5. "info",获取文件信息,结果是一个 JSON

options:
  -h, --help            show this help message and exit
  -c COOKIES, --cookies COOKIES
                        cookies 字符串,优先级高于 -cp/--cookies-path
  -cp COOKIES_PATH, --cookies-path COOKIES_PATH
                        cookies 文件保存路径,默认为当前工作目录下的 115-cookies.txt
  -t TOKEN, --token TOKEN
                        签名所用的 token,如果提供,则请求必须携带签名,即 sign 查询参数
  -H HOST, --host HOST  ip 或 hostname,默认值:'0.0.0.0'
  -P PORT, --port PORT  端口号,默认值:8000,如果为 0 则自动确定
  -cu, --cache-url      缓存下载链接
  -d, --debug           启用调试,会输出更详细信息
  -uc UVICORN_RUN_CONFIG_PATH, --uvicorn-run-config-path UVICORN_RUN_CONFIG_PATH
                        uvicorn 启动时的配置文件路径,会作为关键字参数传给 `uvicorn.run`,支持 JSON、YAML 或 TOML 格式,会根据扩展名确定,不能确定时视为 JSON
  -v, --version         输出版本号
  -l, --license         输出授权信息

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

p115tiny302-0.2.3.1.tar.gz (36.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

p115tiny302-0.2.3.1-py3-none-any.whl (38.4 kB view details)

Uploaded Python 3

File details

Details for the file p115tiny302-0.2.3.1.tar.gz.

File metadata

  • Download URL: p115tiny302-0.2.3.1.tar.gz
  • Upload date:
  • Size: 36.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.13.5 Darwin/25.0.0

File hashes

Hashes for p115tiny302-0.2.3.1.tar.gz
Algorithm Hash digest
SHA256 cbe4c34ccb0f430c24f254482085e3157f00df00ba676bd0529fa243b768a4b4
MD5 566a5e32037c3fe4b0fe7a82c4c4921a
BLAKE2b-256 2da8f6fe0e5c415a2bb1a4e8d900184659618dd244690d26d35d2320b044bb92

See more details on using hashes here.

File details

Details for the file p115tiny302-0.2.3.1-py3-none-any.whl.

File metadata

  • Download URL: p115tiny302-0.2.3.1-py3-none-any.whl
  • Upload date:
  • Size: 38.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.13.5 Darwin/25.0.0

File hashes

Hashes for p115tiny302-0.2.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d8de3de973c3a57d28ce3fb2b12832fdc25a7a33bae56dfc6d259cd75e8c445f
MD5 e536e802da41b5adf77d198503bb32eb
BLAKE2b-256 a43dffda93370a32695cc8daa7f4a4d925b4a52512fa2567bd8316fa3b038ca1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page