Forçando% s a escapar de espaços com mais em vez de vinte por cento

9

Eu gostaria de usar o mc como atalho de pesquisa para metacritic.com no Google Chrome. Configurei o seguinte URL de pesquisa para o atalho:

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

Infelizmente, quando procuro pelo patrício iii da seguinte maneira

mc patrcian iii

O Chrome produz essa consulta, que o metacrítico interpreta incorretamente para produzir um conjunto inútil de resultados não relacionados:

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

O Metacritic gosta dessa consulta, fornecendo exatamente o resultado que eu estava procurando:

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

Como forçar o Chrome a usar símbolos de mais em vez de espaços codificados em URL?

sheldonh
fonte
(IE permite que você escolha o caractere de escape utilizado para vários diferentes Chrome devs no entanto sabe melhor do que os usuários.. :-|)
Synetech

Respostas:

4

Embora um pouco bruto, você pode criar extensões simples do Chrome que ajustam o URL para metacritic (ou outros sites, se desejar)

Aqui está o código que eu usei para uma extensão Substituir URL de pesquisa do Metacritic:

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, "+");

Como realmente não tenho um local confiável para fazer upload da minha extensão, aqui estão as instruções para criar uma extensão do Chrome usando esses dois arquivos:

Primeiro, coloque os dois arquivos em uma pasta em algum lugar e navegue até chrome: // extensions. Verifique se o modo de desenvolvedor está ativo (veja no canto superior direito da página para ativar isso). Aqui você pode selecionar 'Extensão do pacote ...', que solicita a pasta onde reside o seu script. Depois de selecionar esta pasta, a extensão será criada e você pode simplesmente arrastar e soltar no Chrome para instalar. Se tudo correu conforme o planejado, o script reescreverá o URL para uma solicitação de pesquisa do Metacritic dos caracteres '% 20' para '+'.

Agora, você pode usar http://metacritic.com/search/all/%s/resultscomo um URL do mecanismo de pesquisa no próprio Chrome para usar um atalho para essa pesquisa.

Espero que isto ajude.. ;)

JiriB
fonte
Isso realmente parece bom. Você pode enviá-lo para o GitHub ou algo assim.
slhck
Aqui está a extensão (.crx) e a fonte: link
JiriB
5

Você não precisa usar o estilo de pesquisa REST, mas pode usar parâmetros HTTP GET normais como este:

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

Então, no seu caso, isso seria:

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

Infelizmente, isso não funciona com Metacricic (?).

O melhor que pude obter é a seguinte função de pesquisa, no entanto, ela realmente não redireciona por algum motivo:

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>

Informações de fundo:

O Chrome codifica os parâmetros enviados, dependendo da posição, ou seja, se estiver dentro de um URL ou como um parâmetro GET. Dentro de uma URL, faz sentido converter um espaço para %20, enquanto em um parâmetro o +é usado.

Infelizmente, eles não estão dispostos a mudar esse comportamento , portanto, acho que uma simples linha de Javascript poderia corrigir isso. Eu vou dar uma olhada.

slhck
fonte
Você tentou? Não funciona para o patrício iii.
Sheldonh
Muitos sistemas realmente usam reescrita HTTP para mapear nomes de caminho para solicitações HTTP GET.
Majenko
@ sheldonh Isso é interessante, porque o termo de pesquisa está inserido corretamente, vou dar uma olhada nele.
slhck
@ slhck Sim, o que você está fazendo realmente deve funcionar. Obrigado pelo seu tempo e atenção.
Sheldonh
@sheldonh Encontrei um método e editei minha postagem, infelizmente o Chrome ainda não redireciona, mas estamos um passo adiante em direção a uma solução.
Slhck
3

Conforme apontado por slhck em sua resposta, o Chrome suporta apenas% s e insiste em "inteligentemente" determinar se deve usar símbolos de adição ou %20escapar de espaços (consulte o bug do Chromium 78429 ).

O caso de teste específico com o qual estou lidando (metacritic.com) impõe muitos obstáculos a serem percorridos simultaneamente com sua interface de pesquisa RESTful.

Portanto, como solução alternativa, optei por simplesmente usar a interface herdada do app.metacritic.com:

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

Se isso não estivesse disponível, eu teria entrado em contato com o metacritic.com, encaminhado o bug do Chromium e implorando misericórdia. :-)

sheldonh
fonte
Aparentemente, isso parou de funcionar. :-(
A. Donda
1

Não consegui instalar nem o .crx nem o .js (talvez seja minha culpa).

Consegui fazê-lo funcionar com base em um script greasemonkey (eu uso pessoalmente a extensão Tampermonkey google chrome para lidar com scripts greasemonkey).

Uma vez em Tampermonkey, crio um novo script e colo o seguinte (e funciona! Mais uma vez, MUITO OBRIGADO ao JiriB, pois acabei de copiar / colar suas descobertas):

// ==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, "+");
zifnab
fonte
1

Eu estava tendo dificuldades com a mesma coisa e encontrei esta página. Infelizmente, as respostas eram muito complexas ou, como a idéia de pesquisa herdada, não funcionaram e, de repente, lembrei-me do que costumava fazer com o metacritic, que era pesquisá-lo no google porque o mecanismo de pesquisa metacritics era muito ruim (ainda é , na realidade). Então, o que eu fiz foi criar uma pesquisa no google e tornar essa minha pesquisa metacrítica:

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

Obviamente, não é o ideal, pois você não obtém a boa página de resultados de pesquisa do metacritic, mas fornece resultados úteis. Eu também criei versões específicas de canais; por exemplo, se eu quiser procurar programas de TV, uso o mesmo mecanismo com "/ tv /" adicionado a ele.

Charles Herold
fonte
1

Editar: adicionamos esta extensão básica à Chrome Store, também adicionamos ícones, mas não alteramos o código. Agora, o Chrome pode fazer o que pode e eu posso excluí-lo da minha pasta de downloads! O link é: Fixador de pesquisa Metacritic .

Post original : atualizei o código de extensão do JiriB para que ele funcione novamente no Chrome! Realmente só precisava de uma linha extra. Eu nunca usei o github antes, mas peguei o projeto dele e enviei uma solicitação de recebimento.

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, "+");
Stainboy
fonte