Buộc% s thoát khỏi khoảng trắng bằng cộng thay vì phần trăm hai mươi


9

Tôi muốn sử dụng mc làm lối tắt tìm kiếm cho metacritic.com từ Google Chrome. Tôi thiết lập URL tìm kiếm sau cho phím tắt:

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

Thật không may, khi tôi tìm kiếm người bán hàng iii như sau

mc patrcian iii

Chrome tạo ra truy vấn này, điều này diễn giải sai các thuật ngữ để tạo ra một tập hợp các kết quả không liên quan vô ích:

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

Metacritic thích truy vấn này, cho tôi chính xác kết quả mà tôi đang tìm kiếm:

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

Làm cách nào tôi có thể buộc Chrome sử dụng các ký hiệu cộng thay vì các khoảng trắng được mã hóa URL?


(IE cho phép bạn chọn ký tự thoát được sử dụng cho một số ký tự khác nhau. Tuy nhiên, các nhà phát triển Chrome biết rõ hơn người dùng. :-|)
Synetech

Câu trả lời:


4

Mặc dù hơi thô thiển, bạn có thể tạo một tiện ích mở rộng Chrome đơn giản điều chỉnh URL cho siêu dữ liệu (hoặc các trang web khác nếu bạn muốn)

Đây là mã tôi đã sử dụng cho tiện ích mở rộng URL Tìm kiếm thay thế:

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

Vì tôi thực sự không có một vị trí đáng tin cậy để tải lên tiện ích mở rộng của mình, nên đây là hướng dẫn để tạo tiện ích mở rộng Chrome bằng hai tệp này:

Đầu tiên, đặt hai tệp vào một thư mục nào đó và duyệt đến chrome: // extend. Đảm bảo chế độ nhà phát triển đang hoạt động (nhìn ở phía trên bên phải của trang để bật chế độ này). Tại đây, bạn có thể chọn 'Gói tiện ích mở rộng ..' sẽ hỏi bạn về thư mục chứa tập lệnh của bạn. Khi bạn đã chọn thư mục này, tiện ích mở rộng sẽ được tạo và bạn chỉ cần kéo và thả nó vào Chrome để cài đặt. Nếu mọi thứ diễn ra theo đúng kế hoạch, tập lệnh sẽ viết lại URL cho yêu cầu tìm kiếm Metacritic từ '% 20' thành các ký tự '+'.

Giờ đây, bạn có thể sử dụng http://metacritic.com/search/all/%s/resultslàm url công cụ tìm kiếm trong chính Chrome để sử dụng lối tắt cho tìm kiếm này.

Hi vọng điêu nay co ich.. ;)


Điều này thực sự trông tốt đẹp. Bạn có thể tải nó lên GitHub hoặc một cái gì đó.
slhck

Đây là tiện ích mở rộng (.crx) và nguồn: link
JiriB

5

Bạn không cần sử dụng kiểu tìm kiếm REST mà thay vào đó có thể sử dụng các tham số HTTP GET bình thường như thế này:

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

Vì vậy, trong trường hợp của bạn đó sẽ là:

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

Thật không may, điều này không hoạt động với Metacricic (?).

Điều tốt nhất tôi có thể nhận được là chức năng tìm kiếm sau đây, tuy nhiên nó không thực sự chuyển hướng vì một số lý do:

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>

Thông tin cơ bản:

Chrome mã hóa các tham số đã gửi tùy thuộc vào vị trí, nghĩa là nếu nó nằm trong URL hoặc dưới dạng tham số GET. Trong một URL, việc chuyển đổi một khoảng trắng thành có ý nghĩa %20, trong khi trong một tham số +được sử dụng.

Thật không may, họ không thay đổi hành vi này , vì vậy tôi đoán rằng một dòng Javascript đơn giản có thể khắc phục điều này. Tôi sẽ xem xét nó.


Bạn đã thử à? Không làm việc cho người bán hàng iii.
sheldonh

Rất nhiều hệ thống thực sự sử dụng viết lại HTTP để ánh xạ tên đường dẫn đến các yêu cầu HTTP GET.
Majenko

@sheldonh Điều đó thật thú vị vì thuật ngữ tìm kiếm được chèn chính xác, tôi sẽ xem xét nó.
slhck

@slhck Vâng, những gì bạn đang làm thực sự -should- làm việc. Cảm ơn vì thời gian của bạn và sự chú ý.
sheldonh

@sheldonh Tôi đã tìm thấy một phương pháp và chỉnh sửa bài đăng của mình, tiếc là Chrome chưa chuyển hướng, nhưng chúng tôi đang tiến một bước xa hơn tới một giải pháp.
slhck

3

Như được chỉ ra bởi slhck trong câu trả lời của mình, Chrome chỉ hỗ trợ% s và nhấn mạnh vào việc "xác định" một cách thông minh việc sử dụng các ký hiệu cộng hay %20để thoát khoảng trắng (xem lỗi Chromium 78429 ).

Trường hợp thử nghiệm cụ thể mà tôi đang xử lý (metacritic.com) áp đặt quá nhiều hoops để nhảy qua đồng thời với giao diện tìm kiếm RESTful của họ.

Do đó, như một cách giải quyết, tôi đã chọn chỉ đơn giản là sử dụng giao diện kế thừa của app.metacritic.com:

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

Nếu điều đó không có sẵn, tôi đã liên hệ với metacritic.com, giới thiệu họ với lỗi Chromium và cầu xin sự thương xót. :-)


Rõ ràng điều này đã ngừng hoạt động. :-(
A. Donda

1

Tôi không thể cài đặt .crx hoặc .js đúng cách (có thể đó là lỗi của tôi).

Tôi đã quản lý để làm cho nó hoạt động bằng cách dựa vào tập lệnh greasemonkey (Tôi thường sử dụng tiện ích mở rộng Tampermonkey google chrome để xử lý các tập lệnh greasemonkey).

Một lần trong Tampermonkey, tôi tạo một tập lệnh mới và dán đoạn mã sau (và nó hoạt động! Một lần nữa, CẢM ƠN LỚN cho JiriB, khi tôi vừa sao chép / dán những phát hiện của mình):

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

Tôi đã gặp khó khăn với điều tương tự, và tìm thấy trang này. Thật không may, các câu trả lời quá phức tạp hoặc, giống như ý tưởng tìm kiếm cũ, không hoạt động, và rồi tôi đột nhiên nhớ ra những gì tôi đã làm với metacritic, đó là tìm kiếm nó bằng google vì công cụ tìm kiếm siêu hình rất kém (vẫn còn , thực ra). Vì vậy, những gì tôi đã làm là tạo một tìm kiếm google và thực hiện tìm kiếm siêu hình đó:

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

Rõ ràng nó không lý tưởng, ở chỗ bạn không nhận được trang kết quả tìm kiếm tuyệt vời của metacritic, nhưng nó cho kết quả hữu ích. Tôi cũng tạo các phiên bản kênh cụ thể; ví dụ: nếu tôi muốn tìm kiếm các chương trình TV, tôi sử dụng cùng một công cụ với "/ tv /" được thêm vào nó.


1

Chỉnh sửa: Tôi đã thêm tiện ích mở rộng cơ bản này vào Cửa hàng Chrome, tôi cũng đã thêm các biểu tượng nhưng không thay đổi mã. Yay bây giờ Chrome chỉ có thể làm điều đó và tôi có thể xóa nó khỏi thư mục tải xuống của mình! Liên kết là: Trình sửa lỗi tìm kiếm Metacritic .

Bài đăng gốc : Tôi đã cập nhật mã mở rộng của JiriB để nó hoạt động trở lại trong Chrome! Nó thực sự chỉ cần thêm một dòng. Tôi chưa bao giờ sử dụng github trước đây, nhưng tôi đã rẽ nhánh dự án của anh ấy và gửi yêu cầu kéo.

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.