用 Python 人脸识别,选抖音上好看的小姐姐

1024程序员把妹技术,利用 Python & ADB & 人脸识别实现自动给抖音漂亮小姐姐视频点赞 这只爬虫做了些什么事儿呢? 通过 ADB 控制你的手机,帮你自动刷抖音调用百度人脸识别的接口,给视频画面中出现的小姐姐打分自动给颜值 70 以上的小姐姐的视频点赞 有趣的是,根据抖音的推荐算法,连着刷几天之后,抖音里给你推荐的全是漂亮小姐姐了。 很多人学习python,不知道从何学起。 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。 很多已经做案例的人,却不知道如何去学习更加高深的知识。 那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的. 阅读详情

点击“开发者技术前线”,选择“星标”?

在看|星标|留言,  真爱


640?wx_fmt=jpeg

1

目 标 场 景



相信大家平时刷抖音短视频的时候,看到颜值高的小姐姐,都有随手点赞关注的习惯。


如果一条条去刷确实很耗时间,如果 Python 能帮忙筛选出颜值高的小姐姐那就省了很多事。


本篇文章是借助「百度人脸识别」API,帮我们识别出抖音上颜值高的小姐姐,然后下载到手机相册中。



2

准 备 工 作



首先,项目需要对页面元素进行一些精准的操作,需要提前准备一部 Android 设备,激活开发者选项,并在开发者选项中打开 「USB 调试和指针位置」两处设置。


为了确保 adb 命令能正常使用,需要提前配置好 adb 开发环境。


页面元素中的部分元素没法利用 name 等常用属性获取到,可能需要获取到完整的「UI 树」,再利用 Airtest 判断是否存在某个 UI 元素。




 
# 安装依赖	
pip3 install pocoui



另外,项目中会对视频进行人脸识别,获取到出现的所有人脸,再进行性别识别及颜值判断。


这里需要进行百度云后台,注册一个人脸识别的应用,获取到一组 「API Key 和 Secret Key」值。

https://console.bce.baidu.com


640?wx_fmt=png


然后利用官网提供的 API 文档即可获取到「access token」,由于 ak 的有效期为一个月,所以只需要初始化一次,后面就可以利用人脸识别接口进行正常的识别了。




 
appid = '你注册应用的appid'api_key = '你注册应用的ak'secret_key = '你注册应用的sk'def get_access_token():    """     其关access_token有效期一般有一个月    """    # 此变量赋值成自己API Key的值    client_id = api_key      # 此变量赋值成自己Secret Key的值    client_secret = secret_key      auth_url = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + client_id + '&client_secret=' + client_secret    header_dict = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko',                   "Content-Type": "application/json"}    # 请求获取到token的接口    response_at = requests.get(auth_url, headers=header_dict)    json_result = json.loads(response_at.text)    access_token = json_result['access_token']    return access_token
api_key = '你注册应用的ak'
secret_key = '你注册应用的sk'

def get_access_token():
    """
     其关access_token有效期一般有一个月
    """

    # 此变量赋值成自己API Key的值
    client_id = api_key  

    # 此变量赋值成自己Secret Key的值
    client_secret = secret_key  

    auth_url = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + client_id + '&client_secret=' + client_secret

    header_dict = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko',
                   "Content-Type": "application/json"}

    # 请求获取到token的接口
    response_at = requests.get(auth_url, headers=header_dict)
    json_result = json.loads(response_at.text)
    access_token = json_result['access_token']
    return access_token




3

编  写  脚  本



在上面已经配置好了 adb 环境的情况下,可以直接借助 python 中的 os 模块执行 adb 命令打开抖音 App。




 
# 抖音App的应用包名和初始Activitypackage_name = 'com.ss.android.ugc.aweme'activity_name = 'com.ss.android.ugc.aweme.splash.SplashActivity'	
def start_my_app(package_name, activity_name):    """    打开应用    adb shell am start -n com.tencent.mm/.ui.LauncherUI    :param package_name:    :return:    """    os.popen('adb shell am start -n %s/%s' % (package_name, activity_name))
    """
    打开应用
    adb shell am start -n com.tencent.mm/.ui.LauncherUI
    :param package_name:
    :return:
    """

    os.popen('adb shell am start -n %s/%s' % (package_name, activity_name))



接着,我们需要截取当前播放视频的截图到本地。


需要注意的是,抖音视频播放界面包含视频创作者头像、BGM 创作者头像等一些杂乱的元素,可能对人脸识别的结果产生一些误差,所以需要对屏幕截图之后的图像进行「二次裁剪」处理。




 
def get_screen_shot_part_img(image_name):    """    获取手机截图的部分内容    :return:    """    # 截图    os.system("adb shell /system/bin/screencap -p /sdcard/screenshot.jpg")    os.system("adb pull /sdcard/screenshot.jpg %s" % image_name)    # 打开图片    img = Image.open(image_name).convert('RGB')    # 图片的原宽、高(1080*2160)    w, h = img.size    # 截取部分,去掉其头像、其他内容杂乱元素    img = img.crop((0, 0, 900, 1500))    img.thumbnail((int(w / 1.5), int(h / 1.5)))    # 保存到本地    img.save(image_name)    return image_name
    """
    获取手机截图的部分内容
    :return:
    """

    # 截图
    os.system("adb shell /system/bin/screencap -p /sdcard/screenshot.jpg")
    os.system("adb pull /sdcard/screenshot.jpg %s" % image_name)

    # 打开图片
    img = Image.open(image_name).convert('RGB')

    # 图片的原宽、高(1080*2160)
    w, h = img.size

    # 截取部分,去掉其头像、其他内容杂乱元素
    img = img.crop((0, 0, 900, 1500))

    img.thumbnail((int(w / 1.5), int(h / 1.5)))

    # 保存到本地
    img.save(image_name)

    return image_name



现在可以使用百度提供的 API 获取到上面截图的人脸列表。




 
def parse_face_pic(pic_url, pic_type, access_token):    """    人脸识别    5秒之内    :param pic_url:    :param pic_type:    :param access_token:    :return:    """    url_fi = 'https://aip.baidubce.com/rest/2.0/face/v3/detect?access_token=' + access_token    # 调用identify_faces,获取人脸列表    json_faces = identify_faces(pic_url, pic_type, url_fi)    if not json_faces:        print('未识别到人脸')        return None    else:        # 返回所有的人脸        return json_faces
    """
    人脸识别
    5秒之内
    :param pic_url:
    :param pic_type:
    :param access_token:
    :return:
    """

    url_fi = 'https://aip.baidubce.com/rest/2.0/face/v3/detect?access_token=' + access_token

    # 调用identify_faces,获取人脸列表
    json_faces = identify_faces(pic_url, pic_type, url_fi)

    if not json_faces:
        print('未识别到人脸')
        return None
    else:
        # 返回所有的人脸
        return json_faces



从上述的人脸列表中筛选出性别为女,年龄为 18-30 岁之间,颜值超过 70 的小姐姐。




 
def analysis_face(face_list):    """    分析人脸,判断颜值是否达标    18-30之间,女,颜值大于80    :param face_list:识别的脸的列表    :return:    """    # 是否能找到高颜值的美女    find_belle = False    if face_list:        print('一共识别到%d张人脸,下面开始识别是否有美女~' % len(face_list))        for face in face_list:            # 判断是男、女            if face['gender']['type'] == 'female':                age = face['age']                beauty = face['beauty']                if 18 <= age <= 30 and beauty >= 70:                    print('颜值为:%d,及格,满足条件!' % beauty)                    find_belle = True                    break                else:                    print('颜值为:%d,不及格,继续~' % beauty)                    continue            else:                print('性别为男,继续~')                continue    else:        print('图片中没有发现人脸.')    return find_belle
    """
    分析人脸,判断颜值是否达标
    18-30之间,女,颜值大于80
    :param face_list:识别的脸的列表
    :return:
    """

    # 是否能找到高颜值的美女
    find_belle = False
    if face_list:
        print('一共识别到%d张人脸,下面开始识别是否有美女~' % len(face_list))
        for face in face_list:
            # 判断是男、女
            if face['gender']['type'] == 'female':
                age = face['age']
                beauty = face['beauty']

                if 18 <= age <= 30 and beauty >= 70:
                    print('颜值为:%d,及格,满足条件!' % beauty)
                    find_belle = True
                    break
                else:
                    print('颜值为:%d,不及格,继续~' % beauty)
                    continue
            else:
                print('性别为男,继续~')
                continue
    else:
        print('图片中没有发现人脸.')

    return find_belle



由于视频是连续播放的,很难通过截取视频某一帧,判断视频有出现颜值高的小姐姐。


另外,大部分短视频播放时长为「10s+」,这里需要对每一个视频多次截图去做人脸识别,直到识别到颜值高的小姐姐。




 
# 一条视频最长的识别时间	
RECOGNITE_TOTAL_TIME = 10 	
# 识别次数recognite_count = 1# 对当前视频截图去人脸识别while True:  # 获取截图  print('开始第%d次截图' % recognite_count)  # 截取屏幕有用的区域,过滤视频作者的头像、BGM作者的头像  screen_name = get_screen_shot_part_img('images/temp%d.jpg' % recognite_count)  # 人脸识别  recognite_result = analysis_face(parse_face_pic(screen_name, TYPE_IMAGE_LOCAL, access_token))  recognite_count += 1  # 第n次识别结束后的时间  recognite_time_end = datetime.now()  # 这一条视频出现了颜值高的小姐姐  if recognite_result:         pass  else:         print('超时!!!这是一条没有吸引力的视频!')         # 跳出里层循环         break
recognite_count = 1

# 对当前视频截图去人脸识别
while True:
  # 获取截图
  print('开始第%d次截图' % recognite_count)

  # 截取屏幕有用的区域,过滤视频作者的头像、BGM作者的头像
  screen_name = get_screen_shot_part_img('images/temp%d.jpg' % recognite_count)

  # 人脸识别
  recognite_result = analysis_face(parse_face_pic(screen_name, TYPE_IMAGE_LOCAL, access_token))

  recognite_count += 1

  # 第n次识别结束后的时间
  recognite_time_end = datetime.now()

  # 这一条视频出现了颜值高的小姐姐
  if recognite_result:
         pass
  else:
         print('超时!!!这是一条没有吸引力的视频!')
         # 跳出里层循环
         break



一旦当前播放的视频识别出有颜值高的小姐姐,就需要模拟保存视频到本地的操作。


640?wx_fmt=png


获取「分享」和「保存本地」两个按钮的坐标位置,依次利用 adb 执行点击操作即可下载视频到本地。




 
def save_video_met():    """    :return:    """    # 分享    os.system("adb shell input tap 1000 1500")    time.sleep(0.05)    # 保存到本地    os.system("adb shell input tap 350 1700")
    """
    :return:
    """

    # 分享
    os.system("adb shell input tap 1000 1500")
    time.sleep(0.05)

    # 保存到本地
    os.system("adb shell input tap 350 1700")



另外,由于下载视频的过程是一个耗时操作,在下载进度对话框还未消失之前,需要做一个「模拟等待」的操作。




 
def wait_for_download_finished(poco):    """    从点击下载,到下载完全    :return:    """    element = Element()    while True:        # 由于是对话框,不能利用Element类来判断是否存在某个元素来准确处理        # element_result = element.findElementByName('正在保存到本地')        # 当前页面UI树元素信息        # 注意:保存的时候可能会获取元素异常,这里需要抛出,并终止循环        # com.netease.open.libpoco.sdk.exceptions.NodeHasBeenRemovedException: Node was no longer alive when query attribute "visible". Please re-select.        try:            ui_tree_content = json.dumps(poco.agent.hierarchy.dump(), indent=4).encode('utf-8').decode('unicode_escape')        except Exception as e:            print(e)            print('异常,按下载处理~')            break        if '正在保存到本地' in ui_tree_content:            print('还在下载中~')            time.sleep(0.5)            continue        else:            print('下载完成~')            break
    """
    从点击下载,到下载完全
    :return:
    """


    element = Element()
    while True:
        # 由于是对话框,不能利用Element类来判断是否存在某个元素来准确处理
        # element_result = element.findElementByName('正在保存到本地')

        # 当前页面UI树元素信息
        # 注意:保存的时候可能会获取元素异常,这里需要抛出,并终止循环
        # com.netease.open.libpoco.sdk.exceptions.NodeHasBeenRemovedException: Node was no longer alive when query attribute "visible". Please re-select.
        try:
            ui_tree_content = json.dumps(poco.agent.hierarchy.dump(), indent=4).encode('utf-8').decode('unicode_escape')
        except Exception as e:
            print(e)
            print('异常,按下载处理~')
            break

        if '正在保存到本地' in ui_tree_content:
            print('还在下载中~')
            time.sleep(0.5)
            continue
        else:
            print('下载完成~')
            break



在视频保存到本地之后,就可以模拟向上滑动的操作,跳到播放「下一条视频」。


循环上面的操作,即可筛选出所有颜值高的小姐姐,并保存到本地。




 
def play_next_video():    """    下一个视频    从下往上滑动    :return:    """    os.system("adb shell input swipe 540 1300 540 500 100")
    """
    下一个视频
    从下往上滑动
    :return:
    """

    os.system("adb shell input swipe 540 1300 540 500 100")



在脚本一条条刷视频的过程中,可能会遇到一下广告,我们需要对这类视频进行过滤。




 
def is_a_ad():    """    判断的当前页面上是否是一条广告    :return:    """    element = Element()    ad_tips = ['去玩一下', '去体验', '立即下载']    find_result = False    for ad_tip in ad_tips:        try:            element_result = element.findElementByName(ad_tip)            # 是一条广告,直接跳出            find_result = True            break        except Exception as e:            find_result = False    return find_result
    """
    判断的当前页面上是否是一条广告
    :return:
    """

    element = Element()
    ad_tips = ['去玩一下', '去体验', '立即下载']

    find_result = False

    for ad_tip in ad_tips:
        try:
            element_result = element.findElementByName(ad_tip)
            # 是一条广告,直接跳出
            find_result = True
            break
        except Exception as e:
            find_result = False

    return find_result




4

结 果 结 论



运行上面的脚本,会自动打开抖音,对每一条小视频多次进行人脸识别,直到识别到颜值高的小姐姐,保存视频到本地,然后继续刷下一条短视频。


640?wx_fmt=png


我已经将全部源码上传到后台上,公众号回复「 好看的小姐姐 」即可获得。

后台回复 交流群,进入公众号的交流群, 作者 :新安果,喜欢就可以关注。

640?wx_fmt=jpeg

--end--

选择”开发者技术前线 “星标?,内容一触即达。

开发者技术前线 汇集技术前线快讯和关注行业趋势,大厂干货,是开发者经历和成长的优秀指南。

历史推荐


为什么 Python 4.0 不会像 3.0 一样?

Java 12 / JDK 12 正式发布,看看有哪些新特性

美团基于跨平台 Flutter 的动态化平台建设

640?

点个在看,解锁更多惊喜

如何用python在抖音进行筛选 相信大家平时刷抖音短视频的时候,看到颜值高的小姐姐,都有随手点赞关注的习惯。 如果一条条去刷确实很耗时间,如果 Python 能帮忙筛选出颜值高的小姐姐那就省了很多事。 本篇文章是借助「百度人脸识别」API,帮我们识别出抖音上颜值高的小姐姐,然后下载到手机相册中。 2 准 备 工 作 首先,项目需要对页面元素进行一些精准的操作,需要提前准备一部 Android 设备,激活开发者选项,并在开发者选项... 阅读详情

相关推荐

给大家做了一个Python 抖音机器人,可以在抖音上直接找到漂亮集美 ǃ

如何在抖音上找到漂亮小姐姐----抖音机器人 最近沉迷于抖音无法自拔,常常花好几个小时在抖音漂亮小姐姐身上。 为了高效、直接地找到漂亮小姐姐,我用 Python + ADB 做了一个 Python 抖音机器人 Douyin-Bot。 特性 [x] 自动翻页 [x] 颜值检测 [x] 人脸识别 [x] 自动点赞 [x] 自动关注 [x] 随机防 Ban [ ] 自动回复 原理 打开《抖音短视频》APP,进入主界面 获取手机截图,并对截图进行压缩 (Size < 1MB); 请求 人脸识别 API

m0_58478449的博客 2728

# 随机小姐姐API短视频引流源码

夏柔一时兴起,昨晚连夜通宵搞定了这个源码~接口地址: 若干返回格式: mp4请求方式: GET请求示例: http://tucdn.wpon.cn/api-girl/index.php?wpon=302请求示例(专线 新线路v1):https://v.api.aa1.cn/api/api-girl-11-02/index.php?type=json请求示例(专线 新线路v2): https://ml.v2.api.aa1.cn/girl-11-02/v2.php?wpon=302。

YSP050310的博客 8014

随机漂亮的小姐姐短视频网站源码

随机漂亮的小姐姐短视频网站源码 接口都是来自短视频的搞笑素材,感兴趣的可以学习~ 多种分类,都是无水印短视频,支持下载 喜欢搬家视频的用户的福利!

API接口:获取歌曲、小姐姐图片以及视频

过程很难但也很有成就感,有问题在网上基本上都能找得到,只不过需要一个一个去试。网站正在开发中,以后会与大家见面,请再等等哦!如果你有什么问题的话也可以联系我。wx:abc2649543732

m0_62476845的博客 3341

随机抖音快手小姐姐网页源码

可以随机播放抖音快手小姐姐视频的网页源码 .

美女网站源码/随机小姐姐视频api接口/随机小姐姐视频api源码【带后台运营版】

美女网站源码/随机小姐姐视频api接口/随机小姐姐视频api源码【带后台运营版】 效果演示:mzfoxconnwww.seoheimao.cn 破影随机美女短视频 – 带后台运营版 这是一款破影随机美女短视频,这款是带有后台的版本,这款前台可注册登录,并且可记录观看记录和收藏记录,以及评论功能,UI太ai了这套,不过有技术的可以二开一下,喜欢的自行部署吧!

抖音上好看的小姐姐,Python给你都下载了

阅读文本大概需要 15 分钟。1目 标 场 景相信大家平时刷抖音短视频的时候,看到颜值高的小姐姐,都有随手点赞关注的习惯。如果一条条去刷确实很耗时间,如果 Python ...

涛哥聊Python 2万+

随机小姐姐源码自带API可自己更换

随机小姐姐源码。自带API,可做引流

用Python自动给抖音漂亮小姐姐视频点赞!

先来看看这只爬虫做了些什么事儿呢?1、通过 ADB 控制你的手机,帮你自动刷抖音2、调用百度人脸识别的接口,给视频画面中出现的小姐姐打分有趣的是,根据抖音的推荐算法,连着刷几天之后,抖音里给你推荐的全是漂亮小姐姐了。成果展示先演示一下效果。连接手机(手机要允许ADB调试),运行爬虫程序,程序会自动打开抖音APP,自动寻找漂亮的小姐姐啦。有趣的是,根据抖音的推荐算法,连着刷几天之后,抖音里给你推荐的全是漂亮小姐姐了。

2401_85428892的博客 1548

【AI气象6】Skilful nowcasting of extreme precipitation with NowcastNet

极端降水是气象灾害的重要因素,因此迫切需要通过高分辨率、长时间预报和局部细节的精准短期预报来减轻其社会经济影响。当前的方法存在模糊、衰减、强度或位置误差,基于物理的数值方法在捕捉关键的混沌动态(如对流起始)时面临挑战,而数据驱动的学习方法则未能遵循内在的物理法则(如平流守恒)。我们提出了 NowcastNet,这是一种针对极端降水的非线性短期预报模型,将物理演变方案与条件学习方法统一到一个端到端的神经网络框架中,通过优化预测误差进行训练。基于来自美国和中国的雷达观测数据,我们的模型能够生成物理上合理的降水短

weixin_51473374的博客 2324

一键转换B站M4S缓存为MP4:无需FFMPEG命令的简易工具

本文介绍了一款专为B站用户设计的绿色工具,可将缓存的M4S视频和音频文件一键转换为通用MP4格式。该工具完全图形化操作,无需学习复杂的FFmpeg命令,解决了普通用户处理B站缓存视频的痛点。文章详细讲解了从下载、配置到转换的完整流程,并提供了常见问题排查与安全使用建议,帮助用户高效、安全地管理离线视频内容。

joy55的博客 480

Python网络爬虫实战:利用 Python & ADB & 人脸识别实现自动给抖音漂亮小姐姐视频点赞

这只爬虫做了些什么事儿呢? 通过 ADB 控制你的手机,帮你自动刷抖音 调用百度人脸识别的接口,给视频画面中出现的小姐姐打分 自动给颜值 70 以上的小姐姐的视频点赞 有趣的是,根据抖音的推荐算法,连着刷几天之后,抖音里给你推荐的全是漂亮小姐姐了。 0. 成果展示 先演示一下效果。 连接手机(手机要允许ADB调试),运行爬虫程序,程序会自动打开抖音APP,自动寻找漂亮的小姐姐...

亮出锋芒,剑指苍穹 4249

C#串口通讯实战:如何用SerialPort类搞定工业传感器数据采集(附完整代码)

本文详细介绍了如何使用C#的SerialPort类实现工业级传感器数据采集,涵盖串口通讯基础配置、数据帧处理、异常恢复机制及性能优化策略。通过实战代码示例,帮助开发者构建稳定可靠的工业数据采集系统,特别适合需要处理高频数据采集和复杂工业环境的场景。

weixin_42525551的博客 1086

Python已为你打包抖音上所有好看的小姐姐

阅读文本大概需要 15 分钟。 1 目 标 场 景 相信大家平时刷抖音短视频的时候,看到颜值高的小姐姐,都有随手点赞关注的习惯。 如果一条条去刷确实很耗时间,如果 Python 能帮忙筛选出颜值高的小姐姐那就省了很多事。 本篇文章是借助「百度人脸识别」API,帮我们识别出抖音上颜值高的小姐姐,然后下载到手机相册中。 2 准 备 工 作 首先,项目需要...

478

Postman调试海康ISAPI接口全记录:从鉴权失败到成功修改设备名的踩坑指南

本文详细记录了使用Postman调试海康ISAPI接口的全过程,从鉴权失败到成功修改设备名的实战经验。涵盖Digest认证机制、XML请求体构造、常见错误排查及代码实现过渡,帮助开发者高效解决海康设备集成中的各种问题。

weixin_42620913的博客 661

PCB仿真软件:Altium Designer_(6).PCB布线设计:自动布线与手工布线

通过以上步骤,我们完成了一个简单的PCB设计案例。在这个过程中,我们使用了自动布线和手工布线的综合策略,确保布线质量符合设计要求。创建PCB项目:在Altium Designer中创建一个新的PCB项目。导入原理图:将原理图文件导入到PCB项目中。设置布线规则:通过设置必要的布线规则,如线宽、间距等。启动自动布线:使用自动布线器进行初步布线。手工优化布线:通过手工布线工具优化关键信号的布线路径。保存和导出PCB文件:保存PCB文件并导出Gerber文件,用于生产。

kkchenjj的博客 2522

教你如何用Python自动下载抖音好看小姐姐,有对象的同学小心尝试!

阅读文本大概需要 15 分钟。1目 标 场 景相信大家平时刷抖音短视频的时候,看到颜值高的小姐姐,都有随手点赞关注的习惯。如果一条条去刷确实很耗时间,如果 Python ...

Python之禅的专栏 1004

chembl_webresource_client 包数据接口下载chembl数据库;ZINC数据库下载、simles获取

点击进去https://zinc.docking.org/subclasses/kinase/predictions/,然后下载sdf模式,这里可以转化simles格式,如果下载csv里面没有包含simles。参考:https://github.com/chembl/chembl_webresource_client/blob/master/demo_wrc.ipynb。参考:https://zinc.docking.org/这是网页搜索查看,16条数据。这个数据这下载特别慢。

weixin_42357472的博客 3051
上一篇: Flutter 1.7 正式发布,新特性神了!
下一篇: 北漂四年, 25K的我依然没有女朋友!
DevolperFront
博客等级 码龄8年 465粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值