Zmusza% s do ucieczki spacji z plusem zamiast dwudziestu procent

9

Chciałbym użyć mc jako skrótu wyszukiwania metacritic.com z Google Chrome. Ustawiłem następujący wyszukiwany adres URL skrótu:

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

Niestety, kiedy szukam patrycjusza iii w następujący sposób

mc patrcian iii

Chrome generuje to zapytanie, które metakrytycznie błędnie interpretuje, tworząc niepotrzebny zestaw niepowiązanych wyników:

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

Metacritic lubi to zapytanie, dając mi dokładnie ten wynik, którego szukałem:

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

Jak zmusić Chrome do używania symboli plus zamiast spacji zakodowanych w adresie URL?

sheldonh
źródło
(IE umożliwia wybranie znaku ucieczki używanego dla kilku różnych. Deweloperzy Chrome znają się jednak lepiej niż użytkownicy. :-|)
Synetech

Odpowiedzi:

4

Choć nieco prymitywne, możesz utworzyć proste rozszerzenia Chrome, które dostosowują URL do metakrytycznych (lub innych witryn, jeśli chcesz)

Oto kod, którego użyłem dla rozszerzenia Metacritic Search URL Replace:

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"
}

skrypt.js:

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

Ponieważ tak naprawdę nie mam niezawodnego miejsca do przesłania mojego rozszerzenia, oto instrukcje tworzenia rozszerzenia Chrome przy użyciu tych dwóch plików:

Najpierw umieść dwa pliki w folderze i przejdź do rozszerzeń chrome: //. Upewnij się, że tryb programisty jest aktywny (spójrz na prawy górny róg strony, aby to włączyć). Tutaj możesz wybrać „Pack pack ..”, który prosi o folder, w którym znajduje się skrypt. Po wybraniu tego folderu rozszerzenie zostanie utworzone i po prostu przeciągnij je i upuść w Chrome, aby zainstalować. Jeśli wszystko poszło zgodnie z planem, skrypt przepisze adres URL żądania wyszukiwania Metacritic z „% 20” na znaki „+”.

Teraz możesz użyć http://metacritic.com/search/all/%s/resultsjako URL wyszukiwarki w samym Chrome, aby użyć skrótu do tego wyszukiwania.

Mam nadzieję że to pomoże.. ;)

JiriB
źródło
To naprawdę ładnie wygląda. Możesz przesłać go do GitHub lub coś takiego.
slhck
Oto rozszerzenie (.crx) i źródło: link
JiriB
5

Nie musisz używać stylu wyszukiwania REST, ale możesz zamiast tego użyć normalnych parametrów HTTP GET, takich jak:

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

W twoim przypadku byłoby to:

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

Niestety nie działa to z Metacricic (?).

Najlepsze, co mogłem uzyskać, to następująca funkcja wyszukiwania, jednak z jakiegoś powodu tak naprawdę nie przekierowuje:

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>

Podstawowe informacje:

Chrome koduje wysyłane parametry w zależności od pozycji, tzn. Czy znajduje się ona w adresie URL lub jako parametr GET. W obrębie adresu URL sensowne jest przekonwertowanie spacji %20, podczas gdy w parametrze +jest używana.

Niestety, nie są w stanie zmienić tego zachowania , więc domyślam się, że prosta linia JavaScript mogłaby to naprawić. Przyjrzę się temu.

slhck
źródło
Próbowałeś? Nie działa dla patrycjusza iii.
sheldonh
Wiele systemów faktycznie używa przepisywania HTTP do mapowania nazw ścieżek na żądania HTTP GET.
Majenko,
@sheldonh To interesujące, ponieważ wyszukiwane hasło jest poprawnie wstawione, przyjrzę się temu.
slhck
@ slhck Tak, to, co robisz, naprawdę powinno działać. Dziękuję za poświęcony czas i uwagę.
sheldonh
@sheldonh Znalazłem metodę i zredagowałem swój post, niestety Chrome jeszcze nie przekierowuje, ale jesteśmy o krok dalej w kierunku rozwiązania.
slhck
3

Jak wskazał slhck w swojej odpowiedzi, Chrome obsługuje tylko% s i nalega na „inteligentne” określenie, czy użyć symboli plus, czy %20też spacji (patrz błąd Chromium 78429 ).

Konkretny przypadek testowy, z którym mam do czynienia (metacritic.com), nakłada zbyt wiele obręczy, aby przeskakiwać jednocześnie z interfejsem wyszukiwania RESTful.

Dlatego jako obejście postanowiłem po prostu użyć starszego interfejsu app.metacritic.com:

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

Gdyby to nie było dostępne, skontaktowałbym się z metacritic.com, skierował ich do błędu Chromium i błagał o litość. :-)

sheldonh
źródło
Najwyraźniej to przestało działać. :-(
A. Donda
1

Nie udało mi się poprawnie zainstalować .crx ani .js (być może to moja wina).

Udało mi się go uruchomić, polegając na skrypcie greasemonkey (osobiście używam rozszerzenia Tampermonkey google chrome do obsługi skryptów fatmonkey).

Będąc w Tampermonkey, tworzę nowy skrypt i wklejam następujące (i działa! Jeszcze raz WIELKIE DZIĘKI JiriB, ponieważ właśnie kopiowałem / wkleiłem jego wyniki):

// ==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
źródło
1

Miałem trudności z tym samym i znalazłem tę stronę. Niestety odpowiedzi były zbyt skomplikowane lub, podobnie jak starsza koncepcja wyszukiwania, nie zadziałały, a potem nagle przypomniałem sobie, co robiłem z metacritic, którym było wyszukiwanie w google, ponieważ wyszukiwarka metacritics była tak słaba (nadal jest , tak właściwie). Więc stworzyłem wyszukiwarkę Google i sprawiłem, że moje wyszukiwanie metakrytyczne:

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

Oczywiście nie jest to idealne, ponieważ nie wyświetla się ładna strona wyników wyszukiwania metacritic, ale daje przydatne wyniki. Stworzyłem również wersje specyficzne dla kanału; na przykład, jeśli chcę wyszukiwać programy telewizyjne, używam tego samego silnika z dodanym „/ tv /”.

Charles Herold
źródło
1

Edycja: Dodałem to podstawowe rozszerzenie do Chrome Store, dodałem również ikony, ale nie zmieniłem kodu w inny sposób. Tak, teraz Chrome może to zrobić i mogę go usunąć z mojego folderu pobierania! Link to: Narzędzie do wyszukiwania metakrytycznego .

Oryginalny post : Zaktualizowałem kod rozszerzenia JiriB, aby znów działał w Chrome! Naprawdę potrzebował tylko jednej dodatkowej linii. Nigdy wcześniej nie korzystałem z github, ale rozwidliłem jego projekt i przesłałem prośbę.

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"
}

skrypt.js:

window.location = window.location.href.replace(/%20/g, "+");
Stainboy
źródło