Rechercher sur un site via clic droit sur un fichier

Voilà j’ai essayé de tout dire dans le titre mais ce n’est pas encore très clair peut-être.

Sous chrome, en sélectionnant un mot sur une page web puis en cliquant sur le bouton de l’extension dîte IMDB, la fiche du film en question s’ouvre. Exemple je lis un blog ciné qui parle d’un film que je connais pas, paf en 2 clics j’ai la fiche du film sous le nez…

Mon approche serait d’avoir la même chose sous l’explorateur de fichier de win7.

J’ai testé plusieurs applications qui bidouille le menu contextuel mais c’est pas très souple et assez basique en général. J’ai essayé de bidouiller le registre mais je ne sais pas où placer une éventuelle clé de test vu que les exemples que je trouve sur le net sont assez restreints et au final toujours axé sur le fichier lui-même et non son nom.

Alors si un geekzonien saurait faire ça facilement ou pourrait me donner des pistes / idées pour réaliser ça, ou veut relever ce “défi”, il aurait mon éternelle gratitude (et au moins une bibine/une bonne bouffe quand on se croise).

Vous aurez noté que je suis une burne en prog sinon j’aurais réussi dans mon coin :-

Au passage, pour éventuellement aider, voici le code de l’extension chrome qui permet de trouver la fiche à partir du mot sélectionné sur la page :


        // TODO make wide radio-labels in options (Italy)

        var what = ""
        setEmpty()

        chrome.browserAction.onClicked.addListener(function(tab) {
            chrome.tabs.create({ url: what && what != ""
                ? "http://www.google.com/search?q=" + encodeURIComponent(what + " site:" + getSite()) + "&btnI=745"
                : "http://" + getSite() + "/"
            })
        })

        chrome.extension.onConnect.addListener(function(port) {
            port.onMessage.addListener(function(m) {
                var s = trim(m.selection)

                // if empty
                if (!s || s == "") {
                    what = ""
                    setEmpty()
                    return
                }

                // if trigger
                switch (getTrigger()) {
                case "mouse":
                    // do nothing
                    break;

                case "alt":
                    if(!m.alt) return
                    break

                case "ctrl":
                    if(!m.ctrl) return
                    break

                case "shift":
                    if(!m.shift) return
                    break
                }

                // if same
                if (s == what) {
                    return
                }
                what = s

                // if too long
                if (what.length > 64) {
                    setSearch(what)
                    return
                }

                setBadge("...")
                setTitle("Fetching movie rating...")

                var req = new XMLHttpRequest()
                req.open("GET", "http://www.google.com/search?q=" + encodeURIComponent(what + " site:" + getSite()) + "&btnI=745", true)
                req.onreadystatechange = function() {
                    if (req.readyState == 4) {
                        var res = req.responseText

                        var ratingMatch = res.match(/<b>(\d.\d)\/10<\/b>/)

                        // try new layout: <span class="rating-rating">7.0<span>
                        if (ratingMatch == null) {
                            ratingMatch = res.match(/<span class=\"rating-rating\">(\d.\d)<span>/)
                        }

                        if (ratingMatch == null) {
                            setSearch(what)
                        } else {
                            var rating = ratingMatch[1]
                            var ratingF = parseFloat(rating)
                            if(isNaN(ratingF) || ratingF == 0) {
                                setSearch(what)
                            } else {
                                var title  = trim(htmlDecode(res.match(/<title>(.+?)<\/title>/)[1]))
                                        .replace(/"/g, "")

                                setOpen(rating.replace(/,/g, "."), title)
                            }
                        }
                    }
                }
                req.send(null)
            })
        })

        function setEmpty()             { setBadge("");     setTitle("Highlight movie name and click this button") }
        function setOpen(rating, title) { setBadge(rating); setTitle("Open \"" + title + "\"") }
        function setSearch(what)        { setBadge("?");    setTitle("Search \"" + what + "\"") }

        function setBadge(s) { chrome.browserAction.setBadgeText({ text: s }) }
        function setTitle(s) { chrome.browserAction.setTitle({ title : s }) }
        function trim(s)     { return s.replace(/^\s+|\s+$/g, "") }

        function htmlDecode(input) {
            var e = document.createElement('div')
            e.innerHTML = input
            return e.childNodes[0].nodeValue
        }