Forcer% s à s'échapper des espaces avec plus au lieu de cent vingt


9

Je souhaite utiliser mc comme raccourci de recherche pour metacritic.com à partir de Google Chrome. J'ai configuré l'URL de recherche suivante pour le raccourci:

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

Malheureusement, quand je recherche patrician iii comme suit

mc patrcian iii

Chrome génère cette requête, qui métacritique interprète mal pour produire un ensemble inutile de résultats indépendants:

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

Metacritic aime cette requête, me donnant exactement le résultat que je cherchais:

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

Comment puis-je forcer Chrome à utiliser des symboles plus au lieu des espaces encodés par URL?


(IE vous permet de choisir le caractère d'échappement utilisé pour plusieurs caractères différents. Les développeurs Chrome connaissent cependant mieux que les utilisateurs. :-|)
Synetech

Réponses:


4

Bien qu'un peu grossier, vous pouvez créer une simple extension Chrome qui ajuste l'URL pour métacritique (ou d'autres sites si vous le souhaitez)

Voici le code que j'ai utilisé pour une extension de remplacement d'URL de recherche métacritique:

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

Comme je n'ai pas vraiment d'endroit fiable pour télécharger mon extension, voici les instructions pour créer une extension Chrome en utilisant ces deux fichiers:

Tout d'abord, placez les deux fichiers dans un dossier quelque part et accédez aux extensions chrome: //. Assurez-vous que le mode développeur est actif (regardez en haut à droite de la page pour l'activer). Ici, vous pouvez sélectionner «Pack extension ..» qui vous demande le dossier où réside votre script. Une fois que vous avez sélectionné ce dossier, l'extension sera créée et vous pouvez simplement la glisser-déposer dans Chrome pour l'installer. Si tout s'est déroulé comme prévu, le script réécrira l'URL d'une demande de recherche métacritique des caractères «% 20» aux caractères «+».

Maintenant, vous pouvez utiliser http://metacritic.com/search/all/%s/resultscomme URL de moteur de recherche dans Chrome lui-même pour utiliser un raccourci vers cette recherche.

J'espère que cela t'aides.. ;)


Cela a l'air vraiment sympa. Vous pouvez le télécharger sur GitHub ou quelque chose.
slhck

Voici l'extension (.crx) et la source: lien
JiriB

5

Vous n'avez pas besoin d'utiliser le style de recherche REST, mais pouvez plutôt utiliser des paramètres HTTP GET normaux comme ceci:

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

Donc, dans votre cas, ce serait:

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

Malheureusement, cela ne fonctionne pas avec Metacricic (?).

Le meilleur que j'ai pu obtenir est la fonction de recherche suivante, mais elle ne redirige pas vraiment pour une raison quelconque:

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>

Informations de fond:

Chrome code les paramètres envoyés en fonction de la position, c'est-à-dire s'ils se trouvent dans une URL ou en tant que paramètre GET. Dans une URL, il est logique de convertir un espace en %20, alors que dans un paramètre, le +est utilisé.

Malheureusement, ils ne sont pas prêts à changer ce comportement , donc je suppose qu'une simple ligne de Javascript pourrait résoudre ce problème. Je vais y jeter un œil.


L'avez-vous essayé? Ne fonctionne pas pour patricien iii.
sheldonh

De nombreux systèmes utilisent réellement la réécriture HTTP pour mapper les noms de chemin d'accès aux requêtes HTTP GET.
Majenko

@sheldonh C'est intéressant car le terme de recherche est correctement inséré, je vais l'examiner.
slhck

@slhck Oui, ce que vous faites fonctionne vraiment. Merci pour votre temps et votre attention.
sheldonh

@sheldonh J'ai trouvé une méthode et modifié mon message, malheureusement Chrome ne redirige pas encore, mais nous sommes un pas de plus vers une solution.
slhck

3

Comme l'a souligné slhck dans sa réponse, Chrome ne prend en charge que% s et insiste pour déterminer "intelligemment" s'il faut utiliser des symboles plus ou %20pour échapper aux espaces (voir le bogue Chromium 78429 ).

Le cas de test particulier auquel je fais face (metacritic.com) impose trop de cercles à franchir simultanément avec leur interface de recherche RESTful.

Par conséquent, comme solution de contournement, j'ai choisi d'utiliser simplement l'interface héritée de app.metacritic.com:

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

Si cela n'avait pas été disponible, j'aurais contacté metacritic.com, je les aurais référés au bogue Chromium et je lui aurais demandé pitié. :-)


Apparemment, cela a cessé de fonctionner. :-(
A. Donda

1

Je n'ai pas pu installer le .crx ou le .js correctement (c'est peut-être de ma faute).

J'ai réussi à le faire fonctionner en s'appuyant sur un script greasemonkey (j'utilise personnellement l'extension Tampermonkey google chrome pour gérer les scripts greasemonkey).

Une fois à Tampermonkey, je crée un nouveau script et je colle ce qui suit (et ça marche! Encore une fois, un GRAND MERCI à JiriB, car je viens de copier / coller ses résultats):

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

J'avais des difficultés avec cette même chose et j'ai trouvé cette page. Malheureusement, les réponses étaient trop complexes ou, comme l'idée de recherche héritée, ne fonctionnaient pas, puis je me suis soudain souvenu de ce que je faisais avec métacritique, qui était de le rechercher avec google parce que le moteur de recherche métacritique était si pauvre (il est toujours , réellement). Donc ce que j'ai fait, c'est créer une recherche google et en faire ma recherche métacritique:

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

Évidemment, ce n'est pas idéal, dans la mesure où vous n'obtenez pas la belle page de résultats de recherche de metacritic, mais cela donne des résultats utiles. J'ai également créé des versions spécifiques aux chaînes; par exemple, si je veux rechercher des émissions de télévision, j'utilise le même moteur avec "/ tv /" ajouté.


1

Modifier: j'ai ajouté cette extension de base au Chrome Store, j'ai également ajouté des icônes, mais je n'ai pas changé le code autrement. Ouais, Chrome peut juste faire son truc et je peux le supprimer de mon dossier de téléchargement! Le lien est: Fixateur de recherche métacritique .

Message d' origine : j'ai mis à jour le code d'extension de JiriB pour qu'il fonctionne à nouveau dans Chrome! Il fallait juste une ligne supplémentaire. Je n'ai jamais utilisé github auparavant, mais j'ai bifurqué son projet et soumis une demande de 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, "+");

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.