123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293 |
- # -*- coding: utf-8 -*-
- # @Time: 2023/12/26
- import os
- import random
- import sys
- import datetime
- sys.path.append(os.getcwd())
- from datetime import datetime, timedelta
- from common.db import MysqlHelper
- from common.feishu import Feishu
- from common import Common
- class Material():
- # 获取所有用户名
- @classmethod
- def feishu_name(cls):
- summary = Feishu.get_values_batch("summary", "n9xlLF")
- list = []
- for row in summary[2:]:
- mark = row[0]
- mark_name = row[1]
- list.append({"mark": mark, "mark_name": mark_name})
- return list
- # 获取常规任务汇总表所有
- @classmethod
- def feishu_list(cls):
- summary = Feishu.get_values_batch("summary", "n9xlLF")
- list = []
- for row in summary[1:]:
- mark = row[0]
- mark_name = row[1]
- feishu_id = row[3]
- video_call = row[4]
- video_count = row[5]
- pq_id = row[8]
- if mark:
- number = {"mark": mark, "feishu_id": feishu_id, "video_call": video_call, "pq_id": pq_id, "video_count": video_count, "mark_name": mark_name}
- list.append(number)
- else:
- return list
- return list
- # 获取跟随汇总表所有
- @classmethod
- def feishu_gs_list(cls):
- summary = Feishu.get_values_batch("summary", "gGiXDp")
- list = []
- for row in summary[1:]:
- mark = row[0]
- mark_name = row[1]
- feishu_id = row[3]
- video_call = row[4]
- video_count = row[5]
- pq_id = row[7]
- sum_count = row[8]
- if mark:
- number = {"mark": mark, "feishu_id": feishu_id, "video_call": video_call, "pq_id": pq_id,
- "mark_name": mark_name, "sum_count": sum_count, "video_count": video_count}
- list.append(number)
- else:
- return list
- return list
- # 获取爆款汇总表所有
- @classmethod
- def feishu_bk_list(cls):
- summary = Feishu.get_values_batch("summary", "xJxEUH")
- list = []
- for row in summary[1:]:
- mark = row[0]
- mark_name = row[1]
- feishu_id = row[3]
- video_call = row[4]
- pq_id = row[5]
- if pq_id:
- number = {"mark": mark, "feishu_id": feishu_id, "video_call": video_call, "pq_id": pq_id,
- "mark_name": mark_name}
- list.append(number)
- return list
- # 获取管理后台cookie
- @classmethod
- def get_houtai_cookie(cls):
- douyin_token = Feishu.get_values_batch("MW7VsTb1vhctEot34g7ckrjdnIe", "pLWwBm")
- for item in douyin_token:
- if item[0] == '管理后台':
- return item[1]
- # 获取汇总表所有待抓取 用户
- @classmethod
- def get_all_user(cls, type):
- summary = Feishu.get_values_batch("summary", "n9xlLF")
- list = []
- try:
- for row in summary[1:]:
- mark = row[0]
- mark_name = row[1]
- feishu_id = row[3]
- sheet = row[6]
- token = row[7]
- parts = sheet.split(',')
- result = []
- for part in parts:
- sub_parts = part.split('--')
- result.append(sub_parts)
- douyin = result[0]
- kuaishou = result[1]
- if type == "douyin":
- number = {"mark": mark, "feishu_id": feishu_id, "channel": douyin, "token": token, "mark_name": mark_name}
- list.append(number)
- elif type == "kuaishou":
- number = {"mark": mark, "feishu_id": feishu_id, "channel": kuaishou, "token": token, "mark_name": mark_name}
- list.append(number)
- except Exception as e:
- Common.logger("zhuaqu").warning(f"抓取异常:{e}\n")
- return ''
- return list
- # 获取跟随任务汇总表所有待抓取 用户
- @classmethod
- def get_all_gs_user(cls, type):
- summary = Feishu.get_values_batch("summary", "gGiXDp")
- list = []
- for row in summary[1:]:
- mark = row[0]
- mark_name = row[1]
- feishu_id = row[3]
- sheet = row[5]
- token = row[6]
- zn_id = row[4]
- parts = zn_id.split(',')
- zn_result = []
- for part in parts:
- sub_parts = part.split('--')
- zn_result.append(sub_parts)
- zn_link = zn_result[0][0] # 脚本链接
- if sheet:
- parts = sheet.split(',')
- result = []
- for part in parts:
- sub_parts = part.split('--')
- result.append(sub_parts)
- douyin = result[0]
- kuaishou = result[1]
- if type == "douyin":
- number = {"mark": mark, "feishu_id": feishu_id, "channel": douyin, "token": token,
- "mark_name": mark_name, "sheet": "1"}
- list.append(number)
- elif type == "kuaishou":
- number = {"mark": mark, "feishu_id": feishu_id, "channel": kuaishou, "token": token,
- "mark_name": mark_name, "sheet": "1"}
- list.append(number)
- elif type == "zhannei":
- number = {"mark": mark, "feishu_id": feishu_id, "channel": zn_link, "token": token,
- "mark_name": mark_name, "sheet": None}
- list.append(number)
- return list
- # 获取抖音 cookie
- @classmethod
- def get_cookie(cls, feishu_id, token, channel):
- token = Feishu.get_values_batch(feishu_id, token)
- for item in token:
- if item[0] == channel:
- return item[1]
- # 获取抖音视频链接 存入数据库
- @classmethod
- def insert_user(cls, feishu_id, channel_id, mark, channel):
- user_list = []
- # 获取抖音视频链接
- douyin = Feishu.get_values_batch(feishu_id, channel_id)
- # 提取账号昵称和账号主页链接
- for row in douyin[1:]:
- if channel == "站内":
- uid = row[0]
- else:
- uid = row[1]
- if uid:
- insert_sql = f"""INSERT INTO agc_channel_data (user_id, channel, mark) values ('{uid}', '{channel}', '{mark}')"""
- MysqlHelper.update_values(
- sql=insert_sql,
- env="prod",
- machine="",
- )
- user_list.append(uid)
- return user_list
- @classmethod
- def get_uid(cls, uid, mark):
- current_time = datetime.now()
- formatted_time = current_time.strftime("%Y-%m-%d")
- uid_list = f"""select account_id FROM agc_video_deposit where time = '{formatted_time}' AND audio = '{uid}' and mark = '{mark}' GROUP BY account_id """
- id_list = MysqlHelper.get_values(uid_list, "prod")
- return id_list
- # 获取音频类型+字幕+标题
- @classmethod
- def get_all_data(cls, feishu_id, link, mark):
- list = []
- video_list = []
- # 获取音频类型+字幕
- all_data = Feishu.get_values_batch(feishu_id, link)
- for row in all_data[1:]:
- video = row[0]
- uid = row[1]
- text = row[2]
- if len(row) == 3:
- cover = None
- else:
- cover = row[3]
- if len(row) <= 4:
- title = None
- else:
- title = row[4]
- number = {"uid": uid, "text": text, "cover": cover, "title": title, }
- if uid:
- list.append(number)
- if video:
- video_list.append(video)
- else:
- return list, video_list
- return list, video_list
- # 获取音频类型+字幕+标题
- @classmethod
- def get_allbk_data(cls, feishu_id, link):
- list_data = []
- # 获取音频类型+字幕
- all_data = Feishu.get_values_batch(feishu_id, link)
- for row in all_data[1:]:
- uid = row[0]
- text = row[1]
- video = row[2]
- if len(row) == 3:
- cover = None
- else:
- cover = row[3]
- if len(row) <= 4:
- title = None
- else:
- title = row[4]
- number = {"uid": uid, "text": text, "video": video, "cover": cover, "title": title}
- if uid:
- list_data.append(number)
- else:
- return list_data
- return list_data
- # 获取站内视频id
- @classmethod
- def get_zn_user(cls, feishu_id, link):
- video_list = []
- # 获取音频类型+字幕
- all_data = Feishu.get_values_batch(feishu_id, link)
- for row in all_data[1:]:
- video = row[0]
- if video:
- video_list.append(video)
- else:
- return video_list
- return video_list
- # 获取用户名
- @classmethod
- def get_user_id(cls, feishu_id, channel_id):
- user_list = []
- # 获取抖音视频链接
- douyin = Feishu.get_values_batch(feishu_id, channel_id)
- # 提取账号昵称和账号主页链接
- for row in douyin[1:]:
- uid = row[1]
- user_list.append(uid)
- return user_list
|