copy_usersinfo.py 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. # -*- coding: utf-8 -*-
  2. # @Author: wangkun
  3. # @Time: 2022/6/20
  4. import time
  5. import requests
  6. import urllib3
  7. from main.common import Common
  8. from main.feishu_lib import Feishu
  9. proxies = {"http": None, "https": None}
  10. class CopyUsersInfo:
  11. # 备份表数据
  12. @classmethod
  13. def copyed_data(cls):
  14. try:
  15. data_list = []
  16. lists = Feishu.get_values_batch("twitter", "WPJILC")
  17. for i in lists:
  18. for j in i:
  19. # 过滤空的单元格内容
  20. if j is None:
  21. pass
  22. else:
  23. data_list.append(j)
  24. return data_list
  25. except Exception as e:
  26. Common.logger().error("获取备份表数据异常:{}", e)
  27. # 增加工作表,复制工作表、删除工作表。
  28. @classmethod
  29. def sheets_batch_update(cls):
  30. """
  31. https://open.feishu.cn/document/ukTMukTMukTM/uYTMzUjL2EzM14iNxMTN
  32. """
  33. url = "https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/shtcn6BYfYuqegIP13ORB6rI2dh/sheets_batch_update"
  34. headers = {
  35. "Authorization": "Bearer " + Feishu.get_token(),
  36. "Content-Type": "application/json; charset=utf-8"
  37. }
  38. body = {
  39. "requests": [
  40. {
  41. "copySheet": {
  42. "source": {
  43. "sheetId": "db114c"
  44. },
  45. "destination": {
  46. "title": ""
  47. }
  48. }
  49. }
  50. ]
  51. }
  52. try:
  53. urllib3.disable_warnings()
  54. r = requests.post(url=url, headers=headers, json=body, proxies=proxies, verify=False)
  55. print(r.json())
  56. # Common.logger().info("增加工作表,复制工作表、删除工作表:{}", r.json()["msg"])
  57. except Exception as e:
  58. Common.logger().error("增加工作表,复制工作表、删除工作表异常:{}", e)
  59. # 复制用户信息
  60. @classmethod
  61. def copy_usersinfo(cls):
  62. try:
  63. user_list = Feishu.get_values_batch("twitter", "db114c")
  64. for i in range(1, len(user_list[1:])):
  65. uid = user_list[i][0]
  66. key_word = user_list[i][1]
  67. name = user_list[i][2]
  68. screen_name = user_list[i][3]
  69. person_url = user_list[i][4]
  70. description = user_list[i][5]
  71. location = user_list[i][6]
  72. friends_count = user_list[i][7]
  73. followers_count = user_list[i][8]
  74. favourites_count = user_list[i][9]
  75. listed_count = user_list[i][10]
  76. statuses_count = user_list[i][11]
  77. media_count = user_list[i][12]
  78. display_url = user_list[i][13]
  79. created_at = user_list[i][14]
  80. profile_image_url = user_list[i][15]
  81. profile_banner_url = user_list[i][16]
  82. ext_has_nft_avatar = user_list[i][17]
  83. verified = user_list[i][18]
  84. created_time = user_list[i][19]
  85. update_time = user_list[i][20]
  86. # print(f"\n第{i}个用户信息")
  87. # print(f"uid:{uid}")
  88. # print(f"key_word:{key_word}")
  89. # print(f"name:{name}")
  90. # print(f"screen_name:{screen_name}")
  91. # print(f"person_url:{person_url}")
  92. # print(f"description:{description}")
  93. # print(f"location:{location}")
  94. # print(f"friends_count:{friends_count}")
  95. # print(f"followers_count:{followers_count}")
  96. # print(f"favourites_count:{favourites_count}")
  97. # print(f"listed_count:{listed_count}")
  98. # print(f"statuses_count:{statuses_count}")
  99. # print(f"media_count:{media_count}")
  100. # print(f"display_url:{display_url}")
  101. # print(f"created_at:{created_at}")
  102. # print(f"profile_image_url:{profile_image_url}")
  103. # print(f"profile_banner_url:{profile_banner_url}")
  104. # print(f"ext_has_nft_avatar:{ext_has_nft_avatar}, type:{type(ext_has_nft_avatar)}")
  105. # print(f"verified:{verified}, type:{type(verified)}")
  106. # print(f"created_time:{created_time}")
  107. # print(f"update_time:{update_time}")
  108. # print("\n")
  109. if uid in cls.copyed_data():
  110. Common.logger().info("用户信息已存在")
  111. return
  112. else:
  113. Common.logger().info("开始拷贝第{}个用户信息", i)
  114. time.sleep(1)
  115. Feishu.insert_columns("twitter", "WPJILC", "ROWS", 1, 2)
  116. values = [[uid,
  117. key_word,
  118. name,
  119. screen_name,
  120. person_url,
  121. description,
  122. location,
  123. friends_count,
  124. followers_count,
  125. favourites_count,
  126. listed_count,
  127. statuses_count,
  128. media_count,
  129. display_url,
  130. created_at,
  131. profile_image_url,
  132. profile_banner_url,
  133. str(ext_has_nft_avatar),
  134. str(verified),
  135. created_time,
  136. update_time]]
  137. time.sleep(1)
  138. Feishu.update_values("twitter", "WPJILC", "A2:U2", values)
  139. except Exception as e:
  140. Common.logger().error("复制用户信息异常:{}", e)
  141. if __name__ == "__main__":
  142. copy = CopyUsersInfo()
  143. copy.sheets_batch_update()
  144. # copy.copy_usersinfo()