XuShaohua / bcloud

百度网盘的linux桌面客户端
GNU General Public License v3.0
1.92k stars 530 forks source link

添加云端解压功能 #195

Open poplite opened 9 years ago

poplite commented 9 years ago

虽然网页和手机端云端解压提示需要会员,但以前的API接口还可以正常使用。可不可以考虑把这功能添加到项目里?(自己写了个patch,不知应不应该发出来)

LiuLang commented 9 years ago

On 10/17/2015 10:46 AM, poplite wrote:

虽然网页和手机端云端解压提示需要会员,但以前的API接口还可以正常使用。可不可以考虑把这功能添加到项目里?(自己写了个patch,不知应不应该发出来)


Reply to this email directly or view it on GitHub: https://github.com/LiuLang/bcloud/issues/195

好的, 我到时候抓一下接口, 可以用的话就加进来.

poplite commented 9 years ago

patch文件:http://paste.ubuntu.com/13020430/ 测试代码:http://paste.ubuntu.com/13020433/

因为我的网盘里没有比较大的压缩包,所以我只测试过几个300M左右的压缩包,不知道代码和API接口有没有bugs。 错误代码可以在这里找:http://s1.pan.bdstatic.com/yun-static/common-cdn/widget/fileUnzip/fileUnzip_4432575.js

LiuLang commented 9 years ago

On 10/31/2015 01:12 PM, poplite wrote:

这是我的patch: --- pcs.py 2015-10-17 10:43:11.577183723 +0800 +++ pcs_new.py 2015-10-17 10:42:08.153184011 +0800 @@ -1175,4 +1175,73 @@ return json.loads(content.decode()) else: return None + +def unzip_view(cookie,tokens,path,subpath="/",start=0,limit=100):

  • '''查看压缩包的文件列表 +
  • path - 压缩包的绝对路径(支持2GB以内的rar,zip压缩包)
  • subpath - 压缩包内的相对路径,默认是根目录“/”
  • start - 从第几个文件开始
  • limit - 一次最大列出文件数
  • '''
  • url = ''.join([
  • const.PAN_API_URL,
  • 'unzip/list?app_id=250528&channel=chunlei&clienttype=0&web=1',
  • '&path=',encoder.encode_uri_component(path),
  • '&subpath=',encoder.encode_uri_component(subpath),
  • '&start=',str(start),
  • '&limit=',str(limit),
  • '&bdstoken=', tokens['bdstoken'],
  • ])
  • req = net.urlopen(url, headers={
  • 'Cookie': cookie.header_output(),
  • 'Referer': const.SHARE_REFERER,
  • })
  • if req:
  • content = req.data
  • return json.loads(content.decode())
  • else:
  • return None + + +def unzip_download(cookie,path,subpath):
  • '''获得压缩包里单独文件的下载链接 +
  • path - 压缩包的绝对路径(支持2GB以内的rar,zip压缩包)
  • subpath - 需要下载文件的相对路径
  • '''
  • url = ''.join([
  • const.PCS_URL,
  • 'file?method=unzipdownload&app_id=250528',
  • '&path=',encoder.encode_uri_component(path),
  • '&subpath=',encoder.encode_uri_component(subpath),
  • ])
  • req = net.urlopen_without_redirect(url, headers={'Cookie': cookie.header_output()})
  • if req:
  • return req.getheader('Location') + +def unzip_extract(cookie,path,topath,subpath="/"):
  • '''解压压缩包到指定路径 +
  • path - 压缩包的绝对路径(支持2GB以内的rar,zip压缩包)
  • subpath - 压缩包内的相对路径,默认是根目录“/”
  • topath - 要解压到的绝对路径
  • '''
  • url = ''.join([
  • const.PCS_URL,
  • 'file?method=unzipcopy&app_id=250528',
  • '&path=',encoder.encode_uri_component(path),
  • '&subpath=',encoder.encode_uri_component(subpath),
  • '&topath=',encoder.encode_uri_component(topath),
  • ])
  • req = net.urlopen(url, headers={
  • 'Cookie': cookie.header_output(),
  • 'Referer': const.SHARE_REFERER,
  • })
  • if req:
  • content = req.data
  • return json.loads(content.decode())
  • else:
  • return None +

因为我的网盘里没有比较大的压缩包,所以我只测试过几个300M左右的压缩包,不知道代码和API接口有没有bugs。

pcs.get_metas(cookie,tokens,"/EAC/[얼티메이트] [150211] TVアニメ「天体のメソッド」キャラソンミニアルバム「約束のメソッド」(FLAC+BK).rar")

{'request_id': 6713500057844109430, 'errno': 0, 'info': [{'local_mtime': 1423767857, 'path': '/EAC/[얼티메이트] [150211] TVアニメ「天 体のメソッド」キャラソンミニアルバム「約束のメソッド」(FLAC+BK).rar', 'dlink': 'http://d.pcs.baidu.com/file/79b0a80c4e0c90dae92683b2 746d0841?fid=1179275238-250528-167511784996088&time=1445051337&rt=pr&sign=FDTAER-DCb740ccc5511e5e8fedcff06b081203-nSSHCzPgwL3V1f5y18 ghA02x9ME%3d&expires=8h&chkbd=0&chkv=0&dp-logid=6713500057844109430&dp-callid=0&r=660432612', 'category': 6, 'size': 370876160, 'ser ver_mtime': 1443868538, 'server_filename': '[얼티메이트] [150211] TVアニメ「天体のメソッド」キャラソンミニアルバム「約束のメソッド」 (FLAC+BK).rar', 'errno': 0, 'extent_tinyint1': 0, 'local_ctime': 1423767857, 'isdir': 0, 'path_md5': 0, 'extenttinyint2': 0, 'file key': 'B-p2InbI765U79b0a80c4e0c90dae92683b2746d0841', 'md5': '79b0a80c4e0c90dae92683b2746d0841', 'fs_id': 167511784996088, 'extent_t inyint3': 0, 'server_ctime': 1423767859, 'extent_tinyint4': 0, 'extent_int3': 0}]}

pcs.unzip_view(cookie,tokens,"/EAC/[얼티메이트] [150211] TVアニメ「天体のメソッド」キャラソンミニアルバム「約束のメソッド」(FLAC+BK).rar" ,subpath="""/[얼티메이트] [150211] TVアニメ「天体のメソッド」キャラソンミニアルバム「約束のメソッド」(FLAC+BK)/FLAC""")

{'list': [{'isdir': 0, 'size': 7255137, 'file_name': '01. プロローグ ~ノエル~.flac'}, {'isdir': 0, 'size': 32477259, 'file_name': '02. ほんわか日和.flac'}, {'isdir': 0, 'size': 9059832, 'file_name': '03. モノローグ ~こはるから湊太へ~.flac'}, {'isdir': 0, 'size ': 35051013, 'file_name': '04. Brand New Scene.flac'}, {'isdir': 0, 'size': 8667727, 'file_name': '05. モノローグ ~湊太から柚季へ~ .flac'}, {'isdir': 0, 'size': 34928371, 'file_name': '06. Non-Stop Days.flac'}, {'isdir': 0, 'size': 8876454, 'file_name': '07. モノ ローグ ~柚季から乃々香へ~.flac'}, {'isdir': 0, 'size': 36293056, 'file_name': '08. 流星のなみだ.flac'}, {'isdir': 0, 'size': 89153 33, 'file_name': '09. モノローグ ~乃々香から汐音へ~.flac'}, {'isdir': 0, 'size': 38310704, 'file_name': '10. きみの音色.flac'}, {' isdir': 0, 'size': 8127355, 'file_name': '11. モノローグ ~汐音からノエルへ~.flac'}, {'isdir': 0, 'size': 39102312, 'file_name': '1

  1. にっこり記念日.flac'}, {'isdir': 0, 'size': 8021923, 'file_name': '13. エピローグ ~乃々香~.flac'}], 'errno': 0, 'total': 13}

pcs.unzip_download(cookie,"/EAC/[얼티메이트] [150211] TVアニメ「天体のメソッド」キャラソンミニアルバム「約束のメソッド」(FLAC+BK).rar ",subpath="""/[얼티메이트] [150211] TVアニメ「天体のメソッド」キャラソンミニアルバム「約束のメソッド」(FLAC+BK)/FLAC/12. にっこり記念日.flac""")

'http://nb.bcs.baidu.com/pcsunzipcache-ningbo33/35ad28013d95b8a28ba43dfd7e9e2676?sign=MBOT:wTQwU2s6LoaJ9FV9IP:2Djsq8esT9dPsbY19Vri%2 FLH9%2Fs0%3D&time=1445058677&response-content-disposition=attachment;%20filename=12.%20%E3%81%AB%E3%81%A3%E3%81%93%E3%82%8A%E8%A8%98 %E5%BF%B5%E6%97%A5.flac'

$ wget 'http://nb.bcs.baidu.com/pcsunzipcache-ningbo33/35ad28013d95b8a28ba43dfd7e9e2676?sign=MBOT:wTQwU2s6LoaJ9FV9IP:2Djsq8esT9dPsbY19Vri%2FLH9%2Fs0%3D&time=1445058677&response-content-disposition=attachment;%20filename=12.%20%E3%81%AB%E3%81%A3%E3%81%93%E3%82%8A%E8%A8%98%E5%BF%B5%E6%97%A5.flac' -O "12. にっこり記念日.flac" --2015-10-17 11:13:30-- http://nb.bcs.baidu.com/pcsunzipcache-ningbo33/35ad28013d95b8a28ba43dfd7e9e2676?sign=MBOT:wTQwU2s6LoaJ9FV9IP:2Djsq8esT9dPsbY19Vri%2FLH9%2Fs0%3D&time=1445058677&response-content-disposition=attachment;%20filename=12.%20%E3%81%AB%E3%81%A3%E3%81%93%E3%82%8A%E8%A8%98%E5%BF%B5%E6%97%A5.flac 正在解析主机 nb.bcs.baidu.com (nb.bcs.baidu.com)... 183.131.34.30 正在连接 nb.bcs.baidu.com (nb.bcs.baidu.com)|183.131.34.30|:80... 已连接。 已发出 HTTP 请求,正在等待回应... 200 OK 长度: 39102312 (37M) [application/x-www-form-urlencoded] 正在保存至: “12. にっこり記念日.flac”

100%[====================================================================================>] 39,102,312 4.80MB/s 用时 7.4s

2015-10-17 11:13:37 (5.07 MB/s) - 已保存 “12. にっこり記念日.flac” [39102312/39102312])

错误代码可以在这里找:http://s1.pan.bdstatic.com/yun-static/common-cdn/widget/fileUnzip/fileUnzip_4432575.js


Reply to this email directly or view it on GitHub: https://github.com/LiuLang/bcloud/issues/195#issuecomment-152696589

可以的话, 会把这个功能加到正在重构的版本里, 但现在时间不太够用 ;-(