全球主机交流论坛

标题: 有精通易语言的MJJ嘛 [打印本页]

作者: ficefox    时间: 2020-2-27 01:25
提示: 作者被禁止或删除 内容自动屏蔽
作者: v123v    时间: 2020-2-27 01:32
提示: 作者被禁止或删除 内容自动屏蔽
作者: linhai    时间: 2020-2-27 01:47
不懂   -mjj专用紫薯布丁
作者: kagari    时间: 2020-2-27 01:58
[​u​r​l​]​h​t​t​p​s​:​/​/​b​b​s​.​1​2​5​.​l​a​/​f​o​r​u​m​.​p​h​p​?​m​o​d​=​v​i​e​w​t​h​r​e​a​d​&​t​i​d​=​1​4​2​6​0​7​3​2​&​h​i​g​h​l​i​g​h​t​=​%​B​D​%​F​8​%​B​6​%​C​8​%​C​F​%​C​2​%​D​4​%​D​8​[​/​u​r​l​]
作者: ficefox    时间: 2020-2-27 02:05
提示: 作者被禁止或删除 内容自动屏蔽
作者: yjsx86    时间: 2020-2-27 02:26
189的我去试了下, 通用的下载进度条应该不能用
上面你的地址 总共跳转了两次才到真正的下载地址,
而且 像文件大小, 文件名, 签名等信息 天翼云没有放在 head 里, 而是直接写在url的参数上
作者: ficefox    时间: 2020-2-27 02:29
提示: 作者被禁止或删除 内容自动屏蔽
作者: yjsx86    时间: 2020-2-27 02:59
ficefox 发表于 2020-2-27 02:29
真实下载地址可以到header两次找到,读网络文件可以找到大小,然后那个文件名 编码_GB2312 但是我做出来  ...

两次head获取不到
第一次head 第二次get才行
这完全就是吃力不讨好的事情, 进度条应该算附带, 下载才是主
如果你能接受单线程下载, 不管断点  那还是好写
获取文件名, 创建文件
以流的方式下载, 每次下载 一个块 写入文件, 总共写入了多少 除以 总大小


作者: Eyfj    时间: 2020-2-27 03:26
易语言论坛有迅雷模块,用模块写一个比较快
作者: Eyfj    时间: 2020-2-27 03:32
(, 下载次数: 0)
2次get,获取跳转头
然后拿到地址
拿到地址后,把地址放入带进度的http下载器就可以了
去找下有那种现成的下载器改下就行
作者: Eyfj    时间: 2020-2-27 03:33

作者: Eyfj    时间: 2020-2-27 03:37
https://bbs.125.la/thread-14260732-1-1.html
作者: ficefox    时间: 2020-2-27 06:01
提示: 作者被禁止或删除 内容自动屏蔽
作者: ficefox    时间: 2020-2-27 06:04
提示: 作者被禁止或删除 内容自动屏蔽
作者: yjsx86    时间: 2020-2-27 14:08
本帖最后由 yjsx86 于 2020-2-27 16:49 编辑
ficefox 发表于 2020-2-27 06:04
禁止重定向,两次head稳稳的 就是我下载的文件大于2G 大佬能出个例程嘛 怎么才不会崩溃 我做出 来秒崩溃 ...


不知道你那边的情况 我这里 第一次head ’Location‘:’https://download.cloud.189.cn/file/downloadFile.action?dt=51&expired=1582783643171&sk=81e81ada-4c14-48e0-bcc8-c9d72da4c9ea_app&ufi=4154214789127936&zyc=5&token=cloud15&sig=nkJ3nYc9S1Z90VWFfpP%2FdOZkKiE%3D‘
对这个地址head请求, 状态码405 head里有字段 'Allow': 'GET'
换用get才拿到真正的地址
'Location': 'https://cloud189-anhui-person.oos-ahwh.ctyunapi.cn/6c3b26b2-db8f-4e0c-8561-bb140bc9073f.zip?x-amz-UFID=4154214789127936&x-amz-CLIENTNETWORK=UNKNOWN&x-amz-FSIZE=1686360716&Expires=1582796591&x-amz-UID=330956022&response-content-disposition=attachment%3Bfilename%3D%22Adobe%2BAfter%2BEffects%2BCC%2B%2528win64%2529.zip%22&AWSAccessKeyId=caf5e6901807aca55a45&x-amz-limitrate=61440&x-amz-APPID=94450&x-amz-CLOUDTYPEIN=PERSON&x-amz-CLIENTTYPEIN=UNKNOWN&Signature=P9jazOY0FsZ9SbfN2MYtInFuULo%3D'



不知道你的崩溃的起因是什么 不好判断
如果是内存爆了 换stream流下载就行

我只会python和golang 而且不会GUI
只能达到诸如这样的效果


作者: A23187    时间: 2020-2-27 15:15
隔壁吾爱
作者: Ruclinux    时间: 2020-2-27 18:37
易语言不要用自带的写到文件,用winapi自定义函数下载,在事件中做个事件处理,不然界面会崩,很久没玩了。易官方有好多这样的例程,找一些来抄一抄就成了。
作者: yiluosha3    时间: 2020-2-27 18:41
换C#吧
作者: ssjoy    时间: 2020-2-27 20:07
天翼云?下载器?搞DNF的吗
作者: 玉藻前    时间: 2020-2-27 20:21
搞dnf的?下载器有源码啊哈哈哈哈
作者: ficefox    时间: 2020-2-27 21:42
提示: 作者被禁止或删除 内容自动屏蔽
作者: ficefox    时间: 2020-2-27 21:43
提示: 作者被禁止或删除 内容自动屏蔽
作者: ficefox    时间: 2020-2-27 21:44
提示: 作者被禁止或删除 内容自动屏蔽
作者: yjsx86    时间: 2020-2-27 22:26
ficefox 发表于 2020-2-27 21:42
pm一下文件给我 大佬 我看看

没有做错误处理的!!!
  1. import requests
  2. import re
  3. import urllib.parse

  4. class FileInfo():
  5.     def __init__(self, headers):
  6.         self.headers = headers

  7.     @property
  8.     def name(self):
  9.         rs = re.search(r'filename="(.*?)"', str(self.headers))
  10.         if rs:
  11.             return urllib.parse.unquote(rs.groups()[0])
  12.         else:
  13.             return None

  14.     @property
  15.     def size(self):
  16.         rs =  self.headers.get('Content-Length', None)
  17.         return int(rs) if rs else rs

  18. class Down():
  19.     def __init__(self, url):
  20.         self.url = url
  21.    
  22.     def view_bar(self, num, total):
  23.         rate = num/total
  24.         rate_num = int(rate * 100)
  25.         number = int(50*rate)
  26.         r = '\r[%s%s]  %d%%' % ("#"*number, " "*(50-number), rate_num, )
  27.         print("{}".format(r), end="\r")

  28.     def Run(self):
  29.         r = requests.get(self.url, stream=True)
  30.         file = FileInfo(r.headers)
  31.         print("fileName: ", file.name)
  32.         print("fileSize: ", file.size)
  33.         downloadedSize = 0
  34.         with open(file.name, "wb") as f:
  35.             for chunk in r.iter_content(chunk_size=1024):
  36.                 if chunk:
  37.                     f.write(chunk)
  38.                     downloadedSize += 1024
  39.                     self.view_bar(downloadedSize, file.size)
  40.         r.close()
  41.         

  42. if __name__ == "__main__":
  43.     url = input("Download Url >>> ")
  44.     d = Down(url)
  45.     d.Run()
复制代码





欢迎光临 全球主机交流论坛 (https://loc.010206.xyz/) Powered by Discuz! X3.4