feat: add contentSettings cmd to CDP bridge (bypass multi-download dialog); minor agentmain cleanup
This commit is contained in:
1 parent
892319b355
commit
c2918a6e87
4 files changed
+20
-6
No files matched your search
+2
-5
@@ -127,7 +127,7 @@ class GeneraticAgent:
|
||||
def run(self):
|
||||
while True:
|
||||
task = self.task_queue.get()
|
||||
raw_query, source, images, display_queue = task["query"], task["source"], task.get("images") or [], task["output"]
|
||||
raw_query, source, display_queue = task["query"], task["source"], task["output"]
|
||||
raw_query = self._handle_slash_cmd(raw_query, display_queue)
|
||||
if raw_query is None:
|
||||
self.task_queue.task_done(); continue
|
||||
@@ -165,13 +165,10 @@ class GeneraticAgent:
|
||||
print(f"Backend Error: {format_error(e)}")
|
||||
display_queue.put({'done': full_resp + f'\n```\n{format_error(e)}\n```', 'source': source})
|
||||
finally:
|
||||
if self.stop_sig:
|
||||
print('User aborted the task.')
|
||||
#with self.task_queue.mutex: self.task_queue.queue.clear()
|
||||
if self.stop_sig: print('User aborted the task.')
|
||||
self.is_running = self.stop_sig = False
|
||||
self.task_queue.task_done()
|
||||
if self.handler is not None: self.handler.code_stop_signal.append(1)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
import argparse
|
||||
|
||||
@@ -53,6 +53,18 @@ async function handleExtMessage(msg, sender) {
|
||||
return { ok: false, error: 'Unknown method: ' + msg.method };
|
||||
} catch (e) { return { ok: false, error: e.message }; }
|
||||
}
|
||||
if (msg.cmd === 'contentSettings') {
|
||||
try {
|
||||
const type = msg.type || 'automaticDownloads';
|
||||
const setting = msg.setting || 'allow';
|
||||
const pattern = msg.pattern || '<all_urls>';
|
||||
await chrome.contentSettings[type].set({
|
||||
primaryPattern: pattern,
|
||||
setting: setting
|
||||
});
|
||||
return { ok: true };
|
||||
} catch (e) { return { ok: false, error: e.message }; }
|
||||
}
|
||||
return { ok: false, error: 'Unknown cmd: ' + msg.cmd };
|
||||
}
|
||||
|
||||
|
||||
@@ -11,7 +11,8 @@
|
||||
"scripting",
|
||||
"alarms",
|
||||
"declarativeNetRequest",
|
||||
"management"
|
||||
"management",
|
||||
"contentSettings"
|
||||
],
|
||||
"host_permissions": ["<all_urls>"],
|
||||
"background": {
|
||||
|
||||
@@ -54,6 +54,10 @@ web_execute_js script='{"cmd": "batch", "commands": [...]}'
|
||||
通信方式:⭐JSON字符串直传(首选) | TID DOM方式(TID元素+MutationObserver,web_scan/execute_js底层依赖)
|
||||
单命令:`{cmd:'tabs'}` | `{cmd:'cookies'}` | `{cmd:'cdp', tabId:N, method:'...', params:{...}}` | `{cmd:'management', method:'list|reload|disable|enable', extId:'...'}`
|
||||
- management:list返回所有扩展信息;reload/disable/enable需传extId
|
||||
- contentSettings:`{cmd:'contentSettings', type:'automaticDownloads', pattern:'https://*/*', setting:'allow'}`
|
||||
- 绕过Chrome"下载多个文件"对话框(该对话框会阻塞整个浏览器JS执行)
|
||||
- type可选:automaticDownloads/popups/notifications等;setting:allow/block/ask
|
||||
- ⚠CDP的Browser.setDownloadBehavior在扩展中不可用(chrome.debugger仅tab级),此为替代方案
|
||||
- ⭐batch混合:`{cmd:'batch', commands:[{cmd:'cookies'},{cmd:'tabs'},{cmd:'cdp',...},...]}`
|
||||
- 返回`{ok:true, results:[...]}`,一次请求多命令,CDP懒attach复用session
|
||||
- 子命令会自动继承外层batch的tabId(如cookies命令可正确获取当前页面URL)
|
||||
|
||||
Reference in new issue
Block a user