| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- import datetime
- from typing import List
- from typing import Optional
- import os
- import sys
- sys.path.append(os.path.dirname(os.path.dirname(__file__)))
- from db.engine import engine,create_all_table
- from sqlmodel import Field, SQLModel,Relationship,create_engine,Session,select,func,Column
- import psycopg2
- from config import DB_URL,logger
- from db.base import DouyinBaseRepository,update_from_model
- from db.model import User,UserOAuthToken,UserInfo
- from db.user_oauth import UserOAuthRepository
- from db.user_info import UserInfoRepository
- from db.video_data import VideoItemDocRepo
- from db.model import *
- class UserRepo(DouyinBaseRepository):
- def __init__(self, model: SQLModel=User):
- super().__init__(model, engine)
- self.model:User
-
- def add_or_update(self, oauth_model:UserOAuthToken, info_model:UserInfo):
- with Session(engine) as session:
- user = session.exec(
- select(User).where(User.open_id == oauth_model.open_id)
- ).first()
- if not user:
- user = User(open_id=oauth_model.open_id, oauth=oauth_model, info=info_model)
- logger.info(f"create user: {user.open_id}")
- else:
- update_from_model(user.oauth, oauth_model)
- # user.info = info_model
- update_from_model(user.info, info_model)
- logger.info(f"update user: {user.open_id}")
- session.add(user)
- session.commit()
- session.refresh(user)
- return user
-
- def delete(self, open_id):
- with Session(engine) as session:
- user = session.exec(
- select(User).where(User.open_id == open_id)
- ).one()
- session.delete(user)
- logger.info(f"del {user}")
- session.commit()
- def get_by_open_id(self, open_id):
- with Session(self.engine) as session:
- logger.debug(f"get {open_id}")
- base_statement = select(User).where(self.model.open_id == open_id)
- user = session.exec(base_statement).first()
- return user
-
- def main():
- create_all_table()
- user_oauth = {'access_token': 'act.3.LIdI0hNbTtfk0PfO3RLLrT1QldrgVZVs60dJOCGruTlG_Xiznyxq-9b8c9fbKpQWrUV1JYXe_mfW-gs2Ud_ZMu-OiNwsTdH7ut-f3jEqZOC9SZstKOboJ6kipjN1bFpSRO06OA_4gbYdZk4Yy5bWORPzIidCUJJth_0XQg==', 'captcha': '', 'desc_url': '', 'description': '', 'error_code': 0, 'expires_in': 1296000, 'log_id': '20240316143038C0C8BB70FA58C06B1EAD', 'open_id': '_000LiV_o0FGKMwaZgqGMCvcVSf-UAnNU_kk', 'refresh_expires_in': 2592000, 'refresh_token': 'rft.e4b3da8bd3ef01d880d827b11e826391OEGHiRrTLcp5zsGYP1dh6F9Bo7fg', 'scope': 'user_info,trial.whitelist,item.comment'}
- user_oauth2 = {'access_token': 'act', 'expires_in': 19290, 'open_id': '55test2', 'refresh_expires_in': 1950, 'refresh_token': 'rft', 'scope': 'user_info,trial.whitelist'}
- user_info = {'avatar': 'https://p6.douyinpic.com/aweme/100x100/aweme-avatar/tos-cn-i-0813_a2afe121cfee43c7856b1ec0d6997690.jpeg?from=4010531038', 'avatar_larger': 'https://p11.douyinpic.com/aweme/1080x1080/aweme-avatar/tos-cn-i-0813_a2afe121cfee43c7856b1ec0d6997690.jpeg?from=4010531038', 'client_key': 'aw6aipmfdtplwtyq', 'e_account_role': '', 'nickname': '王孙草爱搞钱', 'open_id': '_000LiV_o0FGKMwaZgqGMCvcVSf-UAnNU_kk', 'union_id': '95537895-9946-5bc5-8131-a4509558b283', 'update_time': datetime.datetime(2024, 3, 16, 14, 14, 42, 622024)}
- user_info2 = {
- "avatar": "https://p26.douyinpic.com/aweme/100x100/aweme-avatar/tos-cn-i-0813_66c4e34ae8834399bbf967c3d3c919db.jpeg?from=4010531038",
- "avatar_larger": "https://p3.douyinpic.com/aweme/1080x1080/aweme-avatar/tos-cn-i-0813_66c4e34ae8834399bbf967c3d3c919db.jpeg?from=4010531038",
- "captcha": "",
- "city": "",
- "client_key": "55",
- "country": "",
- "desc_url": "",
- "description": "",
- "district": "",
- "e_account_role": "",
- "error_code": 0,
- "gender": 0,
- "log_id": "202401261424326FE877A6CAB03910C553",
- "nickname": "程序员马工",
- "open_id": "_000QadFMhmU1jNCI3JdPnyVDL6XavC70dFy",
- "province": "",
- "union_id": "123-01ae-59bd-978a-1de8566186a8"
- }
- db_user = UserRepo()
- oauth = UserOAuthRepository().dict_to_model(user_oauth)
- info = UserInfoRepository().dict_to_model(user_info)
- # logger.info(f"oauth: {oauth}")
- # logger.info(f"info: {info}")
- # db_user.add_or_update(oauth, info)
-
- # eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJfMDAwTGlWX28wRkdLTXdhWmdxR01DdmNWU2YtVUFuTlVfa2siLCJleHAiOjE3MTgyODQyMzN9.kkqXn4HeeaSKJVvxXeFvAVuTxH-ShQ4jTII0WsosAow
- user:User = db_user.get_by_open_id("_000LiV_o0FGKMwaZgqGMCvcVSf-UAnNU_kk")
- logger.info(f"{user}")
- # user.log("what")
- db_video = VideoItemDocRepo()
- # db_video.delete(VideoData.item_id != 0)
- item_id = "@9VxS1/qCUc80K2etd8wkUc7912DgP/GCPpF2qwKuJ1YTb/X460zdRmYqig357zEBKzkoKYjBMUvl9Bs6h+CwYQ==13"
- db_video.add_vedio_item_doc(user,item_id, "dd.13")
- # db_video.mdata(1, {"process":{"status":1, "msg":"成功下载视频", "data":{"urls":["..."]}}})
- # db_video.mdata(1, {"process":{"status":2, "msg":"视频语音识别成功", "data":{"path":"video_asr_json_path"}}})
- # logger.info(f"res {res}")
- # db_video.delete(VideoData.item_id == item_id)
- # res = db_video.select(VideoData.id == 5)
- # logger.info(f"{res.all()}")
- # DocumentsRepository().add_document_with_categories(user, )
- # logger.info(f"{user.oauth}")
- # info:UserInfo = db_user.dict_to_model(user_info, UserInfo)
- # oauth:UserOAuthToken = UserOAuthRepository().dict_to_model(user_oauth, UserOAuthToken)
- # oauth2 = UserOAuthRepository().dict_to_model(user_oauth2, UserOAuthToken)
- if __name__ == "__main__":
- main()
- print("exit")
|