user.py 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. import datetime
  2. from typing import List
  3. from typing import Optional
  4. import os
  5. import sys
  6. sys.path.append(os.path.dirname(os.path.dirname(__file__)))
  7. from db.engine import engine,create_all_table
  8. from sqlmodel import Field, SQLModel,Relationship,create_engine,Session,select,func,Column
  9. import psycopg2
  10. from config import DB_URL,logger
  11. from db.base import DouyinBaseRepository,update_from_model
  12. from db.model import User,UserOAuthToken,UserInfo
  13. from db.user_oauth import UserOAuthRepository
  14. from db.user_info import UserInfoRepository
  15. from db.video_data import VideoItemDocRepo
  16. from db.model import *
  17. class UserRepo(DouyinBaseRepository):
  18. def __init__(self, model: SQLModel=User):
  19. super().__init__(model, engine)
  20. self.model:User
  21. def add_or_update(self, oauth_model:UserOAuthToken, info_model:UserInfo):
  22. with Session(engine) as session:
  23. user = session.exec(
  24. select(User).where(User.open_id == oauth_model.open_id)
  25. ).first()
  26. if not user:
  27. user = User(open_id=oauth_model.open_id, oauth=oauth_model, info=info_model)
  28. logger.info(f"create user: {user.open_id}")
  29. else:
  30. update_from_model(user.oauth, oauth_model)
  31. # user.info = info_model
  32. update_from_model(user.info, info_model)
  33. logger.info(f"update user: {user.open_id}")
  34. session.add(user)
  35. session.commit()
  36. session.refresh(user)
  37. return user
  38. def delete(self, open_id):
  39. with Session(engine) as session:
  40. user = session.exec(
  41. select(User).where(User.open_id == open_id)
  42. ).one()
  43. session.delete(user)
  44. logger.info(f"del {user}")
  45. session.commit()
  46. def get_by_open_id(self, open_id):
  47. with Session(self.engine) as session:
  48. logger.debug(f"get {open_id}")
  49. base_statement = select(User).where(self.model.open_id == open_id)
  50. user = session.exec(base_statement).first()
  51. return user
  52. def main():
  53. create_all_table()
  54. 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'}
  55. user_oauth2 = {'access_token': 'act', 'expires_in': 19290, 'open_id': '55test2', 'refresh_expires_in': 1950, 'refresh_token': 'rft', 'scope': 'user_info,trial.whitelist'}
  56. 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)}
  57. user_info2 = {
  58. "avatar": "https://p26.douyinpic.com/aweme/100x100/aweme-avatar/tos-cn-i-0813_66c4e34ae8834399bbf967c3d3c919db.jpeg?from=4010531038",
  59. "avatar_larger": "https://p3.douyinpic.com/aweme/1080x1080/aweme-avatar/tos-cn-i-0813_66c4e34ae8834399bbf967c3d3c919db.jpeg?from=4010531038",
  60. "captcha": "",
  61. "city": "",
  62. "client_key": "55",
  63. "country": "",
  64. "desc_url": "",
  65. "description": "",
  66. "district": "",
  67. "e_account_role": "",
  68. "error_code": 0,
  69. "gender": 0,
  70. "log_id": "202401261424326FE877A6CAB03910C553",
  71. "nickname": "程序员马工",
  72. "open_id": "_000QadFMhmU1jNCI3JdPnyVDL6XavC70dFy",
  73. "province": "",
  74. "union_id": "123-01ae-59bd-978a-1de8566186a8"
  75. }
  76. db_user = UserRepo()
  77. oauth = UserOAuthRepository().dict_to_model(user_oauth)
  78. info = UserInfoRepository().dict_to_model(user_info)
  79. # logger.info(f"oauth: {oauth}")
  80. # logger.info(f"info: {info}")
  81. # db_user.add_or_update(oauth, info)
  82. # eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJfMDAwTGlWX28wRkdLTXdhWmdxR01DdmNWU2YtVUFuTlVfa2siLCJleHAiOjE3MTgyODQyMzN9.kkqXn4HeeaSKJVvxXeFvAVuTxH-ShQ4jTII0WsosAow
  83. user:User = db_user.get_by_open_id("_000LiV_o0FGKMwaZgqGMCvcVSf-UAnNU_kk")
  84. logger.info(f"{user}")
  85. # user.log("what")
  86. db_video = VideoItemDocRepo()
  87. # db_video.delete(VideoData.item_id != 0)
  88. item_id = "@9VxS1/qCUc80K2etd8wkUc7912DgP/GCPpF2qwKuJ1YTb/X460zdRmYqig357zEBKzkoKYjBMUvl9Bs6h+CwYQ==13"
  89. db_video.add_vedio_item_doc(user,item_id, "dd.13")
  90. # db_video.mdata(1, {"process":{"status":1, "msg":"成功下载视频", "data":{"urls":["..."]}}})
  91. # db_video.mdata(1, {"process":{"status":2, "msg":"视频语音识别成功", "data":{"path":"video_asr_json_path"}}})
  92. # logger.info(f"res {res}")
  93. # db_video.delete(VideoData.item_id == item_id)
  94. # res = db_video.select(VideoData.id == 5)
  95. # logger.info(f"{res.all()}")
  96. # DocumentsRepository().add_document_with_categories(user, )
  97. # logger.info(f"{user.oauth}")
  98. # info:UserInfo = db_user.dict_to_model(user_info, UserInfo)
  99. # oauth:UserOAuthToken = UserOAuthRepository().dict_to_model(user_oauth, UserOAuthToken)
  100. # oauth2 = UserOAuthRepository().dict_to_model(user_oauth2, UserOAuthToken)
  101. if __name__ == "__main__":
  102. main()
  103. print("exit")