IG小助手

一键下载对方 Instagram 帖子中的相片、视频甚至是他们的快拍!

当前为 2022-07-30 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name               IG Helper
// @name:zh-TW         IG小精靈
// @name:zh-CN         IG小助手
// @name:ja            IG助手
// @name:ko            IG조수
// @namespace          https://github.snkms.com/
// @version            2.3.7
// @description        Downloading Instagram posts photos and videos or their stories!
// @description:zh-TW  一鍵下載對方 Instagram 貼文中的相片、影片甚至是他們的限時動態!
// @description:zh-CN  一键下载对方 Instagram 帖子中的相片、视频甚至是他们的快拍!
// @description:ja     写真、ビデオ、そしてお互いの Instagram 投稿からのストーリーずズのワンクリックダウンロード!
// @description:ko     Instagram 게시물에서 사진, 비디오 또는 이야기를 다운로드하십시오.
// @author             SN-Koarashi (5026)
// @match              https://*.instagram.com/*
// @grant              GM_setValue
// @grant              GM_getValue
// @grant              GM_xmlhttpRequest
// @require            https://code.jquery.com/jquery-3.6.0.min.js
// @supportURL         https://www.facebook.com/smileopwe/
// @icon               https://www.google.com/s2/favicons?domain=instagram.com
// @compatible         firefox >= 87
// @compatible         chrome >= 90
// @compatible         edge >= 90
// @license            GPLv3
// ==/UserScript==

(function(jQuery) {
    'use strict';
    // Icon download by https://www.flaticon.com/authors/pixel-perfect

    const $ = jQuery;
    const checkInterval = 250;

    var currentURL = location.href;
    var currentHeight = $(document).height();
    var firstStarted = false;
    var pageLoaded = false;

    var GL_postPath;
    var GL_username;

    // Main Timer
    var timer = setInterval(function(){
        currentHeight = $(document).height();

        // Call Instagram dialog function if url changed.
        if(currentURL != location.href || !firstStarted || !pageLoaded){
            pageLoaded = false;
            firstStarted = true;
            currentURL = location.href;

            if($('div.sspdcydq[role="dialog"]').length || $('main._a993[role="main"]').length){
                console.log('isDialog');
                setTimeout(()=>{
                    onReadyMyDW(false);
                },150);
                pageLoaded = true;
            }

            if(location.href == "https://www.instagram.com/"){
                console.log('isHomepage');
                setTimeout(()=>{
                    onReadyMyDW(false);
                },150);
                pageLoaded = true;
            }

            if(!pageLoaded){
                // Call Instagram stories function
                if(location.href.match(/^(https:\/\/www\.instagram\.com\/stories\/)/ig)){
                    console.log('isStory');
                    onStoryDW(false);
                    onStoryThumbnailDW(false);

                    if($(".IG_DWSTORY").length) setTimeout(()=>{pageLoaded = true;},150);
                }
                else{
                    pageLoaded = false;
                    // Remove the download icon
                    $('.IG_DWSTORY').remove();
                    $('.IG_DWSTORY_THUMBNAIL').remove();
                }
            }

        }

        // Direct Download Checkbox
        if(!$('.AutoDownload_dom').length){
            let ckValue = (GM_getValue('AutoDownload'))?'checked':'';
            $('body ._acuq._acur').append('<div class="AutoDownload_dom" style="position: absolute;left:15px;top:0px;padding:6px;line-height:1;background:#fff;border-radius: 50%;"><label title="Checking it will direct download current photos in the posts." style="cursor:help;"><input type="checkbox" value="1" class="AutoDownload" name="AutoDownload" '+ckValue+' />DDL</label></div>');
        }
    },checkInterval);

    // Call general function when user scroll the page
    $(document).scroll(function(){
        if(currentHeight != $(this).height()){
            onReadyMyDW();
        }
    });

    // Stories funcion
    function onStoryDW(isDownload){
        if(isDownload){
            let date = new Date().getTime();
            let timestamp = Math.floor(date / 1000);
            let username = $("body > div section._ac0a header._ac0k ._ac0l div ._ac0q > a").text();

            if($('body > div section._ac0a video._aa63').length){
                // Download stories if it is video
                let downloadLink = $('video._aa63 source').attr('src')+'&dl=1';
                let type = 'mp4';

                saveFiles(downloadLink,username,"stories",timestamp,type);
            }
            else{
                // Download stories if it is image
                let srcset = $('section._ac0a ._aa64 img._aa63').attr('srcset').split(',')[0].split(' ')[0];
                let link = (srcset)?srcset:$('section._ac0a ._aa64 img._aa63').attr('src');

                let downloadLink = link+'&dl=1';
                let type = 'jpg';

                saveFiles(downloadLink,username,"stories",timestamp,type);
            }
        }
        else{
            // Add the stories download button
            let style = "position: absolute;right:-40px;top:15px;padding:5px;line-height:1;background:#fff;border-radius: 5px;cursor:pointer;";
            if(!$('.IG_DWSTORY').length){
                $('body > div section._ac0a').append('<div title="Download" class="IG_DWSTORY" style="'+style+'"><svg width="16" height="16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Capa_1" x="0px" y="0px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve"><g><g><path d="M382.56,233.376C379.968,227.648,374.272,224,368,224h-64V16c0-8.832-7.168-16-16-16h-64c-8.832,0-16,7.168-16,16v208h-64    c-6.272,0-11.968,3.68-14.56,9.376c-2.624,5.728-1.6,12.416,2.528,17.152l112,128c3.04,3.488,7.424,5.472,12.032,5.472    c4.608,0,8.992-2.016,12.032-5.472l112-128C384.192,245.824,385.152,239.104,382.56,233.376z"/></g></g><g><g><path d="M432,352v96H80v-96H16v128c0,17.696,14.336,32,32,32h416c17.696,0,32-14.304,32-32V352H432z"/></g></g></div>');
                return true;
            }
        }
    }

    // Stories Thumbnail funcion
    function onStoryThumbnailDW(isDownload){
        if(isDownload){
            // Download stories if it is video
            let srcset = $('section._ac0a ._aa64 img._aa63').attr('srcset').split(',')[0].split(' ')[0];
            let downloadLink = (srcset)?srcset:$('section._ac0a ._aa64 img._aa63').attr('src');

            let date = new Date().getTime();
            let timestamp = Math.floor(date / 1000);
            let type = 'jpg';
            let username = $("body > div section._ac0a header._ac0k ._ac0l div ._ac0q > a").text();
            let style = 'margin:5px 0px;padding:5px 0px;color:#111;font-size:1rem;line-height:1rem;text-align:center;border:1px solid #000;border-radius: 5px;';

            // Download thumbnail
            saveFiles(downloadLink,username,"thumbnail",timestamp,type);
        }
        else{
            if($('body > div section._ac0a video._aa63').length){
                // Add the stories download button
                let style = "position: absolute;right:-40px;top:45px;padding:5px;line-height:1;background:#fff;border-radius: 5px;cursor:pointer;";
                if(!$('.IG_DWSTORY_THUMBNAIL').length){
                    $('body > div section._ac0a').append('<div title="Download video thumbnail" class="IG_DWSTORY_THUMBNAIL" style="'+style+'"><svg width="16" height="16" xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="512" viewBox="0 0 24 24" width="512"><circle cx="8.25" cy="5.25" r=".5"/><path d="m8.25 6.5c-.689 0-1.25-.561-1.25-1.25s.561-1.25 1.25-1.25 1.25.561 1.25 1.25-.561 1.25-1.25 1.25zm0-1.5c-.138 0-.25.112-.25.25 0 .275.5.275.5 0 0-.138-.112-.25-.25-.25z"/><path d="m7.25 11.25 2-2.5 2.25 1.5 2.25-3.5 3 4.5z"/><path d="m16.75 12h-9.5c-.288 0-.551-.165-.676-.425s-.09-.568.09-.793l2-2.5c.243-.304.678-.372 1.002-.156l1.616 1.077 1.837-2.859c.137-.212.372-.342.625-.344.246-.026.49.123.63.334l3 4.5c.153.23.168.526.037.77-.13.244-.385.396-.661.396zm-4.519-1.5h3.118l-1.587-2.381zm-3.42 0h1.712l-1.117-.745z"/><path d="m22.25 14h-2.756c-.778 0-1.452.501-1.676 1.247l-.859 2.862c-.16.533-.641.891-1.197.891h-7.524c-.556 0-1.037-.358-1.197-.891l-.859-2.861c-.224-.747-.897-1.248-1.676-1.248h-2.756c-.965 0-1.75.785-1.75 1.75v5.5c0 1.517 1.233 2.75 2.75 2.75h18.5c1.517 0 2.75-1.233 2.75-2.75v-5.5c0-.965-.785-1.75-1.75-1.75z"/><path d="m4 12c-.552 0-1-.448-1-1v-8c0-1.654 1.346-3 3-3h12c1.654 0 3 1.346 3 3v8c0 .552-.448 1-1 1s-1-.448-1-1v-8c0-.551-.449-1-1-1h-12c-.551 0-1 .449-1 1v8c0 .552-.448 1-1 1z"/></svg></div>');
                }
            }
            else{
                $('.IG_DWSTORY_THUMBNAIL').remove();
            }
        }
    }

    // Prepare promise to cache article which contains blob media
    function getBlobMedia(postPath){
        return new Promise((resolve,reject)=>{
            if(!postPath) reject("NOPATH");
            let postShortCode = postPath.substring(3, postPath.length - 1);
            let getURL = `https://www.instagram.com/graphql/query/?query_hash=2c4c2e343a8f64c625ba02b2aa12c7f8&variables=%7B%22shortcode%22:%22${postShortCode}%22}`;

            GM_xmlhttpRequest({
                method: "GET",
                url: getURL,
                onload: function(response) {
                    let obj = JSON.parse(response.response);
                    resolve(obj.data);
                },
                onerror: function(err){
                    reject(err);
                }
            });
        });
    }

    // Main function
    function onReadyMyDW(NoDialog){
        // Whether is Instagram dialog?
        if(!NoDialog){
            // Running if it is dialog
            $('article[role="presentation"]').each(function(){
                $(this).removeAttr('data-snig');
                $(this).unbind('click');
            });
            $('.SNKMS_IG_DW_MAIN,.SNKMS_IG_DW_MAIN_VIDEO').remove();
        }
        if(NoDialog == false){
            var repeat = setInterval(() => {
                if($('article[data-snig="canDownload"]').length > 0) clearInterval(repeat);
                createArtBtn();
            },250);
        }
        else{
            createArtBtn();
        }
    }

    function createArtBtn(){
        // Add download icon per each posts
        $('article[role="presentation"]').each(function(){
            // If it is have not download icon
            if(!$(this).attr('data-snig')){
                console.log("Found article");
                var style = "position: absolute;right:15px;top:15px;padding:6px;line-height:1;background:#fff;border-radius: 50%;cursor:pointer;";

                // Add the download icon
                $(this).children("div").children("div").eq(1).append('<div title="Download" class="SNKMS_IG_DW_MAIN" style="'+style+'"><svg width="16" height="16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Capa_1" x="0px" y="0px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve"><g><g><path d="M382.56,233.376C379.968,227.648,374.272,224,368,224h-64V16c0-8.832-7.168-16-16-16h-64c-8.832,0-16,7.168-16,16v208h-64    c-6.272,0-11.968,3.68-14.56,9.376c-2.624,5.728-1.6,12.416,2.528,17.152l112,128c3.04,3.488,7.424,5.472,12.032,5.472    c4.608,0,8.992-2.016,12.032-5.472l112-128C384.192,245.824,385.152,239.104,382.56,233.376z"/></g></g><g><g><path d="M432,352v96H80v-96H16v128c0,17.696,14.336,32,32,32h416c17.696,0,32-14.304,32-32V352H432z"/></g></g></div>');

                // Running if user click the download icon
                $(this).on('click','.SNKMS_IG_DW_MAIN', async function(e){
                    GL_username = $(this).parent().parent().parent().attr('data-username');
                    GL_postPath = $(this).parent().parent().children("div:last-child").children("div").children("div").children("div:last-child").find("a").attr("href");

                    // Create element that download dailog
                    IG_createDM(GM_getValue('AutoDownload'));

                    var style = 'display:block;margin:5px 0px;padding:5px 0px;color:#111;font-size:1rem;line-height:1rem;text-align:center;border:1px solid #000;border-radius: 5px;';

                    // Find video/image element and add the download icon
                    var s = 0;
                    var multiple = $(this).parent().parent().find('._aap0 ._acaz').length;
                    var pathname = window.location.pathname;
                    var fullpathname = "/"+pathname.split('/')[1]+"/"+pathname.split('/')[2]+"/";

                    // If posts have more than one images or videos.
                    if(multiple){
                        var blob = false;
                        $(this).parent().parent().find('._aap0 ._acaz').each(function(){
                            let element_videos = $(this).parent().parent().find('video._ab1d');
                            if(element_videos && element_videos.attr('src') && element_videos.attr('src').match(/^blob:/ig)){
                                blob = true;
                            }
                        });


                        if(blob){
                            $('.IG_SN_DIG .IG_SN_DIG_MAIN').append('<p style="text-align:center;font-size:20px;" id="_SNLOAD">Loading Blob Media and others...</p>');
                            let media = await getBlobMedia(GL_postPath);
                            let idx = 1;
                            let resource = media.shortcode_media;

                            // GraphVideo
                            if(resource.__typename == "GraphVideo" && resource.video_url){
                                $('.IG_SN_DIG .IG_SN_DIG_MAIN').append('<a data-blob="true" data-needed="direct" data-name="video" data-type="mp4" data-globalIndex="'+idx+'" style="'+style+'" href="javascript:;" data-href="'+resource.video_url+'"><img width="100" src="'+resource.display_resources[1].src+'" /><br/>- Video '+idx+' -</a>');
                                idx++;
                            }
                            // GraphSidecar
                            if(resource.__typename == "GraphSidecar" && resource.edge_sidecar_to_children){

                                for(let e of resource.edge_sidecar_to_children.edges){
                                    if(e.node.__typename == "GraphVideo"){
                                        $('.IG_SN_DIG .IG_SN_DIG_MAIN').append('<a data-blob="true" data-needed="direct" data-name="video" data-type="mp4" data-globalIndex="'+idx+'" style="'+style+'" href="javascript:;" data-href="'+e.node.video_url+'"><img width="100" src="'+e.node.display_resources[1].src+'" /><br/>- Video '+idx+' -</a>');
                                    }

                                    if(e.node.__typename == "GraphImage"){
                                        $('.IG_SN_DIG .IG_SN_DIG_MAIN').append('<a data-blob="true" data-needed="direct" data-name="photo" data-type="jpg" data-globalIndex="'+idx+'" style="'+style+'" href="javascript:;" data-href="'+e.node.display_resources[e.node.display_resources.length - 1].src+'"><img width="100" src="'+e.node.display_resources[1].src+'" /><br/>- Image '+idx+' -</a>');
                                    }
                                    idx++;
                                }
                            }

                            $("#_SNLOAD").remove();
                        }
                        else{
                            $(this).parent().find('._aap0 ._acaz').each(function(){
                                s++;
                                let element_videos = $(this).find('video._ab1d');
                                let element_images = $(this).find('._aagv img');
                                let imgLink = (element_images.attr('srcset'))?element_images.attr('srcset').split(" ")[0]:element_images.attr('src');

                                if(element_videos && element_videos.attr('src')){
                                    let video_image = element_videos.attr('poster');
                                    let video_url = element_videos.attr('src');

                                    $('.IG_SN_DIG .IG_SN_DIG_MAIN').append('<a data-needed="direct" data-name="IGTV" data-type="mp4" data-globalIndex="'+s+'" style="'+style+'" href="javascript:;" data-href="'+video_url+'"><img width="100" src="'+video_image+'" /><br/>- Videos '+s+' -</a>');
                                }
                                if(element_images && imgLink){
                                    $('.IG_SN_DIG .IG_SN_DIG_MAIN').append('<a data-needed="direct" data-name="photo" data-type="jpg" data-globalIndex="'+s+'" style="'+style+'" href="javascript:;" data-href="'+imgLink+'"><img width="100" src="'+imgLink+'" /><br/>- Image '+s+' -</a>');
                                }
                            });
                        }
                    }
                    else{
                        s++;
                        let element_videos = $(this).parent().parent().find('video._ab1d');
                        let element_images = $(this).parent().parent().find('._aagv img');
                        let imgLink = (element_images.attr('srcset'))?element_images.attr('srcset').split(" ")[0]:element_images.attr('src');


                        if(element_videos && element_videos.attr('src')){
                            let video_image = element_videos.attr('poster');
                            let video_url = element_videos.attr('src');

                            if(element_videos.attr('src').match(/^blob:/ig)){
                                $('.IG_SN_DIG .IG_SN_DIG_MAIN').append('<p style="text-align:center;font-size:20px;" id="_SNLOAD">Loading Blob Media...</p>');

                                let media = await getBlobMedia(GL_postPath);
                                let idx = 1;
                                let resource = media.shortcode_media;

                                // GraphVideo
                                if(resource.__typename == "GraphVideo" && resource.video_url){
                                    $('.IG_SN_DIG .IG_SN_DIG_MAIN').append('<a data-blob="true" data-needed="direct" data-name="video" data-type="mp4" data-globalIndex="'+idx+'" style="'+style+'" href="javascript:;" data-href="'+resource.video_url+'"><img width="100" src="'+resource.display_resources[1].src+'" /><br/>- Video '+idx+' -</a>');
                                    idx++;
                                }
                                // GraphSidecar
                                if(resource.__typename == "GraphSidecar" && resource.edge_sidecar_to_children){

                                    for(let e of resource.edge_sidecar_to_children.edges){
                                        if(e.node.__typename == "GraphVideo"){
                                            $('.IG_SN_DIG .IG_SN_DIG_MAIN').append('<a data-blob="true" data-needed="direct" data-name="video" data-type="mp4" data-globalIndex="'+idx+'" style="'+style+'" href="javascript:;" data-href="'+e.node.video_url+'"><img width="100" src="'+e.node.display_resources[1].src+'" /><br/>- Video '+idx+' -</a>');
                                        }

                                        if(e.node.__typename == "GraphImage"){
                                            $('.IG_SN_DIG .IG_SN_DIG_MAIN').append('<a data-blob="true" data-needed="direct" data-name="photo" data-type="jpg" data-globalIndex="'+idx+'" style="'+style+'" href="javascript:;" data-href="'+e.node.display_resources[e.node.display_resources.length - 1].src+'"><img width="100" src="'+e.node.display_resources[1].src+'" /><br/>- Image '+idx+' -</a>');
                                        }
                                        idx++;
                                    }
                                }

                                $("#_SNLOAD").remove();
                            }
                            else{
                                $('.IG_SN_DIG .IG_SN_DIG_MAIN').append('<a data-needed="direct" data-name="video" data-type="mp4" data-globalIndex="'+s+'" style="'+style+'" href="javascript:;" data-href="'+video_url+'"><img width="100" src="'+video_image+'" /><br/>- Video '+s+' -</a>');
                            }
                        }
                        if(element_images && imgLink){
                            $('.IG_SN_DIG .IG_SN_DIG_MAIN').append('<a data-needed="direct" data-name="photo" data-type="jpg" data-globalIndex="'+s+'" style="'+style+'" href="javascript:;" href="" data-href="'+imgLink+'"><img width="100" src="'+imgLink+'" /><br/>- Image '+s+' -</a>');
                        }
                    }


                    if(GM_getValue('AutoDownload')){
                        var autoTimer = setInterval(()=>{
                            if($('a[data-type]').length > 0){
                                var GB_Index = 1;

                                if(!$('a[data-blob="true"]').length){
                                    let selectionArr = [...$(this).parent().find('._aamk').children('._acnb')];

                                    let LeftButton = $(this).parent().parent().find('button._aahh').length;
                                    let RightButton = $(this).parent().parent().find('button._aahi').length;

                                    if(LeftButton && !RightButton){ // Left Only
                                        GB_Index = 2;
                                        console.log('Left Only');
                                    }
                                    else if(!LeftButton && RightButton){ // Right Only
                                        GB_Index = 1;
                                        console.log('Right Only');
                                    }
                                    else if(!LeftButton && !RightButton){ // Both Not Exist
                                        GB_Index = 1;
                                        console.log('Both Not Exist');
                                    }
                                    else{ // Both Exist
                                        GB_Index = 2;
                                        console.log('Both Exist');
                                    }
                                }
                                else{
                                    console.log('Blob Media');
                                    let selectionArr = ($(this).parent().find('._aamk').children('._acnb').length)?[...$(this).parent().find('._aamk').children('._acnb')]:[...$(this).parent().find('._aamj').children('._acnb')];
                                    let idx = 0;

                                    for(let element of selectionArr){
                                        idx++;
                                        if($(element).attr('class').match(/_acnf/g)){
                                            GB_Index = idx;
                                        }
                                    }
                                }

                                let downloadLink = $('.IG_SN_DIG').find('a[data-globalindex="'+GB_Index+'"]').attr('data-href');
                                let date = new Date().getTime();
                                let timestamp = Math.floor(date / 1000);
                                let type = $('.IG_SN_DIG').find('a[data-globalindex="'+GB_Index+'"]').attr('data-type');
                                let name = $('.IG_SN_DIG').find('a[data-globalindex="'+GB_Index+'"]').attr('data-name');

                                saveFiles(downloadLink,GL_username,name,timestamp,type);
                                $('.IG_SN_DIG').remove();
                                clearInterval(autoTimer);
                            }
                        },500);
                    }
                });

                // Add the mark that download is ready
                var username = $(this).find("header div:last-child span > a").text();

                $(this).attr('data-snig','canDownload');
                $(this).attr('data-username',username);
            }
        });
    }

    // Download and rename files
    function saveFiles(downloadLink,username,index,timestamp,type){
        fetch(downloadLink).then(res => {
            return res.blob().then(dwel => {
                const a = document.createElement("a");
                const name = username+'-'+index+'-'+timestamp+'.'+type;
                a.href = URL.createObjectURL(dwel);
                a.setAttribute("download", name);
                a.click();
                a.remove();
            });
        });
    }

    // Create the download dialog element funcion
    function IG_createDM(a){
        let style = (!a)?"position: fixed;left: 0px;right: 0px;bottom: 0px;top: 0px;":"display:none;";
        $('body').append('<div class="IG_SN_DIG" style="'+style+';z-index: 500;"><div class="IG_SN_DIG_BG" style="'+style+'z-index:502;background: rgba(0,0,0,.75);"></div><div class="IG_SN_DIG_MAIN" style="z-index: 510;padding:10px 15px;top:7%;position: absolute;left: 50%;transform: translateX(-50%);width: 500px;min-height: 200px;max-height: 550px;overflow-y:auto;background:#fff;border-radius: 15px;"></div></div>');
        $('.IG_SN_DIG .IG_SN_DIG_MAIN').append('<div style="position:relative;height:36px;line-height:36px;">Alt+Q [Close]<svg width="26" height="26" class="IG_SN_DIG_BTN" style="cursor:pointer;position:absolute;right:0px;" xmlns="http://www.w3.org/2000/svg" id="bold" enable-background="new 0 0 24 24" height="512" viewBox="0 0 24 24" width="512"><path d="m14.828 12 5.303-5.303c.586-.586.586-1.536 0-2.121l-.707-.707c-.586-.586-1.536-.586-2.121 0l-5.303 5.303-5.303-5.304c-.586-.586-1.536-.586-2.121 0l-.708.707c-.586.586-.586 1.536 0 2.121l5.304 5.304-5.303 5.303c-.586.586-.586 1.536 0 2.121l.707.707c.586.586 1.536.586 2.121 0l5.303-5.303 5.303 5.303c.586.586 1.536.586 2.121 0l.707-.707c.586-.586.586-1.536 0-2.121z"/></svg></div>');
    }

    // Running if document is ready
    $(function(){
        // Ready~? GO!!
        onReadyMyDW();

        // Close the download dialog if user click the close icon
        $('body').on('click','.IG_SN_DIG_BTN,.IG_SN_DIG_BG',function(){
            $('.IG_SN_DIG').remove();
        });

        // Hot key [Alt+Q] to close the download dialog
        $(window).keydown(function(e){
            if (e.keyCode == '81' && e.altKey){
                $('.IG_SN_DIG').remove();
                e.preventDefault();
            }
        });
        $('body').on('click','.AutoDownload',function(){
            if($('.AutoDownload:checked').length){
                GM_setValue('AutoDownload',true);
            }
            else{
                GM_setValue('AutoDownload',false);
            }
        });

        $('body').on('click','a[data-needed="direct"]',function(){
            let date = new Date().getTime();
            let timestamp = Math.floor(date / 1000);
            saveFiles($(this).attr('data-href'),GL_username,$(this).attr('data-name'),timestamp,$(this).attr('data-type'));
        });

        // Running if user left-click download icon in stories
        $('body').on('click','.IG_DWSTORY',function(){
            onStoryDW(true);
        });

        // Running if user left-click download icon in stories
        $('body').on('click','.IG_DWSTORY_THUMBNAIL',function(){
            onStoryThumbnailDW(true);
        });
    });

})(jQuery);