MCPcopy Create free account
hub / github.com/smallfawn/QLScriptPublic / TaskExecutor

Class TaskExecutor

daily/sfsy.py:427–935  ·  view source on GitHub ↗

任务执行器

Source from the content-addressed store, hash-verified

425
426# ==================== 任务执行器 ====================
427class TaskExecutor:
428 """任务执行器"""
429
430 def __init__(
431 self,
432 http_client: SFHttpClient,
433 logger: Logger,
434 config: Config,
435 user_id: str
436 ):
437 self.http = http_client
438 self.logger = logger
439 self.config = config
440 self.user_id = user_id
441 self.total_points = 0
442
443 # 任务相关属性
444 self.taskId = ""
445 self.taskCode = ""
446 self.strategyId = ""
447 self.title = ""
448
449 @staticmethod
450 def generate_device_id(characters: str = 'abcdef0123456789') -> str:
451 """生成设备ID"""
452 result = ''
453 for char in 'xxxxxxxx-xxxx-xxxx':
454 if char == 'x':
455 result += random.choice(characters)
456 else:
457 result += char
458 return result
459
460 def _extract_task_id_from_url(self, url: str) -> str:
461 """从URL中提取taskId"""
462 try:
463 from urllib.parse import parse_qs, urlparse, unquote
464 import json
465
466 # 处理_ug_view_param参数
467 parsed = urlparse(url)
468 params = parse_qs(parsed.query)
469
470 if '_ug_view_param' in params:
471 ug_params = json.loads(unquote(params['_ug_view_param'][0]))
472 if 'taskId' in ug_params:
473 return str(ug_params['taskId']) # 确保返回字符串类型
474
475 # 如果URL是JSON格式的,尝试解析
476 if url.startswith('com.sf-express://'):
477 json_str = url.split('_ug_view_param=')[1]
478 ug_params = json.loads(unquote(json_str))
479 if 'taskId' in ug_params:
480 return str(ug_params['taskId']) # 确保返回字符串类型
481
482 except Exception as e:
483 self.logger.warning(f'从URL提取taskId失败: {e}')
484

Callers 1

runMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected