Я люблю слушать музыку, а еще я страшный лентяй. Если вижу в интернетах упоминание какого-то музыкального исполнителя в положительном контексте, мне хочется с ним познакомиться. Для этого я открываю его страничку на Last.fm и смотрю, какие у него самые популярные по прослушиваниям песни. Мне кажется, именно с них лучше всего начинать знакомиться с исполнителем. Но копировать текст руками, открывать новую вкладку, вводить адрес last.fm, вставлять текст в строку поиска - это таааак лень... Я студент-айтишник, и культивировать свою лень с помощью компьютера - мое предназначение. Так что я написал несложное расширение, которое добавляет в контекстное меню Chrome пункт для поиска выделенного текста на last.fm одним кликом.


Расскажу немного о создании. Это не мануал по созданию расширений, я просто покажу, как решил поставленную задачу. Как и гаджет Windows, расширение для Google Chrome требует манифест, только в формате JSON:
{
"manifest_version": 2,
"name": "Simple Last.Fm Finder",
"version": "1.0",
"icons": {
"16": "icon16.png",
"48": "icon48.png"
},
"description": "Расширение добавляет в контекстное меню пункт для быстрого поиска выделенного текста на last.fm.",
"background": {
"scripts": ["background.js"]
},
"permissions": [
"http://*/*",
"https://*/*",
"contextMenus",
"tabs"
]
}
Версию манифеста, равную 2, указывать обязательно - без этого расширение не станет работать. Иконка 16x16 будет отображаться рядом с моим пунктом меню, а 48x48 - представлять мой продукт на странице расширений. Я, не мудрствуя лукаво, взял соответствующие логотипы Last.fm. Обычно в манифесте указывают background и popup страницы, но мне они не нужны, у меня только один скрипт - Хром сам сгенерирует для него страницу. Далее я запрашиваю разрешения на работу с контекстным меню и вкладками. Должен признаться, я не очень понял, на какие URL мне нужны разрешения, но расширение должно работать везде, так что оно получает доступ ко всем страницам.

Больше от манифеста мне ничего не нужно. Теперь можно написать простенький скрипт:
chrome.contextMenus.create({
"title": "Search on last.fm",
"contexts": ["selection"],
"onclick": search
});

function search(e) {
var lastFmSearchUrl = "http://www.lastfm.ru/search?q=";
var searchQuery = e.selectionText;
var searchUrl = lastFmSearchUrl + searchQuery;
chrome.tabs.create({"url": searchUrl });
}
Он с помощью Chrome API при выделении текста создает пункт меню "Search on last.fm", по клику собирает поисковую ссылку с выделенным текстом и открывает новую вкладку с этим адресом. Код расширения написан, осталось только запаковать его на странице расширений в режиме разработчика.

Мне нравится Chrome API - оно довольно удобное, в нем много нужных плюшек, но в документации слишком скудные примеры, как по мне. Еще очень понравилась отладка расширений. Чтобы запустить гаджет Windows, его надо запаковать в архив, сменить расширение на .gadget и запустить, после внесения изменений эту процедуру надо произвести еще раз. В Хроме надо всего лишь указать папку с проектом и после внесения изменений нажать "Обновить расширение". Лентяй во мне доволен.

Как всегда, в комментариях приветствуются конструктивные замечания, особенно об ошибках. Если вам нужно, вы можете скачать мое расширение. Для установки перетащите файл на страницу с расширениями.

Поиск