Tech、Food & Life

  • 首页
  • 软件下载
    • 电脑和软件
    • Mac软件
    • windows软件
  • Telegram电报
  • 网站资源推荐
  • 海外流媒体
    • netflix
    • Youtube
    • Disney+
    • HBO
  • 生活日常
    • COVID19疫情相关
    • 德国驾照和车
    • 电脑和软件
    • 花花草草
  • 烘焙
  • 关于我
Tech Food & Life
爱技术,爱美食,爱生活
  1. 首页
  2. 旅行随笔
  3. 德国
  4. 正文

Pikpakdown - 基于Python的第三方工具

2021年11月23日 4741点热度 0人点赞 0条评论

转载自ben的Blog。

这个Windows版本的功能已经相当强大,支持注册账号和直接下载。推荐使用。

Pikpakdown是基于Python编写的Pikapk的第三方工具(Win),所有信息来源均来自对官方app接口的调用,不对用户信息、文件进行保存,目前已开源。欢迎加入Pikpak官方群组。

Readme Card

软件介绍

主要功能:

  •  账号注册,支持自定义用户名
  •  会员兑换码提交
  •  软件自带内部下载
  •  推送迅雷
  •  推送IDM
  •  推送Potplayer
  •  推送Aria2
  •  多选文件推送(多选文件中不支持文件夹)
  •  单个文件夹整体推送,保持文件夹的目录结构进行推送下载
  •  双击视频文件自动调用内部MPV播放
  •  只读型webdav生成
  •  Pikpak秒传链接生成、导入
  •  代理支持:支持不走系统代理、系统代理、http、sock4、sock5代理
  •  鼠标悬停显示文件预览图

使用说明

一般情况下,在设置页填入账号和密码即可正常使用,返回主页刷新列表即可显示文件

常见问题

文件列表无法加载

一般情况下为你的网络与api连接性不好,需要设置代理或反代

代理相关:

方法一:手动设置http、socks4或socks5代理

方法二:开启代理软件的代理功能,在本软件的代理设置中设置为系统代理

如果不想设置代理,可以直接在反代中填入反代地址

博主提供的反代接口,api接口:https://go.weinb.top/api,user接口:https://go.weinb.top/user。

反代的搭建在博客有教程。

代理和反代设置需要重启才能生效

大部分软件问题与上面的原因相关

下载列表显示Aria2未连接

不需要手动启动,在主页进行内部下载时软件会自动启动并添加任务

软件下载

下载版本说明,带test的一般不用下载,调试用的。带all是全部依赖打包编译的,兼容性最好。带onefile的是单exe文件,其它都是非exe的绿色免安装版,解压即可使用。

 

效果展示

自定义反代

博主提供的反代接口,api接口:https://go.weinb.top/api,user接口:https://go.weinb.top/user。

Cloudflare

放入worker即可使用,无需更改。api接口:worker链接/api,user接口:worker链接/user

addEventListener('fetch', event => {


    const request = event.request;
    const url = new URL(request.url);
    console.log("test",request.url);

    var api_to_url = "https://api-drive.mypikpak.com";
    var user_to_url = "https://user.mypikpak.com";



    console.log("标头",url.protocol);
    //console.log("路径",url.pathname);
    console.log("host",url.host);

    //req_url = to_url + url.pathname

    //console.log("处理后链接",req_url);
    if ( request.url.search("/api/") != -1 )
    {   
        temp_path = url.protocol + "//" + url.host + "/api"
        console.log("替换链接",temp_path);
        req_url = request.url.replace(temp_path,api_to_url);
        console.log("处理后链接",req_url);
        let request_headers = request.headers;
        let new_request_headers = new Headers(request_headers);
        new_request_headers.set('Host', "api-drive.mypikpak.com");

        const response = fetch(req_url, {
                method: request.method,
                headers: new_request_headers,
                body: request.body,
            });

            event.respondWith(response);
    }
    else if ( request.url.search("/user/") != -1 )
    {   
        temp_path = url.protocol + "//" + url.host + "/user"
        console.log("替换链接",temp_path);
        req_url = request.url.replace(temp_path,user_to_url);
        console.log("处理后链接",req_url);
        let request_headers = request.headers;
        let new_request_headers = new Headers(request_headers);
        new_request_headers.set('Host', "user.mypikpak.com");

        const response = fetch(req_url, {
                method: request.method,
                headers: new_request_headers,
                body: request.body,
            });

            event.respondWith(response);
    }



});


腾讯云函数

新建flask模板,app.py替换为以下代码,无需更改。
部署成功地址:
api:云函数地址/api
user:云函数地址/user

import os
from flask import Flask, jsonify, render_template, request, url_for, send_from_directory
from werkzeug.utils import secure_filename
from flask import Response
import flask,requests
from flask import Flask,redirect


IS_SERVERLESS = bool(os.environ.get('SERVERLESS'))
print(IS_SERVERLESS)

app = Flask(__name__)

api_site = "https://api-drive.mypikpak.com/"

@app.route("/")
def index():
        if request.method == 'GET':
            url = f'https://weinb.top'
            headers = dict(flask.request.headers)
            print(headers)
            headers['Host'] = "weinb.top"
            resp = requests.get(url=url, headers=headers)
            print(resp.text)
            excluded_headers = ['content-encoding', 'content-length', 'transfer-encoding', 'connection']
            headers = [(name, value) for (name, value) in resp.raw.headers.items() if name.lower() not in excluded_headers]
            response = Response(resp.content, resp.status_code, headers)
            return response

@app.route('/user/<path:path>',methods=['GET',"POST",'DELETE','PATCH'])
def proxy_user(path):
    headers = dict(flask.request.headers)
    print(headers)
    headers['Host'] = "user.mypikpak.com"
    par = flask.request.query_string.decode()
    print(path)

    if par != "":
        url = f'{api_site}{path}?{par}'
    else:
        url = f'{api_site}{path}'


    if request.method == 'GET':


        resp = requests.get(url=url, headers=headers)
        print(resp.text)
        excluded_headers = ['content-encoding', 'content-length', 'transfer-encoding', 'connection']
        headers = [(name, value) for (name, value) in resp.raw.headers.items() if name.lower() not in excluded_headers]
        response = Response(resp.content, resp.status_code, headers)
        return response
    elif request.method == 'POST':

        print(url)

        data = flask.request.data
        print(data)
        resp = requests.post(url=url, headers=headers, data=data)
        print(resp.text)
        excluded_headers = ['content-encoding', 'content-length', 'transfer-encoding', 'connection']
        headers = [(name, value) for (name, value) in resp.raw.headers.items() if name.lower() not in excluded_headers]
        response = Response(resp.content, resp.status_code, headers)
        return response

    elif request.method == 'DELETE':


        data = flask.request.data

        resp = requests.delete(url=url, headers=headers, data=data)
        print(resp.text)
        excluded_headers = ['content-encoding', 'content-length', 'transfer-encoding', 'connection']
        headers = [(name, value) for (name, value) in resp.raw.headers.items() if name.lower() not in excluded_headers]
        response = Response(resp.content, resp.status_code, headers)
        return response

    elif request.method == 'PATCH':


            data = flask.request.data

            resp = requests.patch(url=url, headers=headers, data=data)
            print(resp.text)
            excluded_headers = ['content-encoding', 'content-length', 'transfer-encoding', 'connection']
            headers = [(name, value) for (name, value) in resp.raw.headers.items() if name.lower() not in excluded_headers]
            response = Response(resp.content, resp.status_code, headers)
            return response

@app.route('/api/<path:path>',methods=['GET',"POST",'DELETE','PATCH'])
def proxy_api(path):
    print(request.method)
    headers = dict(flask.request.headers)
    print(headers)
    headers['Host'] = "api-drive.mypikpak.com"
    par = flask.request.query_string.decode()
    print(path)
    if par != "":
        url = f'{api_site}{path}?{par}'
    else:
        url = f'{api_site}{path}'
    print(url)


    if request.method == 'GET':


        resp = requests.get(url=url, headers=headers)
        print(resp.text)
        excluded_headers = ['content-encoding', 'content-length', 'transfer-encoding', 'connection']
        headers = [(name, value) for (name, value) in resp.raw.headers.items() if name.lower() not in excluded_headers]
        response = Response(resp.content, resp.status_code, headers)
        return response
    elif request.method == 'POST':


            data = flask.request.data

            resp = requests.post(url=url, headers=headers, data=data)
            print(resp.text)
            excluded_headers = ['content-encoding', 'content-length', 'transfer-encoding', 'connection']
            headers = [(name, value) for (name, value) in resp.raw.headers.items() if name.lower() not in excluded_headers]
            response = Response(resp.content, resp.status_code, headers)
            return response

    elif request.method == 'DELETE':


            data = flask.request.data

            resp = requests.delete(url=url, headers=headers, data=data)
            print(resp.text)
            excluded_headers = ['content-encoding', 'content-length', 'transfer-encoding', 'connection']
            headers = [(name, value) for (name, value) in resp.raw.headers.items() if name.lower() not in excluded_headers]
            response = Response(resp.content, resp.status_code, headers)
            return response

    elif request.method == 'PATCH':


            data = flask.request.data

            resp = requests.patch(url=url, headers=headers, data=data)
            print(resp.text)
            excluded_headers = ['content-encoding', 'content-length', 'transfer-encoding', 'connection']
            headers = [(name, value) for (name, value) in resp.raw.headers.items() if name.lower() not in excluded_headers]
            response = Response(resp.content, resp.status_code, headers)
            return response







# 启动服务,监听 9000 端口,监听地址为 0.0.0.0
app.run(debug=IS_SERVERLESS != True, port=9000, host='0.0.0.0')

标签: pikpak windows 注册 版本
最后更新:2021年11月23日

sunqi.org

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2020-2025 SUNQI.ORG ALL RIGHTS RESERVED. 本站部分资源来源于网络,如有侵权请联系删除,谢谢。

Theme Kratos Made By Seaton Jiang