123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- # -*- coding: utf-8 -*-
- # @Time: 2023/12/22
- import datetime
- import os
- import random
- import re
- import sys
- import requests
- import json
- import urllib3
- sys.path.append(os.getcwd())
- from requests.adapters import HTTPAdapter
- from single_video.douyin.douyin_help import DouYinHelper
- from common.url_manage import urlManage
- from common import Oss
- from common.fast_proxies import tunnel_proxies
- from common.pq_utility import PQ
- from common.userAgent import get_random_user_agent
- class douyinVideo():
- # 获取抖音 标题+视频链接
- @classmethod
- def get_videoList(cls, vx_message, channel):
- try:
- data_link = vx_message[1]
- content_id = urlManage.url_manage(data_link, channel)
- if content_id:
- url = f'https://www.douyin.com/aweme/v1/web/aweme/detail/'
- headers = {
- 'Accept': 'application/json, text/plain, */*',
- 'Accept-Language': 'zh-CN,zh;q=0.9',
- 'Cache-Control': 'no-cache',
- 'Cookie' : DouYinHelper.get_cookie(),
- # 'Cookie': "store-region-src=uid; my_rd=1; ttwid=1%7CG3wy_-RdLJnfG5P9zAcP54OM8_nTLZVrJxNi1lPzdmg%7C1693558867%7C5e43c47a424e939aaf7193b096e3c6f2274982ee64e9608c99c54d2a43982aca; xgplayer_user_id=946890878348; d_ticket=158a9e45d023d5d2763abecf61a04518e6d8d; store-region=cn-bj; LOGIN_STATUS=0; odin_tt=ed23740cc5cb38e204e7c327d0d6d958e7a457dfabeb47428ab7a5ab16e78575fabfed21d9437fdad813f1b9d8db696ea8f3e6238f9362e817847e77b8abc8f7; xgplayer_device_id=284135747; bd_ticket_guard_client_web_domain=2; s_v_web_id=verify_ltfsjdjh_f8a80c27_488c_bc5d_2272_5a87a335e860; FORCE_LOGIN=%7B%22videoConsumedRemainSeconds%22%3A180%7D; download_guide=%223%2F20240319%2F1%22; pwa2=%220%7C0%7C3%7C1%22; volume_info=%7B%22isUserMute%22%3Afalse%2C%22isMute%22%3Atrue%2C%22volume%22%3A0.6%7D; csrf_session_id=a5355d954d3c63ed1ba35faada452b4d; passport_csrf_token=5f12167a4cc688290b05c91be5f2ba19; passport_csrf_token_default=5f12167a4cc688290b05c91be5f2ba19; dy_swidth=1440; dy_sheight=900; __ac_nonce=066025d8500daa5d44e3d; __ac_signature=_02B4Z6wo00f01aLR-wgAAIDATPQ.9swP4SWi8f-AAA63EEkqBfyCRzRlKwf457Oplifzvc8LeBEyCHi3yjOmR0tohtuWvPjmtYOuBDQV3YXAH5C-sinCh0dgFKXKGoyYGzIqrNuB0StUaT1q6d; IsDouyinActive=true; stream_recommend_feed_params=%22%7B%5C%22cookie_enabled%5C%22%3Atrue%2C%5C%22screen_width%5C%22%3A1440%2C%5C%22screen_height%5C%22%3A900%2C%5C%22browser_online%5C%22%3Atrue%2C%5C%22cpu_core_num%5C%22%3A2%2C%5C%22device_memory%5C%22%3A8%2C%5C%22downlink%5C%22%3A1.45%2C%5C%22effective_type%5C%22%3A%5C%223g%5C%22%2C%5C%22round_trip_time%5C%22%3A700%7D%22; home_can_add_dy_2_desktop=%221%22; strategyABtestKey=%221711431048.679%22; msToken=eZb-wuCyADj21FuipDmMdblWSXIt5zQyroUBKX5RywkTI5TNlaPyybd1mRKzpkCJnhnQFo2fjgJhm5SQfqnW8f3l4g5WD7rf1gRl9sYNetYWjMVTSYW91Q==; msToken=t-hmDzdhaekbRzeibSh4ERK4_8XXpmBPa-9dnZY1G8k1Kq_EXNgcdjle5GsDmAXVrvERDWXuHS-PAcBx2ym_BKIytckgVjKvGGdmW0PiXgv0aYuvhLdOGg==; bd_ticket_guard_client_data=eyJiZC10aWNrZXQtZ3VhcmQtdmVyc2lvbiI6MiwiYmQtdGlja2V0LWd1YXJkLWl0ZXJhdGlvbi12ZXJzaW9uIjoxLCJiZC10aWNrZXQtZ3VhcmQtcmVlLXB1YmxpYy1rZXkiOiJCSjA4OEszQm5HWFdpVUtjQytmRGtqYTFucXNmamtYR3BWOS9jZnRqZDNGSUFkZ1JRaU5iK1dyZEFmbG44YkZVbFViampoL3phdHBFQW9RcUN1MTA3UUk9IiwiYmQtdGlja2V0LWd1YXJkLXdlYi12ZXJzaW9uIjoxfQ%3D%3D; tt_scid=ktKrGYpEyDwBpy7BqOuPB7Mtu0fa-nZ-HNv3M4-1VnPWTIVDl0JC4dcv1aZZTNHzb994",
- 'Pragma': 'no-cache',
- 'Referer': f'https://www.douyin.com/video/{content_id}',
- 'User-Agent': get_random_user_agent()
- }
- query = DouYinHelper.get_full_query(ua=headers['User-Agent'], extra_data={'aweme_id': content_id})
- urllib3.disable_warnings()
- s = requests.session()
- s.mount('http://', HTTPAdapter(max_retries=3))
- s.mount('https://', HTTPAdapter(max_retries=3))
- response = requests.request(method='GET', url=url, headers=headers, params=query)
- status_code = response.status_code
- if status_code != 200:
- return "cookie过期"
- body = response.content.decode()
- obj = json.loads(body).get('aweme_detail', {})
- if len(obj) == 0:
- return "cookie过期"
- if obj.get('desc'):
- title = obj.get('desc').split('\n')[0].strip()
- title = f'{title[:20]}...' if len(title) > 20 else title
- title = title if title else ' '
- else:
- title = ' '
- if obj.get('video', {}).get('bit_rate', []):
- video_uri = obj.get('video', {}).get('play_addr', {}).get('uri')
- ratio = f'{obj.get("video", {}).get("height")}p'
- video_url = f'https://www.iesdouyin.com/aweme/v1/play/?video_id={video_uri}&ratio={ratio}&line=0'
- # 随机生成视频oss_id
- video_id = urlManage.random_id()
- oss_object_key = Oss.video_url_upload_oss(video_url, video_id)
- status = oss_object_key.get("status")
- if status != 200:
- return "发送OSS失败"
- # 获取 oss 视频地址
- oss_object_key = oss_object_key.get("oss_object_key")
- piaoquantv = PQ.insert_piaoquantv(oss_object_key, title, vx_message[3])
- if piaoquantv == False:
- return '发送账号失败'
- return
- else:
- return "无法获取视频链接"
- else:
- return "无法获取视频id"
- except Exception :
- return "URL处理失败"
- if __name__ == '__main__':
- douyinVideo.get_videoList()
|