Instagramの投稿に含まれる画像だけを抽出するブックマークレット的なもの

このブログでは初投稿になりますね。

Markdown記法がよくわかってません。

javascript: (function() {
    var tag = "";
    var a = document.getElementsByTagName('script');
    var b = a[4].innerHTML;
    b = b.replace('window._sharedData = ','');
    b = b.slice(0,-1);
    c = JSON.parse(b);
    d = c.entry_data.PostPage[0].graphql.shortcode_media;
    if('edge_sidecar_to_children' in d){
        d = d.edge_sidecar_to_children.edges;
        for (var i = 0; i < d.length; i++) {
            var img_src = d[i].node.display_url;
            img_src = img_src.replace(/-s/,"");
            tag = tag + '<img style="width:30%;" src="' + img_src + '"/>';
        }
        document.write(tag);
        return false;
    }
    if('video_url' in d){
        var video_src = d.video_url;
        location.href = video_src;
        return false;
    }
    else{
        var img_src = d.display_url;
        img_src = img_src.replace(/-s/,"");
        tag = tag + '<img style="width:30%;" src="' + img_src + '"/>';
        document.write(tag);
        return false;
    }
})()

ブックマークのURL部分に上記のコードを入れて、投稿別ページ(例:https://www.instagram.com/p/BUW-yj8A7VX/)で実行してもらえれば、画像だけが引き抜かれるはずです。 コード的には、HTML内にJSONが埋め込まれているので、それを探して取り出して、その中から画像のURLを探し、URLのパラメータを置き換えれば…という感じです。

ちなみに画像の抽出だけでなく動画の抽出にも対応していますので、ぜひ。