吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5147|回复: 40
收起左侧

[Python 转载] Python 抖音某人更新推送给钉钉(可用作云函数)

   关闭 [复制链接]
封心棒棒糖 发表于 2022-4-10 22:40
本帖最后由 封心棒棒糖 于 2022-4-10 22:42 编辑

[Python] 纯文本查看 复制代码
import base64
import datetime
import hashlib
import hmac
import json
import re
import time
import urllib

import requests

# 抖音用户 主页链接
douyin_home_page = 'https://v.douyin.com/****/'

headers_douyin = {
    "user-agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) "
                  "Chrome/89.0.4389.114 Mobile Safari/537.36 "
}

headers_DingDing = {
    'Content-Type': 'application/json;charset=utf-8'
}


def get_sec_uid():
    short_url = re.findall('[a-z]+://[\S]+', douyin_home_page, re.I | re.M)[0]
    start_page = requests.get(url=short_url, headers=headers_douyin, allow_redirects=False)
    location = start_page.headers['location']
    sec_uid = re.findall('(?<=sec_uid=)[a-z,A-Z,0-9, _, -]+', location, re.M | re.I)[0]
    return sec_uid


def get_user_info(sec_uid):
    userinfo = requests.get(url='https://www.iesdouyin.com/web/api/v2/user/info/?sec_uid={}'.format(sec_uid),
                            headers=headers_douyin).json()
    name = userinfo['user_info']['nickname']
    print(userinfo)
    print(name)


def get_video_list(shape_id):
    """
    根据sec_uid 获取出置顶外 第一个视频 count=1
    """
    sign_ = "HunHKQABfpAtN81GL5ujHx7pvd"
    url = f"https://www.iesdouyin.com/web/api/v2/aweme/post/?sec_uid={shape_id}&count=1&max_cursor=0&aid=1128&_signature={sign_}"
    resp = requests.get(url)
    resp_result = resp.json()
    return resp_result['aweme_list']


def get_video_detail(aweme_id):
    """
    根据id 获取单个视频明细
    """
    url = 'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=' + aweme_id
    r = requests.get(url=url, headers=headers_douyin).json()
    return r


def timeStamp(timeStamp):
    timeArray = time.localtime(timeStamp)
    otherStyleTime = time.strftime("%Y%m%d %H:%M:%S", timeArray)
    return otherStyleTime


def get_notice_text():
    vide_list = get_video_list(get_sec_uid())
    if len(vide_list) > 0:
        aweme_id = vide_list[0]['aweme_id']
        print(aweme_id)
        video_detail = get_video_detail(aweme_id)
        print(video_detail)
        # 发表时间
        create_time = video_detail['item_list'][0]['create_time']
        # 文本内容
        desc = video_detail['item_list'][0]['desc']
        # 视频url
        video_url = video_detail['item_list'][0]['video']['play_addr']['url_list'][0]
        cover = video_detail['item_list'][0]['video']['cover']['url_list'][0]
        created_at_time = datetime.datetime.strptime(timeStamp(create_time), '%Y%m%d %H:%M:%S')
        now_time = datetime.datetime.now() + datetime.timedelta(hours=8)
        if (now_time - created_at_time).total_seconds() <= 1800:
            noticeDouyinDing(timeStamp(create_time), desc, video_url, cover)


def noticeDouyinDing(create_time, text, url, cover):
    """
    通知钉钉
    """
    timestamp = str(round(time.time() * 1000))
    # 自己的密钥(群聊创建机器人 才有)
    secret = '*********'
    # 自己的token (群聊创建机器人 才有)
    access_token = '******************'
    secret_enc = secret.encode('utf-8')
    string_to_sign = '{}\n{}'.format(timestamp, secret)
    string_to_sign_enc = string_to_sign.encode('utf-8')
    hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
    sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))
    api_url = "https://oapi.dingtalk.com/robot/send?access_token=" + access_token + "×tamp=" + timestamp + "&sign=" + sign
    data_dict = {
        "msgtype": "actionCard",
        "actionCard": {
            "title": "抖音通知",
            "text": "![cover](" + cover + ") 发表时间: " + create_time + "\n\n>" + text,
            "btnOrientation": "0",
            "singleTitle": "点击进入",
            "singleURL": url
        }
    }
    r = requests.post(api_url, data=json.dumps(data_dict), headers=headers_DingDing).json()
    code = r["errcode"]
    if code == 0:
        print("通知成功")
    else:
        print("通知失败")


if __name__ == '__main__':
    get_notice_text()

免费评分

参与人数 6吾爱币 +4 热心值 +5 收起 理由
春又来人已去 + 1 用心讨论,共获提升!
番茄花园 + 1 谢谢你帮我下载西瓜视频 谢谢
kongdang1 + 1 我很赞同!
Lucifer_BW + 1 + 1 热心回复!
hxiang + 1 + 1 企业微信也可以
pxSkippy + 1 + 1 鼓励转贴优秀软件安全工具和文档!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

安逸帅 发表于 2022-4-11 01:40
lanlano 发表于 2022-4-11 00:20
小白一脸懵逼的问下。。这个是干嘛用的。。怎么用。。

安逸帅大概字面意思解释一下下
这个Python项目能达到的目的就是你可以将某人的某音账号通过此项目达到一种目的就是某人更新了那么钉钉可以接收到推送!
也就是你如果想钉钉接收到某人动态更新推送那么这个帖子对你就很棒!!!
By安逸帅

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
lanlano + 1 + 1 谢谢@Thanks!

查看全部评分

lanlano 发表于 2022-4-11 00:20
小白一脸懵逼的问下。。这个是干嘛用的。。怎么用。。
大罗金仙 发表于 2022-4-11 00:56
dear5211314 发表于 2022-4-11 01:11
感谢分享,正好需要
TakeKeyEasy 发表于 2022-4-11 01:44
安逸帅 发表于 2022-4-11 01:40
安逸帅大概字面意思解释一下下
这个Python项目能达到的目的就是你可以将某人的某音账号通过此项目达到一 ...

你这个解释一级棒
安逸帅 发表于 2022-4-11 02:15
TakeKeyEasy 发表于 2022-4-11 01:44
你这个解释一级棒

哈哈哈哈就当是在夸我吧!(丢死人了)
mmr 发表于 2022-4-11 07:48
太深奥了,没看懂啊
slbcmgn 发表于 2022-4-11 08:48
收藏了,辛苦楼主了
头像被屏蔽
jinzhu160 发表于 2022-4-11 08:51
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 22:55

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表