config.py 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import sys
  2. import os
  3. import pathlib
  4. from DrissionPage import ChromiumOptions
  5. import dataset
  6. from loguru import logger
  7. HOST='localhost'
  8. PORT=9226
  9. WORK_DIR = pathlib.Path(__file__).parent.parent
  10. CONF_DIR = WORK_DIR/'conf'
  11. OUTPUT = WORK_DIR/'output'
  12. PAGE_OUTPUT = OUTPUT/'page'
  13. if len(sys.argv)>=3 and sys.argv[1] == "-c":
  14. INI_PATH = sys.argv[2]
  15. else:
  16. INI_PATH = CONF_DIR/'dp_configs.ini'
  17. if not os.path.exists(OUTPUT):
  18. os.mkdir(OUTPUT)
  19. if not os.path.exists(PAGE_OUTPUT):
  20. os.mkdir(PAGE_OUTPUT)
  21. logger.remove()
  22. # logger.add(sys.stderr, format='<green>{time:YYYY-MM-DD HH:mm:ss}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>')
  23. logger.add(sys.stderr, level="INFO", format='<green>{time:YYYY-MM-DD HH:mm:ss}</green> | <level>{level: <8}</level> | <cyan>{file}</cyan>:<cyan>{line}</cyan> :<cyan>{function}</cyan> - {message}')
  24. logger.add(os.path.join(OUTPUT, "all.log"), level="DEBUG", format='<green>{time:YYYY-MM-DD HH:mm:ss}</green> | <level>{level: <8}</level> | <cyan>{file}</cyan>:<cyan>{line}</cyan> :<cyan>{function}</cyan> - {message}')
  25. logger.debug(f"WORK_DIR {WORK_DIR}")
  26. logger.debug(f"INI_PATH {INI_PATH}")
  27. db = dataset.connect(f'sqlite:///{OUTPUT}/douyin.db')
  28. def find_edge_path_in_registry():
  29. import winreg as reg
  30. path = None
  31. try:
  32. key = reg.OpenKey(reg.HKEY_LOCAL_MACHINE, r"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\msedge.exe")
  33. path = reg.QueryValueEx(key, "")[0]
  34. reg.CloseKey(key)
  35. except WindowsError:
  36. pass
  37. return path
  38. logger.debug(f"find_edge browser path: {find_edge_path_in_registry()}")
  39. USER_DATA = OUTPUT/'userData_ai-yunying'
  40. # BROWSER_PATH 值理论无需手动设置,因为该模块会自动在默认路径查找 Chrome ,因此下列判断可以删去
  41. if 'win' in sys.platform:
  42. if not os.path.exists(INI_PATH):
  43. from DrissionPage.common import configs_to_here
  44. # path = r'C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe'
  45. path = find_edge_path_in_registry()
  46. # 生成默认配置文件
  47. chrome_options = ChromiumOptions(False, None)
  48. chrome_options.set_address(f"{HOST}:{PORT}")
  49. chrome_options.set_browser_path(path)
  50. chrome_options.set_user_data_path(USER_DATA)
  51. chrome_options.save(INI_PATH)
  52. else:
  53. chrome_options = ChromiumOptions(True, ini_path=INI_PATH)
  54. logger.debug(f"load init {INI_PATH}")
  55. logger.debug(f"chrome_options.browser_path {chrome_options.browser_path}")
  56. elif sys.platform == 'linux':
  57. chrome_options = ChromiumOptions(ini_path=INI_PATH)
  58. # import consul_srv_client
  59. # ip,port = consul_srv_client.get_srv("prefect.service.consul")
  60. prefect_api = f"http://{'10.0.0.1'}:{'8612'}/api"
  61. # 在导入 prefect 之前设置环境变量
  62. os.environ["PREFECT_API_URL"] = prefect_api
  63. G4F_API = "http://pc:8003/"