Змушує% s виходити з пробілів з плюсом замість відсотків двадцяти


9

Я хотів би використовувати mc як ярлик пошуку для metacritic.com з Google Chrome. Я встановив таку URL-адресу пошуку для ярлика:

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

На жаль, коли я шукаю патриція iii так

mc patrcian iii

Chrome виробляє цей запит, який метакритично неправильно трактує, щоб отримати марний набір непов'язаних результатів:

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

Метакритик любить цей запит, даючи мені саме той результат, який я шукав:

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

Як змусити Chrome використовувати плюс символи замість пробілів, кодованих URL-адресою?


(IE дозволяє вибрати символ втечі, який використовується для декількох різних. Chrome розробники знають краще, ніж користувачі. :-|)
Synetech

Відповіді:


4

Хоч і трохи грубо, ви можете створити прості розширення Chrome, які коригують URL для метакритичних даних (або інших сайтів, якщо хочете)

Ось код, який я використовував для розширення Замінити URL-адресу метакритичного пошуку:

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

Оскільки у мене дійсно немає надійного місця для завантаження розширення, ось інструкції зі створення розширення Chrome за допомогою цих двох файлів:

По-перше, помістіть два файли у папку, яку-небудьбули, і перейдіть до chrome: // extensions. Переконайтесь, що режим для розробників активний (подивіться вгорі праворуч сторінки, щоб увімкнути це). Тут ви можете вибрати "Розширення пакета ..", яке запитує вас про папку, де знаходиться ваш скрипт. Вибравши цю папку, розширення буде створено, і ви можете просто перетягнути його в Chrome для встановлення. Якщо все пішло за планом, скрипт перепише URL-адресу для запиту метакритичного пошуку з символів '% 20' до символів '+'.

Тепер ви можете використовувати http://metacritic.com/search/all/%s/resultsURL-адресу пошукової системи в самому Chrome, щоб використовувати ярлик до цього пошуку.

Сподіваюся, що це допомагає ..;)


Це насправді виглядає приємно. Ви можете завантажити його в GitHub або щось подібне.
slhck

Ось розширення (.crx) та джерело: посилання
JiriB

5

Вам не потрібно використовувати стиль пошуку REST, але натомість можна використовувати звичайні параметри HTTP GET на зразок цього:

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

Тож у вашому випадку це було б:

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

На жаль, це не працює з Metacricic (?).

Найкраще, що я міг отримати, - це наступна функція пошуку, однак вона чомусь насправді не переадресовує:

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>

Довідкова інформація:

Chrome кодує надіслані параметри залежно від позиції, тобто якщо вона знаходиться в межах URL-адреси або як GET-параметр. У межах URL-адреси має сенс перетворити пробіл %20, тоді як у параметрі +використовується.

На жаль, їм не до зміни такої поведінки , тому я гадаю, що проста лінія Javascript могла це виправити. Я розберуся в це.


Ви пробували? Iii) не працює для патриції iii.
sheldonh

Багато систем насправді використовують перезапис HTTP для зіставлення імен шляхів до HTTP GET-запитів.
Маєнко

@sheldonh Це цікаво, оскільки пошуковий термін правильно вставлений, я його перегляну.
slhck

@slhck Так, те, що ти справді робиш, - має працювати. Дякуємо за ваш час та увагу.
sheldonh

@sheldonh Я знайшов метод і відредагував своє повідомлення, на жаль, Chrome ще не перенаправляє, але ми є кроком далі до рішення.
slhck

3

Як вказує slhck у своїй відповіді, Chrome підтримує лише% s та наполягає на "розумному" визначенні того, використовувати символи плюс чи %20уникати пробілів (див. Chromium bug 78429 ).

Конкретний тестовий випадок, з яким я маю справу (metacritic.com), накладає занадто багато обручів, щоб одночасно проскакувати їх інтерфейс пошуку RESTful.

Тому я вирішив просто використовувати спадковий інтерфейс app.metacritic.com:

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

Якби цього не було, я б зв’язався з metacritic.com, відправив їх до хромової помилки і попросив милосердя. :-)


Мабуть, це перестало працювати. :-(
А. Донда

1

Я не зміг змусити ні .crx, ні .js встановити належним чином (можливо, я винен).

Мені вдалося змусити його працювати, спираючись на сценарій greasemonkey (я особисто використовую розширення google Chrome для Tampermonkey для обробки сценаріїв gresemonkey).

Опинившись у Tampermonkey, я створюю новий сценарій і вставляю наступний (і він працює! Ще раз, ВЕЛИКИЙ ДЯКУЄ JiriB, коли я просто копіюю / вставляю його висновки):

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

У мене були проблеми з цим самим, і я знайшов цю сторінку. На жаль, відповіді були або занадто складними, або, як і застаріла пошукова ідея, не спрацювали, і тоді я раптом згадав, що я раніше робив з метакритикою, яка полягала в пошуку в Google, тому що пошукова система метакритики була настільки поганою (все ще є , власне). Тому я створив пошук у Google і зробив цей мій метакритичний пошук:

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

Очевидно, це не ідеально, оскільки ви не отримуєте приємної сторінки результатів пошуку метакритики, але це дає корисні результати. Я також створив конкретні версії каналу; Наприклад, якщо я хочу шукати телепередачі, я використовую той самий двигун, до якого додано "/ tv /".


1

Редагувати: я додав це основне розширення до магазину Chrome, я також додав іконки, але іншим чином не змінив код. Так, зараз Chrome може просто зробити своє, і я можу видалити його з папки завантаження! Посилання: Фіксатор метакритичного пошуку .

Оригінальний пост : Я оновив код розширення JiriB, щоб він знову працював у Chrome! Це дійсно просто потребувало однієї додаткової лінії. Я ніколи раніше не використовував github, але я відправив його проект і надіслав запит на тягнення.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.