Forzare% s per sfuggire agli spazi con più anziché per cento venti


9

Vorrei usare mc come scorciatoia di ricerca per metacritic.com da Google Chrome. Ho impostato il seguente URL di ricerca per il collegamento:

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

Sfortunatamente, quando cerco patrician iii come segue

mc patrcian iii

Chrome produce questa query, che interpreta in modo metacritico per produrre un insieme inutile di risultati non correlati:

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

A Metacritic piace questa query, dandomi esattamente il risultato che stavo cercando:

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

Come posso forzare Chrome a utilizzare i simboli plus anziché gli spazi con codifica URL?


(IE ti consente di scegliere il carattere di escape utilizzato per molti diversi. Gli sviluppatori di Chrome tuttavia conoscono meglio degli utenti. :-|)
Synetech,

Risposte:


4

Anche se un po 'rozzo, puoi creare una semplice estensione di Chrome che regola l'URL per metacritic (o altri siti se vuoi)

Ecco il codice che ho usato per un URL di ricerca Metacritic Sostituisci estensione:

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

Dal momento che non ho davvero un posto affidabile per caricare la mia estensione, ecco le istruzioni per creare un'estensione di Chrome usando questi due file:

Innanzitutto, metti i due file in una cartella e cerca in chrome: // extensions. Assicurati che la modalità sviluppatore sia attiva (guarda in alto a destra della pagina per abilitarlo). Qui è possibile selezionare 'Estensione pacchetto ..' che richiede la cartella in cui risiede lo script. Dopo aver selezionato questa cartella, l'estensione verrà creata e puoi semplicemente trascinarla in Chrome per installarla. Se tutto è andato secondo i piani, lo script riscriverà l'URL per una richiesta di ricerca metacritica da '% 20' a '+' caratteri.

Ora, puoi utilizzare http://metacritic.com/search/all/%s/resultscome URL del motore di ricerca in Chrome stesso per utilizzare un collegamento a questa ricerca.

Spero che sia di aiuto.. ;)


In realtà sembra carino. Potresti caricarlo su GitHub o qualcosa del genere.
slhck,

Ecco l'estensione (.crx) e la fonte: link
JiriB,

5

Non è necessario utilizzare lo stile di ricerca REST, ma è invece possibile utilizzare i normali parametri HTTP GET come questo:

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

Quindi nel tuo caso sarebbe:

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

Sfortunatamente, questo non funziona con Metacricic (?).

Il meglio che ho potuto ottenere è la seguente funzione di ricerca, tuttavia non reindirizza davvero per qualche 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>

Informazioni sullo sfondo:

Chrome codifica i parametri inviati in base alla posizione, ovvero se si trova all'interno di un URL o come parametro GET. All'interno di un URL ha senso convertire uno spazio in %20, mentre in un parametro +viene utilizzato.

Sfortunatamente, non stanno cambiando questo comportamento , quindi la mia ipotesi sarebbe che una semplice linea di Javascript potesse risolvere questo problema. Ci penserò.


Hai provato? Non funziona per patrician iii.
sheldonh,

Molti sistemi utilizzano effettivamente la riscrittura HTTP per mappare i nomi dei percorsi alle richieste GET HTTP.
Majenko,

@sheldonh È interessante perché il termine di ricerca è inserito correttamente, lo esaminerò.
Slhck,

@slhck Sì, quello che stai facendo davvero dovrebbe funzionare. Grazie per il vostro tempo ed attenzione.
sheldonh,

@sheldonh Ho trovato un metodo e modificato il mio post, purtroppo Chrome non reindirizza ancora, ma siamo un passo avanti verso una soluzione.
slhck,

3

Come sottolineato da Slhck nella sua risposta, Chrome supporta solo% s e insiste affinché "in modo intelligente" determini se usare simboli più o %20per sfuggire agli spazi (vedi bug 78429 di Chromium ).

Il particolare caso di test con cui sto trattando (metacritic.com) impone troppi cerchi per saltare contemporaneamente alla loro interfaccia di ricerca RESTful.

Pertanto, come soluzione, ho scelto di utilizzare semplicemente l'interfaccia legacy di app.metacritic.com:

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

Se ciò non fosse stato disponibile, avrei contattato metacritic.com, li avrei indirizzati al bug Chromium e avrei chiesto pietà. :-)


Apparentemente questo ha smesso di funzionare. :-(
A. Donda

1

Non sono riuscito a far installare correttamente né il .crx né il .js (forse è colpa mia).

Sono riuscito a farlo funzionare facendo affidamento su uno script greasemonkey (uso personalmente l'estensione google chrome di Tampermonkey per gestire gli script greasemonkey).

Una volta in Tampermonkey creo un nuovo script e incollo quanto segue (e funziona! Ancora una volta, un GRANDE GRAZIE a JiriB, appena ho copiato / incollato i suoi risultati):

// ==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

Ho avuto difficoltà con questa stessa cosa e ho trovato questa pagina. Sfortunatamente le risposte erano o troppo complesse o, come l'idea di ricerca legacy, non funzionava, e poi improvvisamente mi sono ricordato cosa facevo con metacritic, che era quello di cercarlo con google perché il motore di ricerca metacritics era così scarso (lo è ancora , in realtà). Quindi quello che ho fatto è stato creare una ricerca su Google e rendere la mia ricerca metacritica:

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

Ovviamente non è l'ideale, in quanto non si ottiene la bella pagina dei risultati di ricerca di metacritic, ma fornisce risultati utili. Ho anche creato versioni specifiche per canale; per esempio, se voglio cercare programmi TV, uso lo stesso motore con "/ tv /" aggiunto ad esso.


1

Modifica: ho aggiunto questa estensione di base al Chrome Store, ho anche aggiunto icone ma non ho modificato il codice. Yay ora Chrome può fare la sua cosa e posso eliminarlo dalla mia cartella di download! Il link è: Fixer di ricerca metacritica .

Post originale : ho aggiornato il codice di estensione di JiriB in modo che funzioni di nuovo in Chrome! Aveva solo bisogno di una riga in più. Non ho mai usato github prima, ma ho modificato il suo progetto e inviato una richiesta 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, "+");

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.