sourceIdRoute.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. """
  2. @author: luojunhui
  3. 生成sourceId
  4. """
  5. import datetime
  6. import hashlib
  7. import random
  8. import time
  9. import urllib.parse
  10. from config import source_id_db
  11. def createPath(video_id, shared_uid, gh_id, business_type, publish_type, index):
  12. """
  13. :param publish_type: 发布类型
  14. :param index: 视频位置信息
  15. :param business_type: 业务类型
  16. :param gh_id: 公众号账号的gh_id
  17. :param video_id: 视频 id
  18. :param shared_uid: 分享 id
  19. """
  20. def generate_source_id():
  21. """
  22. generate_source_id
  23. :return:
  24. """
  25. timestamp = str(int(time.time() * 1000))
  26. random_str = str(random.randint(1000, 9999))
  27. hash_input = f"{timestamp}-{random_str}"
  28. return hashlib.md5(hash_input.encode()).hexdigest()
  29. match business_type:
  30. case 1:
  31. # 公众号投流
  32. source_id = "GzhTouLiu_Articles_{}_".format(gh_id) + generate_source_id()
  33. url = f"pages/user-videos?id={video_id}&su={shared_uid}&fromGzh=1&index={index}&publishType={publish_type}&rootSourceId={source_id}"
  34. return source_id, f"pages/category?jumpPage={urllib.parse.quote(url, safe='')}"
  35. case 2:
  36. # 小程序投流
  37. source_id = "GzhTouLiu_Minigram_{}_".format(gh_id) + generate_source_id()
  38. url = f"pages/user-videos?id={video_id}&su={shared_uid}&fromGzh=1&index={index}&publishType={publish_type}&rootSourceId={source_id}"
  39. return source_id, f"pages/category?jumpPage={urllib.parse.quote(url, safe='')}"
  40. case 3:
  41. # 企微
  42. source_id = "GzhTouLiu_Wecom_{}_".format(gh_id) + generate_source_id()
  43. url = f"pages/user-videos?id={video_id}&su={shared_uid}&fromGzh=1&index={index}&publishType={publish_type}&rootSourceId={source_id}"
  44. return source_id, f"pages/category?jumpPage={urllib.parse.quote(url, safe='')}"
  45. return None, None
  46. async def saveSourceToDB(db_client, params, request_id):
  47. """
  48. 将sourceId信息存储到数据库
  49. :param request_id: 请求id
  50. :param db_client:
  51. :param params:
  52. :return:
  53. """
  54. # input 信息
  55. try:
  56. # 视频信息
  57. video_id = params['videoId']
  58. video_cover = params['videoCover']
  59. video_title = params['videoTitle']
  60. uid = params['uid']
  61. # 公众号信息
  62. account_name = params['accountName']
  63. gh_id = params['ghId']
  64. # 文章信息
  65. article_title = params['articleTitle']
  66. # 业务信息
  67. business_type = params['businessType']
  68. publish_type = params['publishType']
  69. position = params['position']
  70. cooperation = params['cooperation']
  71. except Exception as e:
  72. response = {
  73. "error": str(e),
  74. "message": "params error",
  75. "requestId": request_id
  76. }
  77. return response
  78. # source_id, gzh_path
  79. source_id, share_path = createPath(video_id, uid, gh_id, business_type, publish_type, position)
  80. # minigram_info
  81. minigram_name = "祝福岁岁平安"
  82. minigram_id = "wxe54dd94c5246127a"
  83. sql = f"""
  84. INSERT INTO {source_id_db}
  85. (video_id, video_cover, video_title, uid, gh_id, account_name, article_title, business_type, publish_type, cooperation, position, source_id, share_path, create_time, minigram_name, minigram_id)
  86. values
  87. (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s);
  88. """
  89. try:
  90. await db_client.asyncInsert(
  91. sql=sql,
  92. params=(
  93. video_id,
  94. video_cover,
  95. video_title,
  96. uid,
  97. gh_id,
  98. account_name,
  99. article_title,
  100. business_type,
  101. publish_type,
  102. cooperation,
  103. position,
  104. source_id,
  105. share_path,
  106. datetime.datetime.now().__str__(),
  107. minigram_name,
  108. minigram_id
  109. )
  110. )
  111. response = {
  112. "requestId": request_id,
  113. "message": "success"
  114. }
  115. except Exception as e:
  116. response = {
  117. "requestId": request_id,
  118. "error": str(e),
  119. "info": "db error"
  120. }
  121. return response