首页 > 其他分享 >WINRAR自动查找官方最新中文无广告版并下载脚本

WINRAR自动查找官方最新中文无广告版并下载脚本

时间:2025-01-11 15:55:11浏览次数:1  
标签:datetime 查找 无广告 import WINRAR response

import requests
import re
from datetime import datetime, timedelta
 
# 目标网页 URL
url = 'https://www.rarlab.com/'
 
# 发送 HTTP GET 请求获取网页内容
response = requests.get(url)
response.raise_for_status()  # 确保请求成功
 
# 使用正则表达式查找连接文字为“Chinese Simplified”的下载链接
pattern = r'href="(/rar/winrar-x64-[^"]+sc\.exe)"[^>]*>Chinese Simplified<'
match = re.search(pattern, response.text, re.IGNORECASE)
 
if match:
    # 补全下载链接
    download_link = f"https://www.rarlab.com{match.group(1)}"
    print(f"找到下载链接: {download_link}")
     
    # 发送 HTTP HEAD 请求获取文件的服务器时间
    head_response = requests.head(download_link)
    server_date = head_response.headers.get('Last-Modified')
     
    if server_date:
        # 将服务器时间转换为 datetime 对象
        server_date = datetime.strptime(server_date, '%a, %d %b %Y %H:%M:%S %Z')
        print(f"文件在服务器的时间: {server_date}")
         
        # 日期往前推一个月
        target_date = server_date - timedelta(days=30)
        file_name = match.group(1).split('/')[-1]
         
        for i in range(60):  # 最多加60天
            # 生成新的日期格式
            new_date_str = target_date.strftime('%Y%m%d')
            new_url_x64 = f"https://www.win-rar.com/fileadmin/winrar-versions/sc/sc{new_date_str}/wrr/{file_name}"
            new_url_x32 = new_url_x64.replace('x64', 'x32')
            print(f"尝试访问: {new_url_x64}")
             
            # 发送 HTTP HEAD 请求测试 x64 文件是否存在
            head_response_x64 = requests.head(new_url_x64)
            if head_response_x64.status_code == 200:
                print(f"x64 文件存在: {new_url_x64}")
                 
                # 下载 x64 文件
                download_response_x64 = requests.get(new_url_x64)
                download_response_x64.raise_for_status()  # 确保下载成功
                 
                # 保存 x64 文件到当前目录
                with open(file_name, 'wb') as file:
                    file.write(download_response_x64.content)
                print(f"x64 文件已下载到当前目录: {file_name}")
                 
                # 发送 HTTP HEAD 请求测试 x32 文件是否存在
                head_response_x32 = requests.head(new_url_x32)
                if head_response_x32.status_code == 200:
                    print(f"x32 文件存在: {new_url_x32}")
                     
                    # 下载 x32 文件
                    download_response_x32 = requests.get(new_url_x32)
                    download_response_x32.raise_for_status()  # 确保下载成功
                     
                    # 保存 x32 文件到当前目录
                    file_name_x32 = file_name.replace('x64', 'x32')
                    with open(file_name_x32, 'wb') as file:
                        file.write(download_response_x32.content)
                    print(f"x32 文件已下载到当前目录: {file_name_x32}")
                else:
                    print(f"x32 文件不存在: {new_url_x32}")
                break
            else:
                print(f"文件不存在: {new_url_x64}")
                target_date += timedelta(days=1)
    else:
        print("无法获取文件的服务器时间")
else:
    print("未找到连接文字为'Chinese Simplified'的下载链接")

 

标签:datetime,查找,无广告,import,WINRAR,response
From: https://www.cnblogs.com/gnz48/p/18665779

相关文章

  • 如何查找两个DOM节点的最近公共父节点
    在前端开发中,如果你需要找到两个DOM节点的最近公共父节点,可以使用JavaScript提供的DOMAPI来实现。以下是一个简单的函数,该函数接受两个DOM节点作为参数,并返回它们的最近公共父节点:functionfindClosestCommonParent(node1,node2){//获取节点1的所有父节点c......
  • 寻找重复数(二分查找)
    给定一个包含 n+1 个整数的数组 nums ,其数字都在 [1,n] 范围内(包括 1 和 n),可知至少存在一个重复的整数。假设 nums 只有 一个重复的整数 ,返回 这个重复的数 。你设计的解决方案必须 不修改 数组 nums 且只用常量级 O(1) 的额外空间。 示例1:输入:num......
  • 【Vim Masterclass 笔记09】S06L22:Vim 核心操作训练之 —— 文本的搜索、查找与替换操
    文章目录S06L22Search,Find,andReplace-PartOne1从光标位置起,正向定位到当前行的首个字符b2从光标位置起,反向查找某个字符3重复上一次字符查找操作4定位到目标字符的前一个字符5单字符查找与Vim命令的组合6跨行查找某字符串7Vim的增量查找8Vim搜索的......
  • 冒险数据结构:峰谷序列(动态序列查找问题)
    先考虑这么一个问题:    如何求出一个序列在所有位置上的各个元素的前面和后面第一个比它小的元素位置。显然这个问题可以用单调栈来解决。        如上图所示,维护一个单调递增的序列,每当栈顶>当前元素时,就抛出栈顶,这时就找到了栈顶元素后面第一个小于它的......
  • linux:文件的创建/删除/复制/移动/查看/查找/权限/类型/压缩/打包
    关于文件的关键词创建touch删除rm复制cp权限chmod移动mv查看内容cat(全部);head(前10行);tail(末尾10行);more,less查找  find压缩 gzip; bzip打包tar 编辑sed创建文件格式:touch文件名删除文件复制文件移动文件查看文件内......
  • 在Windows操作系统中,有时会需要查找隐藏的用户账户名称。这些用户账户可能是由系统创
    编辑Windows注册表来隐藏用户账户的技巧实际上是对Windows登录过程的深度定制。通过修改注册表,系统可以控制哪些账户在登录界面显示或隐藏。这种方法并不修改用户账户本身的存在,而是通过修改系统设置使得账户在图形用户界面(GUI)上不可见。底层原理:Windows登录与账户显示机制......
  • 华为OD- 根据IP查找城市-2024年OD(D卷)
    题目描述某业务需要根据终端的IP地址获取该终端归属的城市,可以根据公开的IP地址池信息查询归属城市。地址池格式如下:城市名=起始IP,结束IP起始和结束地址按照英文逗号分隔,多个地址段采用英文分号分隔。比如:City1=1.1.1.1,1.1.1.2;City1=1.1.1.11,1.1.1.16;City2=3.3.3.......
  • 第一天 / 704. 二分查找 / 27. 移除元素 / 977. 有序数组的平方
    704.二分查找左闭右闭classSolution{public:intsearch(vector<int>&nums,inttarget){intleft=0;intright=nums.size()-1;//定义target在左闭右闭的区间里,[left,right]while(left<=right){......
  • 二分法查找
    二分法查找算法应用的条件:数组按照顺序排列【基础】;数组中没有重复的元素【否则返回值元素的下标不唯一】;二分法查找主要难点在于边界条件的确定,常见的区间的定义一般有两种:左闭右闭,即[left,right],或者左闭右开,即[left,right);第一种:左闭右闭,即[left,right],代码如下:cl......
  • 代码随想录算法训练营第1天 | 数组理论基础,704. 二分查找,27. 移除元素,977.有序数组的
    1.刷题部分1.1数组基础理论原文链接:代码随想录1.1.1题目内容知识性讲解,点击链接查看原文。1.1.2初见想法是一些很基本的知识,看看有么有什么生疏的。1.1.3看录后想法原来有的语言的二维数组元素地址是可以行与行之间不连续的。1.1.4遇到的困难暂未遇到困难。1.......