srt.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import re
  2. import requests
  3. import json
  4. class SRT():
  5. @classmethod
  6. # 定义函数去掉文字后的标点符号并添加换行符
  7. def process_srt(cls, srt):
  8. lines = srt.strip().split('\n')
  9. processed_lines = []
  10. for line in lines:
  11. # 匹配字幕编号行
  12. if re.match(r'^\d+$', line):
  13. processed_lines.append(line)
  14. # 匹配时间戳行
  15. elif re.match(r'^\d{2}:\d{2}:\d{2}\.\d{1,3}-->\d{2}:\d{2}:\d{2}\.\d{1,3}$', line):
  16. processed_lines.append(line.replace('-->', ' --> '))
  17. # 处理字幕文本行
  18. else:
  19. # 去掉末尾的标点符号
  20. line = re.sub(r'[,。!?;、]$', '', line)
  21. # 添加换行符
  22. processed_lines.append(line + '\n')
  23. return '\n'.join(processed_lines)
  24. @classmethod
  25. def getSrt(cls, mp3_id):
  26. url = "http://api-internal.piaoquantv.com/produce-center/srt/get/content"
  27. payload = json.dumps({
  28. "params": {
  29. "resourceChannel": "inner",
  30. "videoId": mp3_id
  31. }
  32. })
  33. headers = {
  34. 'User-Agent': 'Apifox/1.0.0 (https://apifox.com)',
  35. 'Content-Type': 'application/json',
  36. 'Accept': '*/*',
  37. 'Host': 'api-internal.piaoquantv.com',
  38. 'Connection': 'keep-alive'
  39. }
  40. response = requests.request("POST", url, headers=headers, data=payload)
  41. data_list = response.json()
  42. code = data_list["code"]
  43. if code == 0:
  44. srt = data_list["data"]
  45. if srt:
  46. srt = srt.replace("/n", "\n")
  47. # srt = re.sub(r'(\w+)([,。!?])', r'\n\n', srt)
  48. new_srt = cls.process_srt(srt)
  49. return new_srt
  50. else:
  51. return None
  52. else:
  53. return None