mdbq 4.0.75__py3-none-any.whl → 4.0.77__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
mdbq/__version__.py CHANGED
@@ -1 +1 @@
1
- VERSION = '4.0.75'
1
+ VERSION = '4.0.77'
mdbq/log/mylogger.py CHANGED
@@ -200,6 +200,17 @@ class MyLogger:
200
200
  if not extra_data and hasattr(record, 'extra'):
201
201
  extra_data = getattr(record, 'extra', None)
202
202
  if extra_data:
203
+ # 优先显示func信息
204
+ func_name = extra_data.get('func', '')
205
+ module_name = extra_data.get('model', '')
206
+ line_number = extra_data.get('lines', '')
207
+ if func_name:
208
+ msg += f" | Function: {func_name}"
209
+ if module_name:
210
+ msg += f" | Module: {module_name}"
211
+ if line_number:
212
+ msg += f" | Line: {line_number}"
213
+
203
214
  context_data = extra_data.get('context_data', {})
204
215
  if context_data:
205
216
  msg += f" | Context: {context_data}"
@@ -207,7 +218,7 @@ class MyLogger:
207
218
  if metrics:
208
219
  msg += f" | Metrics: {metrics}"
209
220
  extra = {k: v for k, v in extra_data.items()
210
- if k not in ('context_data', '性能指标')}
221
+ if k not in ('context_data', '性能指标', 'func', 'model', 'lines')}
211
222
  if extra:
212
223
  msg += f" | Extra: {extra}"
213
224
  return msg
@@ -413,6 +424,23 @@ class MyLogger:
413
424
  if extra:
414
425
  log_extra.update(extra)
415
426
 
427
+ # 获取当前调用func
428
+ try:
429
+ frame = inspect.currentframe()
430
+ # 跳过logger内部函数,找到真正的调用者
431
+ caller_frame = frame.f_back
432
+ skip_functions = ['_sync_log', 'log', 'debug', 'info', 'warning', 'error', 'critical', 'wrapper']
433
+ while caller_frame and caller_frame.f_code.co_name in skip_functions:
434
+ caller_frame = caller_frame.f_back
435
+ if caller_frame:
436
+ log_extra['func'] = caller_frame.f_code.co_name
437
+ log_extra['model'] = caller_frame.f_globals.get('__name__', '')
438
+ log_extra['lines'] = caller_frame.f_lineno
439
+ del frame
440
+ except Exception:
441
+ # 如果获取函数信息失败,不影响正常日志记录
442
+ pass
443
+
416
444
  # 添加上下文信息
417
445
  if hasattr(self._context, 'data') and self._context.data:
418
446
  log_extra['context_data'] = self._context.data.copy()
@@ -2,7 +2,11 @@
2
2
  import os
3
3
  import platform
4
4
  import getpass
5
- from selenium import webdriver
5
+ from selenium import webdriver as selenium_webdriver
6
+ try:
7
+ from seleniumwire import webdriver as wire_webdriver
8
+ except ImportError:
9
+ wire_webdriver = None
6
10
  from selenium.webdriver.chrome.service import Service
7
11
  import re
8
12
  import socket
@@ -24,7 +28,7 @@ class GetDriver:
24
28
  Selenium ChromeDriver 管理器,支持多平台、代理、无头模式、下载目录、User-Agent等高级配置。
25
29
  支持上下文管理器(with语法),自动资源清理。
26
30
  """
27
- def __init__(self, url=None, headless=False, proxy=None, user_agent=None, download_dir=None, chrome_path=None, chromedriver_path=None, maximize_window=True):
31
+ def __init__(self, url=None, headless=False, proxy=None, user_agent=None, download_dir=None, chrome_path=None, chromedriver_path=None, maximize_window=True, is_selenium_wire=False):
28
32
  """
29
33
  初始化GetDriver
30
34
  :param url: 允许的安全站点(用于insecure origin as secure)
@@ -52,6 +56,7 @@ class GetDriver:
52
56
  import random
53
57
  self.user_agent = user_agents[random.randint(0, len(user_agents) - 1)]
54
58
  self.maximize_window = maximize_window
59
+ self.is_selenium_wire = is_selenium_wire
55
60
 
56
61
  def check_proxy(self):
57
62
  """
@@ -173,7 +178,10 @@ class GetDriver:
173
178
  try:
174
179
  option.binary_location = chrome_path
175
180
  service = Service(chromedriver_path)
176
- driver = webdriver.Chrome(service=service, options=option)
181
+ if self.is_selenium_wire and wire_webdriver:
182
+ driver = wire_webdriver.Chrome(service=service, options=option)
183
+ else:
184
+ driver = selenium_webdriver.Chrome(service=service, options=option)
177
185
  if self.maximize_window:
178
186
  driver.maximize_window()
179
187
 
@@ -222,7 +230,10 @@ class GetDriver:
222
230
  if not self.check_proxy():
223
231
  raise GetDriverException(f"代理不可用或格式错误: {self.proxy}")
224
232
 
225
- option = webdriver.ChromeOptions() # 浏览器启动选项
233
+ if self.is_selenium_wire and wire_webdriver:
234
+ option = wire_webdriver.ChromeOptions() # 浏览器启动选项
235
+ else:
236
+ option = selenium_webdriver.ChromeOptions() # 浏览器启动选项
226
237
  if self.headless:
227
238
  option.add_argument("--headless") # 设置无界面模式
228
239
  option.add_argument("--window-size=1920,1080")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mdbq
3
- Version: 4.0.75
3
+ Version: 4.0.77
4
4
  Home-page: https://pypi.org/project/mdbq
5
5
  Author: xigua,
6
6
  Author-email: 2587125111@qq.com
@@ -1,7 +1,7 @@
1
1
  mdbq/__init__.py,sha256=Il5Q9ATdX8yXqVxtP_nYqUhExzxPC_qk_WXQ_4h0exg,16
2
- mdbq/__version__.py,sha256=K7y6PvPpqJlMBeV-GYtOcSGoiW4MvAwSjrj5RDnI2TY,18
2
+ mdbq/__version__.py,sha256=MKsKQWqJcKq5Yl-a7LzywayYm1KeeUGRyTEqu3Itasg,18
3
3
  mdbq/log/__init__.py,sha256=Mpbrav0s0ifLL7lVDAuePEi1hJKiSHhxcv1byBKDl5E,15
4
- mdbq/log/mylogger.py,sha256=kPe3wsQNaB1slfX-Z7VMqzZoMoqPfc7ylYXZDBeFzzI,24945
4
+ mdbq/log/mylogger.py,sha256=rJozMRqbO277M8DVwQZVDLUj3eBRCn0MBg29QVlrcog,26384
5
5
  mdbq/myconf/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
6
6
  mdbq/myconf/myconf.py,sha256=rHvQCnQRKhQ49AZBke-Z4v28hyOLmHt4MylIuB0H6yA,33516
7
7
  mdbq/mysql/__init__.py,sha256=A_DPJyAoEvTSFojiI2e94zP0FKtCkkwKP1kYUCSyQzo,11
@@ -22,9 +22,9 @@ mdbq/pbix/refresh_all.py,sha256=OBT9EewSZ0aRS9vL_FflVn74d4l2G00wzHiikCC4TC0,5926
22
22
  mdbq/redis/__init__.py,sha256=YtgBlVSMDphtpwYX248wGge1x-Ex_mMufz4-8W0XRmA,12
23
23
  mdbq/redis/getredis.py,sha256=vpBuNc22uj9Vr-_Dh25_wpwWM1e-072EAAIBdB_IpL0,23494
24
24
  mdbq/selenium/__init__.py,sha256=AKzeEceqZyvqn2dEDoJSzDQnbuENkJSHAlbHAD0u0ZI,10
25
- mdbq/selenium/get_driver.py,sha256=ma0XgXJtpPW-ftzukShXnjkZBkekKqjtKQfkZ_UGM5k,20375
25
+ mdbq/selenium/get_driver.py,sha256=sJYMfkzNprGoHYkppVqxglRSIQm6mO7wvgYvSzTWHdc,20903
26
26
  mdbq/spider/__init__.py,sha256=RBMFXGy_jd1HXZhngB2T2XTvJqki8P_Fr-pBcwijnew,18
27
- mdbq-4.0.75.dist-info/METADATA,sha256=fmoz5BV-r0BnyiThBzKL7SOA1pWf5l_ylZXIOMTFkUg,364
28
- mdbq-4.0.75.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
29
- mdbq-4.0.75.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
30
- mdbq-4.0.75.dist-info/RECORD,,
27
+ mdbq-4.0.77.dist-info/METADATA,sha256=NJeHEofQkdsgkO9rQhyEm4uj_w1MEsnJJJh8U2oTwco,364
28
+ mdbq-4.0.77.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
29
+ mdbq-4.0.77.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
30
+ mdbq-4.0.77.dist-info/RECORD,,
File without changes