Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

判断是否下载过逻辑是不是有问题? #116

Open
bugmakesprogress opened this issue Apr 1, 2019 · 7 comments
Open

判断是否下载过逻辑是不是有问题? #116

bugmakesprogress opened this issue Apr 1, 2019 · 7 comments

Comments

@bugmakesprogress
Copy link

我有个定时任务每天定时跑一遍这个脚本.发现绝大部分已经下载过的视频仍然需要重新下载一遍.看源码debug发现,getRemoteSize和getLocalSize基本大小都不匹配. 换成直接判断本地是否存在同名文件且size > 0 可以解决这个问题吗?

@icesunx
Copy link

icesunx commented Apr 2, 2019

这样改下载中断的也会当作正常下载的吧
感觉下载过程中应该保存成临时文件(比如特殊的后缀)下载完成后再重命名成正常的.mp4

@bugmakesprogress
Copy link
Author

这样改下载中断的也会当作正常下载的吧
感觉下载过程中应该保存成临时文件(比如特殊的后缀)下载完成后再重命名成正常的.mp4

都可以 在下载的地方做个异常捕捉 检测到异常清空或者删除中断的文件也行

@loadchange loadchange pinned this issue Apr 8, 2019
@cvz6
Copy link

cvz6 commented May 7, 2019

image
通过content-length头获取远程文件大小 是不对的,视频肯定放在cdn上,cdn服务器肯定gzip压缩了,大小肯定跟本地不一样。oh shit

我感觉最好写个 布隆过滤url ,或者json文件存储 视频的uir ,下载前判断uir,一个用户一个json文件
足够了

@icesunx
Copy link

icesunx commented May 10, 2019

@liupeng328 把url存下来应该可行。我现在就就是保存url来判断了。试了一个月暂时没有问题

@cvz6
Copy link

cvz6 commented May 10, 2019

@icesunx 代码发我一份吧,您肯定分析过这个代码了吧?您有没有加注释?
我不是做python开发的,改起来还是比较费劲的,您修改的代码可以发我一份吗?给我个github连接就行

@soulCoke
Copy link

@icesunx 代码发我一份吧,您肯定分析过这个代码了吧?您有没有加注释?
我不是做python开发的,改起来还是比较费劲的,您修改的代码可以发我一份吗?给我个github连接就行

if os.path.isfile(file_path):
    print("%s 已经下载过了  \n" % file_name)
    #remoteSize = getRemoteFileSize(medium_url)
    #localSize = os.path.getsize(file_path)
    #if remoteSize == localSize:
    return 

我这里再本地获取到文件我就判断已存在了,不会去继续下载

@cvz6
Copy link

cvz6 commented May 18, 2019

这几天我看了下python的语法,解决了这个问题:
我实现了两种方式:

  1. 判断本地文件存在,则放弃下载
file_path = os.path.join(target_folder, file_name)
    if os.path.isfile(file_path):
        print(file_name+" 已经爬取过了,文件保存在 "+file_path+" 放弃爬取")
        return
  1. 下载后记录videoid到一个json文件,防止重复爬取
# 防止重复下载 记录视频id到json文件版
# file = open('videoids.json', 'r')
# js = file.read()
# VIDEOID_DICT = json.loads(js)
# # print(VIDEOID)
# file.close()

        # 解析medium_url中的 video_id
        # parses = parse.parse_qs(parse.urlparse(medium_url).query)
        # VIDEO_ID = parses["video_id"][0]
        # if VIDEO_ID in VIDEOID_DICT:
        #     print("重复爬取,放弃"+VIDEO_ID)
        #     return


# # 定时记录已经下载的文件
# def saveVideoids():
#     while True:
#         print("定时记录已经下载的视频,防止重复爬取")
#         js = json.dumps(VIDEOID_DICT)
#         fileObject = open('videoids.json', 'w')
#         fileObject.write(js)
#         fileObject.close()
#         time.sleep(10)
  # threading.Timer(10, saveVideoids).start()

另外加我qq群:317896269

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants