% S zwingen, Leerzeichen mit Plus anstelle von Prozent 20 zu verlassen

9

Ich möchte mc als Suchverknüpfung für metacritic.com von Google Chrome verwenden. Ich habe die folgende Such-URL für die Verknüpfung eingerichtet:

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

Leider, wenn ich nach Patrizier III wie folgt suche

mc patrcian iii

Chrome erzeugt diese Abfrage, die metakritisch falsch interpretiert, um eine nutzlose Reihe von nicht verwandten Ergebnissen zu erzeugen:

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

Metacritic mag diese Abfrage und gibt mir genau das Ergebnis, nach dem ich gesucht habe:

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

Wie kann ich Chrome zwingen, Pluszeichen anstelle von URL-codierten Leerzeichen zu verwenden?

sheldonh
quelle
(IE ermöglicht es Ihnen, das Escape-Zeichen zu wählen, das für mehrere verschiedene verwendet wird. Chrome-Entwickler wissen es jedoch besser als Benutzer. :-|)
Synetech

Antworten:

4

Obwohl etwas grob, können Sie einfache Chrome-Erweiterungen erstellen, die die URL für metakritische (oder andere Websites, wenn Sie möchten) anpassen.

Hier ist der Code, den ich für eine Metacritic Search URL Replace-Erweiterung verwendet habe:

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

Da ich nicht wirklich einen zuverlässigen Ort zum Hochladen meiner Erweiterung habe, finden Sie hier die Anweisungen zum Erstellen einer Chrome-Erweiterung mit diesen beiden Dateien:

Legen Sie die beiden Dateien zunächst irgendwo in einem Ordner ab und navigieren Sie zu chrome: // extensions. Stellen Sie sicher, dass der Entwicklermodus aktiv ist (siehe oben rechts auf der Seite, um dies zu aktivieren). Hier können Sie "Pack-Erweiterung" auswählen, in der Sie nach dem Ordner gefragt werden, in dem sich Ihr Skript befindet. Sobald Sie diesen Ordner ausgewählt haben, wird die Erweiterung erstellt und Sie können sie zur Installation einfach per Drag & Drop in Chrome ziehen. Wenn alles nach Plan verlaufen ist, schreibt das Skript die URL für eine metakritische Suchanforderung von '% 20' auf '+' um.

Jetzt können Sie http://metacritic.com/search/all/%s/resultsin Chrome selbst eine Suchmaschinen-URL verwenden, um eine Verknüpfung zu dieser Suche zu verwenden.

Hoffe das hilft.. ;)

JiriB
quelle
Das sieht eigentlich gut aus. Du könntest es auf GitHub oder so hochladen .
Slhck
Hier ist die Erweiterung (.crx) und Quelle: Link
JiriB
5

Sie müssen nicht den REST-Suchstil verwenden, sondern können stattdessen normale HTTP-GET-Parameter wie folgt verwenden:

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

In Ihrem Fall wäre das also:

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

Leider funktioniert dies nicht mit Metacricic (?).

Das Beste, was ich bekommen konnte, ist die folgende Suchfunktion, die jedoch aus irgendeinem Grund nicht wirklich umgeleitet wird:

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>

Hintergrundinformation:

Chrome codiert die gesendeten Parameter abhängig von der Position, dh ob sie sich innerhalb einer URL oder als GET-Parameter befinden. Innerhalb einer URL ist es sinnvoll, ein Leerzeichen in zu konvertieren %20, während in einem Parameter das +verwendet wird.

Leider sind sie nicht in der Lage, dieses Verhalten zu ändern. Ich würde also vermuten, dass eine einfache Zeile Javascript dies beheben könnte. Ich werde es untersuchen.

slhck
quelle
Hast Du es versucht? Funktioniert nicht für Patrizier III.
Sheldonh
Viele Systeme verwenden tatsächlich HTTP-Umschreibung, um Pfadnamen HTTP-GET-Anforderungen zuzuordnen.
Majenko
@sheldonh Das ist interessant, weil der Suchbegriff richtig eingefügt ist, ich werde ihn untersuchen.
Slhck
@slhck Ja, was du wirklich machst, sollte funktionieren. Vielen Dank für Ihre Zeit und Aufmerksamkeit.
Sheldonh
@sheldonh Ich habe eine Methode gefunden und meinen Beitrag bearbeitet. Leider leitet Chrome noch nicht weiter, aber wir sind einen Schritt weiter in Richtung einer Lösung.
Slhck
3

Wie von slhck in seiner Antwort hervorgehoben, unterstützt Chrome nur% s und besteht darauf, "intelligent" zu bestimmen, ob Pluszeichen oder %20Leerzeichen verwendet werden sollen (siehe Chromium-Fehler 78429 ).

Der spezielle Testfall, mit dem ich mich befasse (metacritic.com), erfordert zu viele Rahmen, um gleichzeitig mit der RESTful-Suchoberfläche durchzuspringen.

Daher habe ich mich als Workaround dafür entschieden, einfach die Legacy-Oberfläche von app.metacritic.com zu verwenden:

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

Wenn das nicht verfügbar gewesen wäre, hätte ich metacritic.com kontaktiert, sie auf den Chromium-Fehler verwiesen und um Gnade gebeten. :-)

sheldonh
quelle
Anscheinend hat das aufgehört zu funktionieren. :-(
A. Donda
1

Ich konnte weder die .crx- noch die .js-Datei ordnungsgemäß installieren (möglicherweise ist es meine Schuld).

Ich habe es geschafft, es zum Laufen zu bringen, indem ich mich auf ein Greasemonkey-Skript verlassen habe (ich verwende persönlich die Google Chrome-Erweiterung Tampermonkey, um Greasemonkey-Skripte zu verarbeiten).

Sobald ich in Tampermonkey bin, erstelle ich ein neues Skript und füge Folgendes ein (und es funktioniert! Nochmals ein großes Dankeschön an JiriB, da ich gerade seine Ergebnisse kopiert / eingefügt habe):

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

Ich hatte Schwierigkeiten mit der gleichen Sache und fand diese Seite. Leider waren die Antworten entweder zu komplex oder funktionierten wie die alte Suchidee nicht, und dann fiel mir plötzlich ein, was ich mit Metacritic gemacht hatte, nämlich mit Google zu suchen, weil die Metacritics-Suchmaschine so schlecht war (immer noch ist) , tatsächlich). Also habe ich eine Google-Suche erstellt und diese zu meiner metakritischen Suche gemacht:

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

Offensichtlich ist es nicht ideal, da Sie nicht die nette Suchergebnisseite von metacritic erhalten, aber es liefert nützliche Ergebnisse. Ich habe auch kanalspezifische Versionen erstellt. Wenn ich beispielsweise nach Fernsehsendungen suchen möchte, verwende ich dieselbe Engine mit "/ tv /".

Charles Herold
quelle
1

Bearbeiten: Ich habe diese grundlegende Erweiterung zum Chrome Store hinzugefügt. Ich habe auch Symbole hinzugefügt, aber den Code ansonsten nicht geändert. Ja, jetzt kann Chrome einfach sein Ding machen und ich kann es aus meinem Download-Ordner löschen! Link ist: Metakritischer Suchfixer .

Ursprünglicher Beitrag : Ich habe den Erweiterungscode von JiriB aktualisiert, damit er wieder in Chrome funktioniert! Es brauchte wirklich nur eine zusätzliche Zeile. Ich habe noch nie Github verwendet, aber ich habe sein Projekt gegabelt und eine Pull-Anfrage eingereicht.

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
quelle