Jump to content
Sign in to follow this  
Perks

bookmarklets

Recommended Posts

Nunca usei, mas parece-me porreiro. Podes fazer um pequeno toturial de como se usam? Experimentei fazer o que disseste (arrastar) mas não funcionou.

Share this post


Link to post
Share on other sites

basta arrastar para a barra de boormarks, depois quando quiseres usar é só carregar

experimenta a do Doc Size, arrasta para a barra e carrega lá, vais ver que aparece uma caixa com o tamanho da página

disclaimer: não sei como é no safari por exemplo, só uso Chrome ou Firefox

  • Thanks 1

Share this post


Link to post
Share on other sites

És mazé um cata-likes <_<

Spoiler

:-..

 

  • Like 1

Share this post


Link to post
Share on other sites
4 minutes ago, Spark said:

És mazé um cata-likes <_<

  Reveal hidden contents

 

Foste tu quem pediu isto, se não querias não pedias 

 

 

o @Mini0n também deve ter uns porreiros, penso que na altura do blackfriday ele tinha feito uma para os preços

Share this post


Link to post
Share on other sites
19 minutes ago, Perks said:

basta arrastar para a barra de boormarks, depois quando quiseres usar é só carregar

experimenta a do Doc Size, arrasta para a barra e carrega lá, vais ver que aparece uma caixa com o tamanho da página

disclaimer: não sei como é no safari por exemplo, só uso Chrome ou Firefox

Bah, básico! Obrigado, não conhecia, mas vou procurar mais!

Share this post


Link to post
Share on other sites
17 minutes ago, Perks said:

Foste tu quem pediu isto, se não querias não pedias

Estava a brincar... :(

Btw,

Será que quis dizer: bookmarklets

:whistling:

Share this post


Link to post
Share on other sites

foi um engano, no texto estava bem :P 

outra que me lembrei

View Image a Google removeu o view image do google images, com esta basta carregar no botão que extrai o url da imagem

Share this post


Link to post
Share on other sites

Ya na altura da Expansys criei uma cena destas. Mas depois disso não fiz mais nada. Fiz foi uma extensão para o Chrome, mas isso é outra história. :P
(que na realidade é o "mesmo", ou seja, JS)

Share this post


Link to post
Share on other sites

Esta bookmarlet, pega num video do vsports

e mete-o no streamable, e podem fazer o embed no FNF

 

vSports Upload - Fazer upload dum video do vsports para o streamable

este responde com um json 

{"status": 1, "shortcode": "ctn3l"}

código

javascript: (function() {
    var patt = /\/\/vsports\.videos\.sapo\.pt\/\w+\/mov/;
    var url = document.body.innerHTML.match(patt);
    if (url) {
        window.open('https://api.streamable.com/import?url=https:' + encodeURI(url), '_blank');
    }
    void(0);
})();

 

 

o video fica disponivel em streamable.com/ctn3l

Share this post


Link to post
Share on other sites

Já agora, para relembrar

 

se sincronizarem as bookmarks com o mobile (pelo menos no chrome) estas bookmarlets ficam disponíveis no telemóvel, pelo que conseguem meter um video no FNF praticamente sem gastar tráfego :) 

 

 

EX:

 

Share this post


Link to post
Share on other sites

actualizada a bookamarklet para fazer check se consegue extrair o video e agora funciona nos vídeos da bola em https://abola.vsports.pt/ do record em https://record.vsports.pt/ e do jogo em https://ojogo.vsports.pt/

 

 

 

também, se preferirem têm a bookmarlet só para ver a source mp4 desses videos ;)

vSports open

 

 

javascript: (function() {
    var patt = /\/\/vsports\.videos\.sapo\.pt\/\w+\/mov/;
    var url = document.body.innerHTML.match(patt);
    if (url) {
        window.open(encodeURI(url), '_blank');
    }
    void(0);
})();

 

 

Share this post


Link to post
Share on other sites

JSON Beautifier

javascript: (function() {
    function FormatJSON(oData, sIndent) {
        if (arguments.length < 2) {
            var sIndent = "";
        }
        var sIndentStyle = " ";
        var sDataType = RealTypeOf(oData);
        console.log(sDataType);
        if (sDataType == "array") {
            if (oData.length == 0) {
                return "[]";
            }
            var sHTML = "[";
        } else {
            var iCount = 0;
            $.each(oData, function() {
                iCount++;
                return;
            });
            if (iCount == 0) {
                return "{}";
            }
            var sHTML = "{";
        }
        var iCount = 0;
        $.each(oData, function(sKey, vValue) {
            if (iCount > 0) {
                sHTML += ",";
            }
            if (sDataType == "array") {
                sHTML += ("\n" + sIndent + sIndentStyle);
            } else {
                sHTML += ("\n" + sIndent + sIndentStyle + "\"" + sKey + "\"" + ": ");
            }
            switch (RealTypeOf(vValue)) {
                case "array":
                case "object":
                    sHTML += FormatJSON(vValue, (sIndent + sIndentStyle));
                    break;
                case "boolean":
                case "number":
                    sHTML += vValue.toString();
                    break;
                case "null":
                    sHTML += "null";
                    break;
                case "string":
                    sHTML += ("\"" + vValue + "\"");
                    break;
                default:
                    sHTML += ("TYPEOF: " + typeof(vValue));
            }
            iCount++;
        });
        if (sDataType == "array") {
            sHTML += ("\n" + sIndent + "]");
        } else {
            sHTML += ("\n" + sIndent + "}");
        }
        return sHTML;
    }

    function SortObject(oData) {
        var oNewData = {};
        var aSortArray = [];
        $.each(oData, function(sKey) {
            aSortArray.push(sKey);
        });
        aSortArray.sort(SortLowerCase);
        $.each(aSortArray, function(i) {
            if (RealTypeOf(oData[(aSortArray[i])]) == "object") {
                oData[(aSortArray[i])] = SortObject(oData[(aSortArray[i])]);
            }
            oNewData[(aSortArray[i])] = oData[(aSortArray[i])];
        });
        return oNewData;

        function SortLowerCase(a, b) {
            a = a.toLowerCase();
            b = b.toLowerCase();
            return ((a < b) ? -1 : ((a > b) ? 1 : 0));
        }
    }

    function RealTypeOf(v) {
        if (typeof(v) == "object") {
            if (v === null) return "null";
            if (v.constructor == (new Array).constructor) return "array";
            if (v.constructor == (new Date).constructor) return "date";
            if (v.constructor == (new RegExp).constructor) return "regex";
            return "object";
        }
        return typeof(v);
    }
    if (typeof jQuery == "undefined") {
        var jQ = document.createElement("script");
        jQ.type = "text/javascript";
        jQ.onload = runthis;
        jQ.src = "//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js";
        document.body.appendChild(jQ);
    } else {
        runthis();
    }

    function runthis() {
        var unformattedJSON = $(document).find("pre").text();
        try {
            $(document).find("pre").text(FormatJSON(JSON.parse(unformattedJSON)));
        } catch (e) {
            window.console && console.log("Could not parse JSON: " + e.message + "; Perhaps this page isn't JSON?");
        }
    }
})();

 

Usava uma extensão para isto, já foi :bye:

 

@Mini0n

Share this post


Link to post
Share on other sites

já agora

 

CSS Beautifier

javascript: (function() {
    (function() {
        function a(a, b) {
            function s(a) {
                return " " === a || "\n" === a || " " === a || "\r" === a || "\f" === a
            }

            function t(a) {
                return "'" === a || '"' === a
            }

            function u(a) {
                return h >= "a" && "z" >= h || h >= "A" && "Z" >= h || h >= "0" && "9" >= h || "-_*.:#".indexOf(a) >= 0
            }

            function v() {
                var a;
                for (a = m; a > 0; a -= 1) g += c.indent
            }

            function w() {
                g = r(g), p ? g += " {" : (g += "\n", v(), g += "{"), "\n" !== i && (g += "\n"), m += 1
            }

            function x() {
                var a;
                m -= 1, g = r(g), q && (a = g.charAt(g.length - 1), ";" !== a && "{" !== a && (g += ";")), g += "\n", v(), g += "}", f.push(g), g = ""
            }
            var c, f, h, i, j, k, l, m, n, o, r, d = 0,
                e = a.length,
                g = "",
                p = !0,
                q = !1;
            for (c = arguments.length > 1 ? b : {}, c.indent === void 0 && (c.indent = " "), "string" == typeof c.openbrace && (p = "end-of-line" === c.openbrace), "boolean" == typeof c.autosemicolon && (q = c.autosemicolon), r = String.prototype.trimRight ? function(a) {
                    return a.trimRight()
                } : function(a) {
                    return a.replace(/\s+$/, "")
                }, l = {
                    Start: 0,
                    AtRule: 1,
                    Block: 2,
                    Selector: 3,
                    Ruleset: 4,
                    Property: 5,
                    Separator: 6,
                    Expression: 7,
                    URL: 8
                }, m = 0, k = l.Start, o = !1, f = [], a = a.replace(/\r\n/g, "\n"); e > d;)
                if (h = a.charAt(d), i = a.charAt(d + 1), d += 1, t(n)) g += h, h === n && (n = null), "\\" === h && i === n && (g += i, d += 1);
                else if (t(h)) g += h, n = h;
            else if (o) g += h, "*" === h && "/" === i && (o = !1, g += i, d += 1);
            else if ("/" !== h || "*" !== i) {
                if (k === l.Start) {
                    if (0 === f.length && s(h) && 0 === g.length) continue;
                    if (" " >= h || h.charCodeAt(0) >= 128) {
                        k = l.Start, g += h;
                        continue
                    }
                    if (u(h) || "[" === h || "@" === h) {
                        if (j = r(g), 0 === j.length) f.length > 0 && (g = "\n\n");
                        else if ("}" === j.charAt(j.length - 1) || ";" === j.charAt(j.length - 1)) g = j + "\n\n";
                        else
                            for (;;) {
                                if (i = g.charAt(g.length - 1), " " !== i && 9 !== i.charCodeAt(0)) break;
                                g = g.substr(0, g.length - 1)
                            }
                        g += h, k = "@" === h ? l.AtRule : l.Selector;
                        continue
                    }
                }
                if (k !== l.AtRule)
                    if (k !== l.Block)
                        if (k !== l.Selector)
                            if (k !== l.Ruleset)
                                if (k !== l.Property)
                                    if (k !== l.Separator)
                                        if (k !== l.Expression) k === l.URL && ")" === h && g.charAt("\\" !== g.length - 1) ? (g += h, k = l.Expression) : g += h;
                                        else {
                                            if ("}" === h) {
                                                x(), k = l.Start, m > 0 && (k = l.Block);
                                                continue
                                            }
                                            if (";" === h) {
                                                g = r(g), g += ";\n", k = l.Ruleset;
                                                continue
                                            }
                                            if (g += h, "(" === h && "l" === g.charAt(g.length - 2) && "r" === g.charAt(g.length - 3) && "u" === g.charAt(g.length - 4)) {
                                                k = l.URL;
                                                continue
                                            }
                                        }
                else {
                    if (!s(h)) {
                        g += h, k = l.Expression;
                        continue
                    }
                    t(i) && (k = l.Expression)
                } else {
                    if (":" === h) {
                        g = r(g), g += ": ", k = l.Expression, s(i) && (k = l.Separator);
                        continue
                    }
                    if ("}" === h) {
                        x(), k = l.Start, m > 0 && (k = l.Block);
                        continue
                    }
                    g += h
                } else {
                    if ("}" === h) {
                        x(), k = l.Start, m > 0 && (k = l.Block);
                        continue
                    }
                    if ("\n" === h) {
                        g = r(g), g += "\n";
                        continue
                    }
                    if (!s(h)) {
                        g = r(g), g += "\n", v(), g += h, k = l.Property;
                        continue
                    }
                    g += h
                } else {
                    if ("{" === h) {
                        w(), k = l.Ruleset;
                        continue
                    }
                    if ("}" === h) {
                        x(), k = l.Start;
                        continue
                    }
                    g += h
                } else {
                    if (u(h)) {
                        if (j = r(g), 0 === j.length) f.length > 0 && (g = "\n\n");
                        else if ("}" === j.charAt(j.length - 1)) g = j + "\n\n";
                        else
                            for (;;) {
                                if (i = g.charAt(g.length - 1), " " !== i && 9 !== i.charCodeAt(0)) break;
                                g = g.substr(0, g.length - 1)
                            }
                        v(), g += h, k = l.Selector;
                        continue
                    }
                    if ("}" === h) {
                        x(), k = l.Start;
                        continue
                    }
                    g += h
                } else {
                    if (";" === h) {
                        g += h, k = l.Start;
                        continue
                    }
                    if ("{" === h) {
                        j = r(g), w(), k = "@font-face" === j ? l.Ruleset : l.Block;
                        continue
                    }
                    g += h
                }
            } else o = !0, g += h, g += i, d += 1;
            return g = f.join("") + g
        }
        "undefined" != typeof exports ? module.exports = exports = a : "object" == typeof window && (window.cssbeautify = a)
    })();
    (function() {
        var e = /\blang(?:uage)?-(?!\*)(\w+)\b/i,
            t = self.Prism = {
                util: {
                    type: function(e) {
                        return Object.prototype.toString.call(e).match(/\[object (\w+)\]/)[1]
                    },
                    clone: function(e) {
                        var n = t.util.type(e);
                        switch (n) {
                            case "Object":
                                var r = {};
                                for (var i in e) e.hasOwnProperty(i) && (r[i] = t.util.clone(e[i]));
                                return r;
                            case "Array":
                                return e.slice()
                        }
                        return e
                    }
                },
                languages: {
                    extend: function(e, n) {
                        var r = t.util.clone(t.languages[e]);
                        for (var i in n) r[i] = n[i];
                        return r
                    },
                    insertBefore: function(e, n, r, i) {
                        i = i || t.languages;
                        var s = i[e],
                            o = {};
                        for (var u in s)
                            if (s.hasOwnProperty(u)) {
                                if (u == n)
                                    for (var a in r) r.hasOwnProperty(a) && (o[a] = r[a]);
                                o[u] = s[u]
                            } return i[e] = o
                    },
                    DFS: function(e, n) {
                        for (var r in e) {
                            n.call(e, r, e[r]);
                            t.util.type(e) === "Object" && t.languages.DFS(e[r], n)
                        }
                    }
                },
                highlightAll: function(e, n) {
                    var r = document.querySelectorAll('code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code');
                    for (var i = 0, s; s = r[i++];) t.highlightElement(s, e === !0, n)
                },
                highlightElement: function(r, i, s) {
                    var o, u, a = r;
                    while (a && !e.test(a.className)) a = a.parentNode;
                    if (a) {
                        o = (a.className.match(e) || [, ""])[1];
                        u = t.languages[o]
                    }
                    if (!u) return;
                    r.className = r.className.replace(e, "").replace(/\s+/g, " ") + " language-" + o;
                    a = r.parentNode;
                    /pre/i.test(a.nodeName) && (a.className = a.className.replace(e, "").replace(/\s+/g, " ") + " language-" + o);
                    var f = r.textContent;
                    if (!f) return;
                    f = f.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/\u00a0/g, " ");
                    var l = {
                        element: r,
                        language: o,
                        grammar: u,
                        code: f
                    };
                    t.hooks.run("before-highlight", l);
                    if (i && self.Worker) {
                        var c = new Worker(t.filename);
                        c.onmessage = function(e) {
                            l.highlightedCode = n.stringify(JSON.parse(e.data));
                            l.element.innerHTML = l.highlightedCode;
                            s && s.call(l.element);
                            t.hooks.run("after-highlight", l)
                        };
                        c.postMessage(JSON.stringify({
                            language: l.language,
                            code: l.code
                        }))
                    } else {
                        l.highlightedCode = t.highlight(l.code, l.grammar);
                        l.element.innerHTML = l.highlightedCode;
                        s && s.call(r);
                        t.hooks.run("after-highlight", l)
                    }
                },
                highlight: function(e, r) {
                    return n.stringify(t.tokenize(e, r))
                },
                tokenize: function(e, n) {
                    var r = t.Token,
                        i = [e],
                        s = n.rest;
                    if (s) {
                        for (var o in s) n[o] = s[o];
                        delete n.rest
                    }
                    e: for (var o in n) {
                        if (!n.hasOwnProperty(o) || !n[o]) continue;
                        var u = n[o],
                            a = u.inside,
                            f = !!u.lookbehind || 0;
                        u = u.pattern || u;
                        for (var l = 0; l < i.length; l++) {
                            var c = i[l];
                            if (i.length > e.length) break e;
                            if (c instanceof r) continue;
                            u.lastIndex = 0;
                            var h = u.exec(c);
                            if (h) {
                                f && (f = h[1].length);
                                var p = h.index - 1 + f,
                                    h = h[0].slice(f),
                                    d = h.length,
                                    v = p + d,
                                    m = c.slice(0, p + 1),
                                    g = c.slice(v + 1),
                                    y = [l, 1];
                                m && y.push(m);
                                var b = new r(o, a ? t.tokenize(h, a) : h);
                                y.push(b);
                                g && y.push(g);
                                Array.prototype.splice.apply(i, y)
                            }
                        }
                    }
                    return i
                },
                hooks: {
                    all: {},
                    add: function(e, n) {
                        var r = t.hooks.all;
                        r[e] = r[e] || [];
                        r[e].push(n)
                    },
                    run: function(e, n) {
                        var r = t.hooks.all[e];
                        if (!r || !r.length) return;
                        for (var i = 0, s; s = r[i++];) s(n)
                    }
                }
            },
            n = t.Token = function(e, t) {
                this.type = e;
                this.content = t
            };
        n.stringify = function(e) {
            if (typeof e == "string") return e;
            if (Object.prototype.toString.call(e) == "[object Array]") return e.map(n.stringify).join("");
            var r = {
                type: e.type,
                content: n.stringify(e.content),
                tag: "span",
                classes: ["token", e.type],
                attributes: {}
            };
            r.type == "comment" && (r.attributes.spellcheck = "true");
            t.hooks.run("wrap", r);
            var i = "";
            for (var s in r.attributes) i += s + '="' + (r.attributes[s] || "") + '"';
            return "<" + r.tag + ' class="' + r.classes.join(" ") + '" ' + i + ">" + r.content + "</" + r.tag + ">"
        };
        if (!self.document) {
            self.addEventListener("message", function(e) {
                var n = JSON.parse(e.data),
                    r = n.language,
                    i = n.code;
                self.postMessage(JSON.stringify(t.tokenize(i, t.languages[r])));
                self.close()
            }, !1);
            return
        }
        var r = document.getElementsByTagName("script");
        r = r[r.length - 1];
        if (r) {
            t.filename = r.src;
            document.addEventListener && !r.hasAttribute("data-manual") && document.addEventListener("DOMContentLoaded", t.highlightAll)
        }
    })();
    Prism.languages.css = {
        comment: /\/\*[\w\W]*?\*\//g,
        atrule: /@[\w-]+?(\s+[^;{]+)?(?=\s*{|\s*;)/gi,
        url: /url\((["']?).*?\1\)/gi,
        selector: /[^\{\}\s][^\{\}]*(?=\s*\{)/g,
        property: /(\b|\B)[a-z-]+(?=\s*:)/ig,
        string: /("|')(\\?.)*?\1/g,
        important: /\B!important\b/gi,
        ignore: /&(lt|gt|amp);/gi,
        punctuation: /[\{\};:]/g
    };
    Prism.languages.markup && Prism.languages.insertBefore("markup", "tag", {
        style: {
            pattern: /(&lt;|<)style[\w\W]*?(>|&gt;)[\w\W]*?(&lt;|<)\/style(>|&gt;)/ig,
            inside: {
                tag: {
                    pattern: /(&lt;|<)style[\w\W]*?(>|&gt;)|(&lt;|<)\/style(>|&gt;)/ig,
                    inside: Prism.languages.markup.tag.inside
                },
                rest: Prism.languages.css
            }
        }
    });
    var prismStyle = document.createElement("style");
    var beautified = cssbeautify(document.body.textContent, {
        autosemicolon: true
    });
    var highlighted = Prism.highlight(beautified, Prism.languages.css);
    prismStyle.textContent = 'code[class*="language-"],pre[class*="language-"]{color:black;text-shadow:0 1px white;font-family:Consolas,Monaco,\'Andale Mono\',monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;}@media print{code[class*="language-"],pre[class*="language-"]{text-shadow:none;}}pre[class*="language-"]{padding:1em;margin:.5em 0;overflow:auto;}:not(pre) > code[class*="language-"],pre[class*="language-"]{background:#f5f2f0;}:not(pre) > code[class*="language-"]{padding:.1em;border-radius:.3em;}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:slategray;}.token.punctuation{color:#999;}.namespace{opacity:.7;}.token.property,.token.tag,.token.boolean,.token.number{color:#905;}.token.selector,.token.attr-name,.token.string{color:#690;}.token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string{color:#a67f59;background:hsla(0,0%,100%,.5);}.token.atrule,.token.attr-value,.token.keyword{color:#07a;}.token.regex,.token.important{color:#e90;}.token.important{font-weight:bold;}.token.entity{cursor:help;}';
    document.head.innerHTML = "";
    document.head.appendChild(prismStyle);
    document.body.innerHTML = "<code><pre>" + highlighted + "</pre></code>"
})();

 

Share this post


Link to post
Share on other sites

Uma extensão está sempre a ouvir em background, e portanto terá acesso ao teu histórico, por exemplo.

Está sempre a funcionar, consumindo recursos

Não funciona em mobile

 

 

Share this post


Link to post
Share on other sites

Queres ver JSON ou CSS em mobile porquê, mesmo? :unsure:

Não é um parser destes que me vai atrasar o browser nem consumir recursos. O que uso está no Github. Sei o que ele faz. ;)

Share this post


Link to post
Share on other sites

só vi isto agora

 

Eu uso no telefone, 99% do que faço é no telefone. como sabes o php ou os embeds na altura forma tratados no telefone

 

 

como vês é bem diferente ^

Share this post


Link to post
Share on other sites

Mas isso és tu lol Eu uso o JSON para trabalho pá. Also, a extensão que uso tem cores. Dá para distinguir strings de inteiros de booleans mais rapidamente, por exemplo. :)

Mas ya, para merdas simples, acredito que dê jeito. E se não há extensões no Android, sempre é melhor que andar com copy/paste para sites que fazem isso.

Share this post


Link to post
Share on other sites

a que usava também estava no github, e tinha os highlights e essa cenas. 

 

mas o meu o pc tem menos RAM que o meu telefone por isso onde puder poupar em recursos agradeço lol

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.