自动下载应用

脚本功能介绍:
将需要下载的应用报名放在名为“待下载应用包.txt"里
程序会优先在酷安应用商城下载对应应用,如果该应用酷安中没有会在应用宝网站下载,一般应用宝中只能下载游戏类软件

此程序有两种模式
A、间隔执行(一次执行完毕等待X秒后继续执行)
B、定时执行(固定每天一个时间点执行)

import requests
import re
import os
from clint.textui import progress
import time
import datetime


def YYB_jiansuo(bao_name):
    cookies = {
        'pgv_pvid': '7581333496',
        'ts_uid': '6391491387',
        'ts_refer': 'cn.bing.com/',
        'yyb_home_guid': '74f1e6bd-6097-4617-9fc9-662e46978739',
        'pac_uid': '0_98d7c9dfc3cf0',
        'YYB_HOME_UUID': '97dab73d-aba0-400c-b92c-7b5a7e86e5ad',
        'Hm_lvt_54c82ac440add7032803c966915f1b09': '1670504144',
        'Hm_lpvt_54c82ac440add7032803c966915f1b09': '1670506516',
    }

    headers = {

        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36',
    }
    url = 'https://sj.qq.com/appdetail/'+bao_name
    response = requests.get(url, cookies=cookies, headers=headers)
    html = response.text
    model = re.compile(r'.*?"download_url":"(.*?)",.*?', re.S)   #下载链接
    lins = model.findall(html)
    #print(lins[0])
    banben = re.compile('.*?版本号</p><p\stitle=\"(.*?)\"\s+class=.*?', re.S)   #版本号
    banben1 = banben.findall(html)
    #print(banben1[0])
    name = re.compile('.*?</script><title>(.*?)官方下载.*?', re.S)   #中文名
    name1 = name.findall(html)
    #print(name1)
    wenjianming = name1[0]+"-"+bao_name+"-"+banben1[0]
    return lins[0],wenjianming

def YYB_dload(url,name):
    #print(url)
    dl_bao = url.split("fsname=")[1]
    # ul = re.compile('.*?apk/(.*?)?fsname.*?', re.S)
    # ul1 = ul.findall(url)
    # print(ul1[0])
    headers = {

        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36',
    }
    params = {
        'fsname': dl_bao,
    }
    # dl_url = 'http://dd.myapp.com/sjy.00001/16891/apk/'+ul1[0]
    # print(dl_url)
    response = requests.get(url,params=params,headers=headers)
    #print(response)
    total_length = int(response.headers.get('content-length'))
    path = name_path + "\\" + name
    with open(path, "wb") as pypkg:
        for chunk in progress.bar(response.iter_content(chunk_size=1024), expected_size=(total_length / 1024) + 1,width=100):
            if chunk:
                pypkg.write(chunk)


def download(apk):
    cookies = {
        'SESSID': '11c0-6388b114e307b-1669902612-9264',
        'Hm_lvt_7132d8577cc4aa4ae4ee939cd42eb02b': '1669902613',
        'uid': '3349387',
        'username': '%E5%B0%8F%E7%AC%A8%E8%9B%8B11',
        'token': '416fd271k3E1gMMTpcEBjQQeYfrVulKIR-rHxQhFiJKIkA4jw8kXvLdWVNfF5NYOWFRSvChvB55kBPMRFS-R_JiJvp7O5oJifRTDaX1iZGCMPBcmLHShWaOmVcLycrdTfp4F1OX-572fTU8r5xY2zfrnF0S-mIQw1Kt3m5hQQw8YwLDr9R-4Nt9zOj9CjAN4XQbNsMR6BxW7Lbvmj_6mj55-y5HoRg',
        'forward': 'https%3A%2F%2Fdeveloper.coolapk.com%2F',
        'Hm_lpvt_7132d8577cc4aa4ae4ee939cd42eb02b': '1669943400',
    }

    headers = {
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
        'Accept-Language': 'zh-CN,zh;q=0.9',
        'Cache-Control': 'max-age=0',
        'Connection': 'keep-alive',
        # Requests sorts cookies= alphabetically
        # 'Cookie': 'SESSID=11c0-6388b114e307b-1669902612-9264; Hm_lvt_7132d8577cc4aa4ae4ee939cd42eb02b=1669902613; uid=3349387; username=%E5%B0%8F%E7%AC%A8%E8%9B%8B11; token=416fd271k3E1gMMTpcEBjQQeYfrVulKIR-rHxQhFiJKIkA4jw8kXvLdWVNfF5NYOWFRSvChvB55kBPMRFS-R_JiJvp7O5oJifRTDaX1iZGCMPBcmLHShWaOmVcLycrdTfp4F1OX-572fTU8r5xY2zfrnF0S-mIQw1Kt3m5hQQw8YwLDr9R-4Nt9zOj9CjAN4XQbNsMR6BxW7Lbvmj_6mj55-y5HoRg; forward=https%3A%2F%2Fdeveloper.coolapk.com%2F; Hm_lpvt_7132d8577cc4aa4ae4ee939cd42eb02b=1669943400',
        'Referer': 'https://www.coolapk.com/apk',
        'Sec-Fetch-Dest': 'document',
        'Sec-Fetch-Mode': 'navigate',
        'Sec-Fetch-Site': 'same-origin',
        'Sec-Fetch-User': '?1',
        'Upgrade-Insecure-Requests': '1',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36',
        'sec-ch-ua': '"Google Chrome";v="107", "Chromium";v="107", "Not=A?Brand";v="24"',
        'sec-ch-ua-mobile': '?0',
        'sec-ch-ua-platform': '"Windows"',
    }
    url = "https://www.coolapk.com/apk/"+apk

    response = requests.get(url, cookies=cookies, headers=headers)
    if response.status_code == requests.codes.ok:
        #print(response)
        html = response.text
        #print(html)   #打印网页源码
        model = re.compile(r'.*?class=\"show-dialog\"\shref=\"(.*?)\".*?', re.S)   #下载链接
        lins = model.findall(html)
        banben = re.compile(r'.*?class=\"list_app_info\">\s\s(.*?)<.*?', re.S)    #版本号
        banbenhao = banben.findall(html)
        name_reg = '<p class="detail_app_title">(.*?)<'   #name
        name = re.findall(name_reg, html)[0]
        #print(name)
        baozengze = re.compile(r'.*?pn=(.*?)&.*?', re.S)   #bao
        bao = baozengze.findall(lins[0])
        a = name+'-'+bao[0]+'-'+banbenhao[0]

        return lins[0], a
    else:
        pass



# def jianchagengxin():
#     filePath = 'D:\\Desktop\\10H'
#     yiyou = os.listdir(filePath)
#     print(yiyou[0])

def dwlod(apk,url,name):
    model = re.compile(r'.*?id=(.*?)\&h=(.*?)\&from.*?', re.S)
    zifu = model.findall(url)
    cookies = {
        'SESSID': '11c0-6388b114e307b-1669902612-9264',
        'Hm_lvt_7132d8577cc4aa4ae4ee939cd42eb02b': '1669902613',
        'uid': '3349387',
        'username': '%E5%B0%8F%E7%AC%A8%E8%9B%8B11',
        'token': '416fd271k3E1gMMTpcEBjQQeYfrVulKIR-rHxQhFiJKIkA4jw8kXvLdWVNfF5NYOWFRSvChvB55kBPMRFS-R_JiJvp7O5oJifRTDaX1iZGCMPBcmLHShWaOmVcLycrdTfp4F1OX-572fTU8r5xY2zfrnF0S-mIQw1Kt3m5hQQw8YwLDr9R-4Nt9zOj9CjAN4XQbNsMR6BxW7Lbvmj_6mj55-y5HoRg',
        'forward': 'https%3A%2F%2Fdeveloper.coolapk.com%2F',
        'Hm_lpvt_7132d8577cc4aa4ae4ee939cd42eb02b': '1669943400',
    }

    headers = {
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
        'Accept-Language': 'zh-CN,zh;q=0.9',
        'Cache-Control': 'max-age=0',
        'Connection': 'keep-alive',
        # Requests sorts cookies= alphabetically
        # 'Cookie': 'SESSID=11c0-6388b114e307b-1669902612-9264; Hm_lvt_7132d8577cc4aa4ae4ee939cd42eb02b=1669902613; uid=3349387; username=%E5%B0%8F%E7%AC%A8%E8%9B%8B11; token=416fd271k3E1gMMTpcEBjQQeYfrVulKIR-rHxQhFiJKIkA4jw8kXvLdWVNfF5NYOWFRSvChvB55kBPMRFS-R_JiJvp7O5oJifRTDaX1iZGCMPBcmLHShWaOmVcLycrdTfp4F1OX-572fTU8r5xY2zfrnF0S-mIQw1Kt3m5hQQw8YwLDr9R-4Nt9zOj9CjAN4XQbNsMR6BxW7Lbvmj_6mj55-y5HoRg; forward=https%3A%2F%2Fdeveloper.coolapk.com%2F; Hm_lpvt_7132d8577cc4aa4ae4ee939cd42eb02b=1669943400',
        'Referer': 'https://www.coolapk.com/apk',
        'Sec-Fetch-Dest': 'document',
        'Sec-Fetch-Mode': 'navigate',
        'Sec-Fetch-Site': 'same-origin',
        'Sec-Fetch-User': '?1',
        'Upgrade-Insecure-Requests': '1',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36',
        'sec-ch-ua': '"Google Chrome";v="107", "Chromium";v="107", "Not=A?Brand";v="24"',
        'sec-ch-ua-mobile': '?0',
        'sec-ch-ua-platform': '"Windows"',
    }
    params = {
        'pn':apk,
        'id':zifu[0][0],
        'h': zifu[0][1],
        'from': 'click',
    }

    response1 = requests.get('https://dl.coolapk.com/down', params=params, cookies=cookies, headers=headers)
    #print(response1)
    #下载可用
    # with open("com.jingdong.app.apk", "wb") as code:
    #     code.write(response1.content)

    total_length = int(response1.headers.get('content-length'))
    path = name_path+"\\"+name
    with open(path, "wb") as pypkg:
        for chunk in progress.bar(response1.iter_content(chunk_size=1024), expected_size=(total_length/1024) + 1, width=100):
            if chunk:
                pypkg.write(chunk)


def huoquwenjianping():

    yiyou = os.listdir(name_path)   #文件夹中的应用
    a = 0

    for line in open("./待下载应用包.txt","r"): #设置文件对象并读取每一行文件
        if line in ['\n', '\r\n']:
            # doing something
            pass
        else:
            applist.append(line.strip('\n'))
    # applist = ['com.autonavi.minimap', 'com.ss.android.article.news', 'com.kugou.android', 'com.baidu.BaiduMap',
    #            'cn.wps.moffice_eng', 'com.xiaomi.smarthome', 'com.xiaomi.shop', 'com.xiaomi.jr',
    #            'com.xunmeng.pinduoduo', 'com.duokan.reader']
#    for a in applist:
#     for i in yiyou:
#         if i in applist:
    for i in applist:
        try:
            a = download(i)[1]
        except Exception:
            pass
        #print(namelist)
  #  for a in namelist:
        name = str(a)+'.apk'
        #print(name)
        if name in yiyou:
            pass
            print("<"+name.split('-')[-3]+">已是最新版本,无需更新!")
            print()
        else:
            xin = 0
            try:
                xin = name.split('-')[-3]
            except Exception:
                print("<"+i+">这可能不是个包名,请检查包名是否正确!(也有可能是网站没有该应用)")
                continue

            print("<"+str(xin) + ">需要更新!新版本为"+a.split('-')[-1])
            for de in yiyou:
                try:
                    jiu = de.split('-')[-3]
                    if xin == jiu:
                        delname = name_path + "\\" + de
                        os.remove(delname)
                except Exception:
                    pass
            name_reg = a.split('-')[-2]
            print('正在下载<' + name.split('-')[-3]+">")
            try:
                dwlod(name_reg, download(name_reg)[0], name)
            except Exception:
                print("酷安网站没有这个应用,正在从应用宝获取应用数据")
                try:
                    YYBjiansuo=YYB_jiansuo(name_reg)
                #print(YYBjiansuo)
                    print('正在下载<' + name.split('-')[-3]+">")

                    YYB_dload(YYBjiansuo[0],YYBjiansuo[1])
                except Exception:
                    print("<"+name.split('-')[-3]+">下载出错,可能是网站没有这个应用!或者包名错误!请检查网站是否有这个应用或包名是否正确")
                    pass
            print()
if __name__ == '__main__':
    # zz = 'com.tencent.mm'
    # print(download(zz)[1])
    YYBjiansuo = []
    applist = []
    print("-------------------将需要下载的app包名放在同目录的<待下载应用包.txt>文件中-------------------")
    print("此程序分为两种模式,请选择一种:")
    print("A、间隔执行(一次执行完毕等待X秒后继续执行)")
    print("B、定时执行(固定每天一个时间点执行)")
    print("----------------------------------------")
    moshi = input("请输入您想要的模式:")
    if moshi == 'A':
        jiangeshijian = int(input("请输入间隔更新的时间,以秒为单位:"))
        name_path = input(r"请输入要存放的app路径:")
        while True:
                huoquwenjianping()
                time.sleep(jiangeshijian)
    elif moshi == 'B':
        B = str(input("请输入每天开始执行时间,24小时制,如:22:00,08:30):"))
        try:
            h = B.split(':')[-2]
        except IndexError:
            h = B.split(':')[-2]
        try:
            m = B.split(':')[-1]
        except IndexError:
            m = B.split(':')[-1]
        #print("h:"+h+"m:"+m)
        name_path = input(r"请输入要存放的app路径:")
        # print("输入的H:" + str(h) + "输入的M:" + m)
        # print(type(h))
        # print(type(m))
        while True:
            now = datetime.datetime.now()
            # print("H:"+now.strftime('%H')+"M:"+now.strftime('%M'))
            if now.strftime('%H') == h and now.strftime('%M') == m:

                huoquwenjianping()

            time.sleep(50)
    else:
        print("输入有误!!")




# url = lins[0]
# myfile = requests.get(url)
# open('D:/1/com.tencent.mm.apk','wb').write(myfile.content)
# import requests
#
# file_url = lins[0]
# headers11 = {
#     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
# }
# r = requests.get(file_url, stream=True,headers=headers11)
# print(r)
# with open("python.APK", "wb") as pdf:
#     for chunk in r.iter_content(chunk_size=1024):
#         if chunk:
#             pdf.write(chunk)


# user_agent_list = [
#         "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 "
#         "(KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1",
#         "Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 "
#         "(KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",
#         "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 "
#         "(KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",
#         "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 "
#         "(KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",
#         "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 "
#         "(KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1",
#         "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 "
#         "(KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5",
#         "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 "
#         "(KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5",
#         "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 "
#         "(KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
#         "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 "
#         "(KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
#         "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_0) AppleWebKit/536.3 "
#         "(KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
#         "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 "
#         "(KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
#         "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 "
#         "(KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
#         "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 "
#         "(KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
#         "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 "
#         "(KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
#         "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 "
#         "(KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
#         "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 "
#         "(KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3",
#         "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 "
#         "(KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",
#         "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 "
#         "(KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"
#     ]
# url = lins[0]
# filename = "mm.apk"
# try:
#     opener = urllib.request.build_opener()
#     #opener.addheaders = [('User-Agent','Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30')]
#     opener.addheaders = [('User-Agent',random.choice(user_agent_list))]
#     urllib.request.install_opener(opener)
#     urllib.request.urlretrieve(url,filename)
# except urllib.request.ContentTooShortError:
#     print( 'Network conditions is not good.Reloading.')
#     auto_down(url,filename)
# except urllib.error.HTTPError:
#     print(str(urllib.error.HTTPError))
# except:
#     auto_down(url,filename)
#     print("sssssss oh ssssssss")




# os.system('adb shell pm list packages -3 > ./aa.txt')
# book = xlwt.Workbook(encoding='utf-8') #创建Workbook,相当于创建Excel
#
#     # 创建sheet,Sheet1为表的名字,cell_overwrite_ok为是否覆盖单元格
# sheet1 = book.add_sheet(u'Sheet1', cell_overwrite_ok=True)
#
# data = []
# for line in open("./aa.txt","r"): #设置文件对象并读取每一行文件
#     lin = re.compile(r'package:(.*?)\n',re.S)
#     data.append(lin.findall(line))
#
# a=0
# while a<len(data):
#     sheet1.write(a,0,data[a][0])
#     a += 1
# savepath = './excel表格.xls'
# book.save(savepath)
#
#
# headers = {
#     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36 Edg/93.0.961.47',
#     'Referer': 'https://cn.bing.com/',
# }
#
#
# b=0
# print(data[1][0])
# while b<len(data):
#     url = "https://app.mi.com/details?id=" + data[b][0]
#     print(url)
#     wbdata = requests.get(url=url, headers=headers)
#     html = wbdata.text
#     model = re.compile(r'.*?<h3 style="margin-top: 18px">(.*?)<.*?', re.S)
#     lins = model.findall(html)
#     print(lins)
#     if wbdata.status_code == 200:
#
#         if len(lins):
#             print(lins[0])
#             sheet1.write(b, 1, lins)
#         else:
#             sheet1.write(b, 1, '应用商城无该应用')
#             print("无")
#
#     else:
#         print("200")
#     b+=1
# savepath = './excel表格.xls'
# book.save(savepath)
# os.system('del aa.txt')
# response=urllib.request.urlopen(url)
# html_content=response.read()
# print(html_content)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值