Memaksa% s untuk keluar dari ruang dengan plus alih-alih persen dua puluh

9

Saya ingin menggunakan mc sebagai pintasan pencarian untuk metacritic.com dari Google Chrome. Saya mengatur URL pencarian berikut untuk pintasan:

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

Sayangnya, ketika saya mencari ningrat iii sebagai berikut

mc patrcian iii

Chrome menghasilkan kueri ini, yang disalahartikan secara metakritik untuk menghasilkan rangkaian hasil yang tidak terkait yang tidak berguna:

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

Metacritic menyukai permintaan ini, memberi saya hasil yang saya cari:

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

Bagaimana saya bisa memaksa Chrome untuk menggunakan simbol plus alih-alih spasi yang disandikan URL?

sheldonh
sumber
(IE memungkinkan Anda untuk memilih karakter pelarian yang digunakan untuk beberapa yang berbeda. Namun Chrome devs lebih tahu daripada pengguna. :-|)
Synetech

Jawaban:

4

Meskipun sedikit kasar, Anda dapat membuat ekstensi Chrome sederhana yang menyesuaikan URL untuk metakritik (atau situs lain jika Anda mau)

Berikut kode yang saya gunakan untuk URL Metacritic Search URL Replace extension:

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

Karena saya tidak memiliki tempat yang dapat diandalkan untuk mengunggah ekstensi saya, berikut adalah petunjuk untuk membuat ekstensi Chrome menggunakan dua file ini:

Pertama, letakkan dua file di folder di suatu tempat dan telusuri ke chrome: // extensions. Pastikan mode pengembang aktif (lihat di kanan atas halaman untuk mengaktifkan ini). Di sini Anda dapat memilih 'Paket ekstensi ..' yang menanyakan folder tempat skrip Anda berada. Setelah Anda memilih folder ini, ekstensi akan dibuat dan Anda cukup menarik & melepasnya ke Chrome untuk menginstal. Jika semuanya berjalan sesuai rencana, skrip akan menulis ulang URL untuk permintaan pencarian Metacritic dari '% 20' ke karakter '+'.

Sekarang, Anda dapat menggunakan http://metacritic.com/search/all/%s/resultsurl mesin pencari di Chrome sendiri untuk menggunakan pintasan ke pencarian ini.

Semoga ini membantu.. ;)

JiriB
sumber
Ini sebenarnya terlihat bagus. Anda bisa mengunggahnya ke GitHub atau apalah.
slhck
Inilah ekstensi (.crx) dan sumber: tautan
JiriB
5

Anda tidak perlu menggunakan gaya pencarian REST, tetapi sebaliknya dapat menggunakan parameter GET HTTP normal seperti ini:

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

Jadi dalam kasus Anda itu adalah:

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

Sayangnya, ini tidak berfungsi dengan Metacricic (?).

Yang terbaik yang bisa saya dapatkan adalah fungsi pencarian berikut, namun itu tidak benar-benar mengarahkan karena beberapa alasan:

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>

Info latar belakang:

Chrome mengkodekan parameter yang dikirim tergantung pada posisi, yaitu apakah itu dalam URL atau sebagai parameter GET. Di dalam URL masuk akal untuk mengonversi spasi menjadi %20, sedangkan dalam parameter yang +digunakan.

Sayangnya, mereka tidak dapat mengubah perilaku ini , jadi tebakan saya adalah bahwa sederetan Javascript dapat memperbaikinya. Saya akan memeriksanya.

slhck
sumber
Apakah kamu sudah mencobanya? Tidak bekerja untuk ningrat iii.
sheldonh
Banyak sistem sebenarnya menggunakan penulisan ulang HTTP untuk memetakan nama jalur ke permintaan GET HTTP.
Majenko
@sheldonh Itu menarik karena istilah pencarian dimasukkan dengan benar, saya akan memeriksanya.
slhck
Sslhck Ya, apa yang Anda lakukan benar-benar harus bekerja. Terima kasih atas waktu dan perhatian Anda.
sheldonh
@sheldonh Saya menemukan metode dan mengedit posting saya, sayangnya Chrome belum mengarahkan, tapi kami selangkah lebih maju menuju solusi.
slhck
3

Seperti yang ditunjukkan oleh slhck dalam jawabannya, Chrome hanya mendukung% s, dan bersikeras "secara cerdas" menentukan apakah akan menggunakan simbol plus atau %20untuk keluar dari ruang (lihat Bug Chromium 78429 ).

Kasus uji khusus yang saya hadapi (metacritic.com) memaksakan terlalu banyak simpai untuk melompat bersamaan dengan antarmuka pencarian yang tenang.

Oleh karena itu, sebagai solusi, saya memilih untuk hanya menggunakan antarmuka lawas app.metacritic.com:

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

Jika itu tidak tersedia, saya akan menghubungi metacritic.com, merujuk mereka ke bug Chromium, dan memohon ampun. :-)

sheldonh
sumber
Rupanya ini sudah berhenti bekerja. :-(
A. Donda
1

Saya tidak bisa mendapatkan .crx atau .js untuk menginstal dengan benar (mungkin ini salah saya).

Saya berhasil membuatnya bekerja dengan mengandalkan skrip greasemonkey (saya memang menggunakan ekstensi google chrome Tampermonkey untuk menangani skrip greasemonkey).

Sekali di Tampermonkey saya membuat skrip baru dan menempelkan yang berikut (dan itu berhasil! Sekali lagi, TERIMA KASIH besar untuk JiriB, karena saya hanya menyalin / menempelkan temuannya):

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

Saya mengalami kesulitan dengan hal yang sama ini, dan menemukan halaman ini. Sayangnya jawabannya terlalu kompleks atau, seperti ide pencarian lama, tidak berhasil, dan tiba-tiba saya ingat apa yang saya lakukan dengan metakritik, yaitu mencarinya dengan google karena mesin pencari metakritik sangat buruk (masih ada , sebenarnya). Jadi yang saya lakukan adalah membuat pencarian google dan menjadikannya pencarian metakritik saya:

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

Jelas itu tidak ideal, karena Anda tidak mendapatkan halaman hasil pencarian yang bagus dari metacritic, tetapi itu memberikan hasil yang bermanfaat. Saya juga membuat versi saluran khusus; misalnya, jika saya ingin mencari acara TV saya menggunakan mesin yang sama dengan "/ tv /" ditambahkan.

Charles Herold
sumber
1

Sunting: Saya telah menambahkan ekstensi dasar ini ke Toko Chrome, saya juga menambahkan ikon tetapi tidak mengubah kode. Yay sekarang Chrome hanya dapat melakukan hal itu dan saya dapat menghapusnya dari folder unduhan saya! Tautannya adalah: pemecah masalah pencarian metakritik .

Posting asli : Saya telah memperbarui kode ekstensi JiriB sehingga berfungsi di Chrome lagi! Itu benar-benar hanya membutuhkan satu baris tambahan. Saya belum pernah menggunakan github sebelumnya, tetapi saya forked proyeknya dan mengajukan permintaan tarik.

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
sumber