强制%s使用加号(而不是百分之二十)转义空格


9

我想使用mc作为来自Google Chrome的metacritic.com的搜索快捷方式。我为快捷方式设置了以下搜索URL:

http://metacritic.com/search/all/%s/results

不幸的是,当我按以下方式搜索贵族iii时

mc patrcian iii

Chrome会产生此查询,该查询会因误解误解而产生无用的无关结果集:

http://www.metacritic.com/search/all/patrician%20iii/results

Metacritic喜欢这个查询,为我提供了我一直在寻找的结果:

http://www.metacritic.com/search/all/patrician+iii/results

如何强制Chrome使用加号而不是URL编码的空格?


(IE允许您选择用于多个不同字符的转义符。但是,Chrome开发人员比用户更了解。:-|
Synetech 2011年

Answers:


4

虽然有点粗糙,但是您可以创建一个简单的Chrome扩展程序,该扩展程序可以调整元访问(或其他站点)的URL

这是我用于Metacritic搜索URL替换扩展的代码:

manifest.json:

{
    "content_scripts": [ {
    "include_globs": [ "http://www.metacritic.com/search/*%20*" ],
    "js": [ "script.js" ],
        "matches": [ "http://*/*", "https://*/*" ],
        "run_at": "document_start"
    } ],
    "converted_from_user_script": true,
    "description": "Replaces '%20' in metacritic search request to '+'",
    "name": "Metacritic search replacer",
    "version": "0.1"
}

script.js:

window.location = window.location.href.replace(/%20/g, "+");

由于我确实没有可靠的位置来上传扩展程序,因此以下是使用这两个文件创建Chrome扩展程序的说明:

首先,将这两个文件放在一个文件夹中,然后浏览至chrome:// extensions。确保开发人员模式处于活动状态(查看页面右上角以启用此功能)。在这里,您可以选择“ Pack extension ..”,它询问您脚本所在的文件夹。选择此文件夹后,便会创建扩展程序,您只需将其拖放到Chrome中即可安装。如果一切都按计划进行,则脚本会将Metacritic搜索请求的URL从'%20'重写为'+'字符。

现在,您可以http://metacritic.com/search/all/%s/results在Chrome本身中用作搜索引擎网址,以使用此搜索的快捷方式。

希望这可以帮助.. ;)


这实际上看起来不错。您可以将其上传到GitHub等
slhck 2011年

这是扩展名(.crx)和源:链接
JiriB 2011年

5

您无需使用REST样式的搜索,而可以使用如下常规的HTTP GET参数:

http://www.metacritic.com/search/all/results?search_term=test+query

因此,在您的情况下,将是:

http://www.metacritic.com/search/all/results?search_term=%s

不幸的是,这不适用于Metacricic(?)。

我能得到的最好的结果是以下搜索功能,但是由于某些原因,它并没有真正重定向:

data:text/html;charset=utf-8,<script>var s = "%s"; s = s.replace("%20", "+"); var url = "http://www.metacritic.com/search/all/" + s + "/results"; window.location = url;</script>

背景信息:

Chrome会根据位置对发送的参数进行编码,即位置是否在URL中或作为GET参数。在URL中,将空格转换为是有意义的%20,而在参数中+则使用。

不幸的是,他们不能改变这种行为,所以我猜想很简单的一行Java语言可以解决这个问题。我会调查一下。


你试过了吗?对贵族iii不起作用。
sheldonh

许多系统实际上使用HTTP重写将路径名映射到HTTP GET请求。
马延科

@sheldonh这很有趣,因为正确插入了搜索词,我将对其进行调查。
slhck

@slhck是的,您实际上在做什么-应该工作。感谢您的时间和关注。
sheldonh,2011年

@sheldonh我找到了一种方法并编辑了我的帖子,很遗憾,Chrome尚未重定向,但我们朝解决方案迈出了一步。
slhck

3

正如slhck在其回答中指出的那样,Chrome仅支持%s,并坚持“智能地”确定是使用加号还是%20转义空格(请参阅Chromium bug 78429)。

我正在处理的特定测试用例(metacritic.com)施加了太多麻烦,无法与其RESTful搜索界面同时进行。

因此,作为解决方法,我选择仅使用app.metacritic.com的旧界面:

http://apps.metacritic.com/search/process?tfs=game_title&sb=0&game_platform=PC&­ts=%s

如果没有,我会联系metacritic.com,将他们引到Chromium错误,然后求饶。:-)


显然,这已停止工作。:-(
A. Donda

1

我无法正确安装.crx或.js(也许是我的错)。

我设法通过依靠lublessmonkey脚本来使其正常工作(我确实使用人妖的Google Tamper谷歌chrome扩展程序来处理lublessmonkey脚本)。

在Tampermonkey中,我创建了一个新脚本并粘贴以下脚本(它可以正常工作!再次感谢JiriB,因为我只是复制/粘贴了他的发现):

// ==UserScript==
// @name         Google-Chrome-URL-Replacer-Extension (Metacritic)
// @namespace    https://github.com/FjearJiri/Google-Chrome-URL-Replacer-Extension/
// @version      1.0
// @description  Replaces %20 with + in URLs in order to build valid URLS for search engine shortcuts
// @include      http://www.metacritic.com/search/*%20*
// @copyright    2011+, FjearJiri ('ported' to greasemonkey script by zifnab)
// ==/UserScript==
// http://superuser.com/questions/281934/forcing-s-to-escape-spaces-with-plus-instead-of-percent-twenty
window.location = window.location.href.replace(/%20/g, "+");

1

我在处理同一件事时遇到困难,并找到了此页面。不幸的是,答案要么太复杂,要么像旧式搜索的想法一样行不通,然后我突然想起了我曾经使用metacritic所做的事情,这是用google搜索的,因为metacritics搜索引擎太差了(仍然是,实际上)。因此,我要做的是创建一个Google搜索并进行我的元搜索:

https://www.google.com/search?gcx=w&ix=c2&sourceid=chrome&ie=UTF-8&q=site%3Ametacritic.com+%s

显然,这并不理想,因为您无法获得metacritic的漂亮搜索结果页面,但确实可以提供有用的结果。我还创建了特定于渠道的版本;例如,如果我要搜索电视节目,则使用添加了“ / tv /”的相同引擎。


1

编辑:我已经将此基本扩展名添加到Chrome商店中,还添加了图标,但没有更改代码。是的,现在Chrome可以执行其操作了,我可以从下载文件夹中将其删除!链接是:Metacritic搜索修复程序

原始帖子:我已经更新了JiriB的扩展代码,因此它可以再次在Chrome中运行!它实际上只需要多一条线。我以前从未使用过github,但是我分叉了他的项目并提交了pull请求。

manifest.json:

{
"content_scripts": [ {
"include_globs": [ "http://www.metacritic.com/search/*%20*" ],
"js": [ "script.js" ],
    "matches": [ "http://*/*", "https://*/*" ],
    "run_at": "document_start"
} ],
"converted_from_user_script": true,
"description": "Replaces '%20' in metacritic search request to '+'",
"name": "Metacritic search fixer",
"manifest_version": 2,
"version": "0.2.2"
}

script.js:

window.location = window.location.href.replace(/%20/g, "+");

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.