Jump to content

bookmarklets


Recommended Posts

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

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!

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:

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)

Link to post
Share on other sites
  • 10 months later...

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

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:

 

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);
})();

 

 

Link to post
Share on other sites

JSON Beautifier

Spoiler

 


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

Link to post
Share on other sites

já agora

 

CSS Beautifier

Spoiler

 


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>"
})();

 

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

 

 

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 ^

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.

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

Link to post
Share on other sites
  • 1 month later...

os vídeos do record irritam-em profundamente, portanto

javascript: (function() {
    var patt = 'https\:\/\/rrr\.streaming\.claranet\.pt\/(.+\=mp4)';
    var url = document.body.innerHTML.match(patt)[1];
    var url1 = url.replace(/&amp;/g, "&");
    if (url) {
        window.open('https://rrr.streaming.claranet.pt/' + url1, '_blank');
    }
    void(0);
})();

 

isto abre num separador o raw mp4 dos videos do grup cofina (record, sabado ou cm por exemplo)

 

 

Sem gastar tráfego no telefone juntado com a bookmarlet do streamable por exemplo, conseguem meter um video embed no fnf sem gastar tráfego ;) 

Link to post
Share on other sites

já agora, Grupo Global Media

Ojogo, JN, DN etc

javascript: (function() {
    var patt = /(https\:\/\/\w+\.cloudfront\.net\/.+\/)(.+)\/hls\/.+\.m3u8/;
    var url1 = document.body.innerHTML.match(patt)[1];
    var url2 = document.body.innerHTML.match(patt)[2];
    if (url1 && url2) {
        window.open(url1 + url2 + '/mp4/' + url2 + '.mp4', '_blank');
    }
    void(0);
})();

 

Link to post
Share on other sites

depois disto, estive aqui a pensar em fazer algo que juntasse os videos todos numa mesma bookmarlet

 

esta bookmarlet, saca o mp4 dos videos alojados nos seguintes sites

record, cmjornal, sabado, ojogo, a bola, DN, JN, TSF, vsports, vsports dos desportivos (jogo, bola, record) e penso que deve ser isso :-.. 

javascript: (function() {
    if (window.location.href.match('https?\:\/\/(www.)?(record|cmjornal|sabado)\.pt')) {
        var patt = 'https\:\/\/rrr\.streaming\.claranet\.pt\/(.+\=mp4)';
        var url = document.body.innerHTML.match(patt)[1];
        var url1 = url.replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">");
        if (url) {
            window.open('https://rrr.streaming.claranet.pt/' + url1, '_blank');
        }
        void(0);
    }
    if (window.location.href.match('https?\:\/\/((www|ojogo|abola|record).)?(vsports)\.pt')) {
        var patt = /\/\/vsports\.videos\.sapo\.pt\/\w+\/mov/;
        var url = document.body.innerHTML.match(patt);
        if (url) {
            window.open(encodeURI(url), '_blank');
        }
        void(0);
    }
    if (window.location.href.match('https?\:\/\/(www.)?(ojogo|jn|dn|tsf)\.pt')) {
		var patt = /(https\:\/\/\w+\.cloudfront\.net\/.+\/)(.+)\/hls\/.+\.m3u8/;
    	var url1 = document.body.innerHTML.match(patt)[1];
    	var url2 = document.body.innerHTML.match(patt)[2];
    		if (url1 && url2) {
        		window.open(url1 + url2 + '/mp4/' + url2 + '.mp4', '_blank');
    		}
    void(0);
    }
  	if (window.location.href.match('https?\:\/\/miragens\.abola\.pt\/video\/.+')) {
      	var patt = 'https?\:\/\/miragens\.abola\.pt\/video\/(.+)';
        var url = window.location.href.match(patt)[1];
    	window.open ('https://miragens.abola.pt/processaVideo.ashx?id='+url);
    void(0);
    }      
})();

 

se faltar algum ou se quiserem que adicione algum, avisem ;) 

 

 

 

 

já agora lembrando que juntamente com a do streamable que está no primeiro post conseguem meter o video no streamable para meterem no fnf sem sequer gastar trafego no telefone :) 

Link to post
Share on other sites
  • 3 weeks later...

actualização a este para incluir grupo impresa ^ 

javascript: (function() {
    if (window.location.href.match('https?\:\/\/(www.)?(record|cmjornal|sabado)\.pt')) {
        var patt = 'https\:\/\/rrr\.streaming\.claranet\.pt\/(.+\=mp4)';
        var url = document.body.innerHTML.match(patt)[1];
        var url1 = url.replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">");
        if (url) {
            window.open('https://rrr.streaming.claranet.pt/' + url1, '_blank');
        }
        void(0);
    }
    if (window.location.href.match('https?\:\/\/((www|ojogo|abola|record).)?(vsports)\.pt')) {
        var patt = /\/\/vsports\.videos\.sapo\.pt\/\w+\/mov/;
        var url = document.body.innerHTML.match(patt);
        if (url) {
            window.open(encodeURI(url), '_blank');
        }
        void(0);
    }
    if (window.location.href.match('https?\:\/\/(www.)?(ojogo|jn|dn|tsf)\.pt')) {
        var patt = /(https\:\/\/\w+\.cloudfront\.net\/.+\/)(.+)\/hls\/.+\.m3u8/;
        var url1 = document.body.innerHTML.match(patt)[1];
        var url2 = document.body.innerHTML.match(patt)[2];
        if (url1 && url2) {
            window.open(url1 + url2 + '/mp4/' + url2 + '.mp4', '_blank');
        }
        void(0);
    }
    if (window.location.href.match('https?\:\/\/miragens\.abola\.pt\/video\/.+')) {
        var patt = 'https?\:\/\/miragens\.abola\.pt\/video\/(.+)';
        var url = window.location.href.match(patt)[1];
        window.open('https://miragens.abola.pt/processaVideo.ashx?id=' + url);
        void(0);
    }
    if (window.location.href.match('https?\:\/\/(sicnoticias|expresso|tribunaexpresso)\.pt')) {
        var patt = /\/\/videos\.impresa\.pt\/[^"]+/;
        var url1 = document.body.innerHTML.match(patt);
        if (url1) {
            window.open('https:' + url1, '_blank');
        }
        void(0);
    }
})();

 

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • 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.