Advertisement
Aarivex

>_ Instagram Direct URL Opener >_

Dec 31st, 2018
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name         Instagram Direct URL Opener >_
  3. // @namespace    https://pr0gramm.com/user/Aarivex
  4. // @version      1.0
  5. // @description  Opens the url(s) of the image(s) or video(s) on the current instagram page in tabs
  6. // @author       Aarivex
  7. // @match        https://*.instagram.com/*
  8. // @require      https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js
  9. // ==/UserScript==
  10.  
  11. $(function() {
  12.     /*
  13.         Kommentare sind auf Englisch, einfache Angewohnheit - komme damit besser zurecht.
  14.         Viel Spaß! Kann jedermann gerne updaten oder auf seine Bedürfnisse anpassen.
  15.         > Copyright (mein Name) sollte jedoch bitte dabei stehen.
  16.        
  17.         Open the direct url to the image or video that is currently opened
  18.         Opens multiple tabs for each image when there are multiple media
  19.     */
  20.     function OpenImages()
  21.     {
  22.         // Stores the urls of the images
  23.         var imageUrlBuffer = [];
  24.  
  25.         // Instagrams native object that stores everything we need
  26.         var sharedData = _sharedData.entry_data.PostPage[0].graphql.shortcode_media;
  27.  
  28.         // If theres only one image
  29.         if (!sharedData.edge_sidecar_to_children)
  30.         {
  31.             // Check if its a image or video
  32.             if (sharedData.is_video)
  33.                 imageUrlBuffer.push(sharedData.video_url); // Video
  34.  
  35.             else
  36.                 imageUrlBuffer.push(sharedData.display_url); // Image
  37.         }
  38.  
  39.         // If there are multiple images
  40.         if (sharedData.edge_sidecar_to_children && sharedData.edge_sidecar_to_children.edges.length > 0)
  41.         {
  42.             for(var i = 0; i < sharedData.edge_sidecar_to_children.edges.length; i++)
  43.             {
  44.                 var node = sharedData.edge_sidecar_to_children.edges[i].node;
  45.  
  46.                 // Check if its a image or video
  47.                 if (node.is_video)
  48.                     imageUrlBuffer.push(node.video_url); // Video
  49.  
  50.                 else
  51.                     imageUrlBuffer.push(node.display_url); // Image
  52.             }
  53.         }
  54.        
  55.         // Open each image and video as a new tab
  56.         for(var url in imageUrlBuffer)
  57.             window.open(imageUrlBuffer[url]);
  58.     }
  59.  
  60.     /*
  61.         In keyCodes könnt ihr die Chars reinschreiben, die das Öffnen der Tabs triggern sollen.
  62.         Standard ist dl, sprich wenn ihr dl ohne Unterbrechung auf der Seite eingibt, werden die Medien in Tabs geöffnet.
  63.    
  64.         Register keycodes (Default: dl)
  65.         Can be changed to anything
  66.      */
  67.     var keyCodes = [ 'd', 'l' ];
  68.  
  69.     // Stores the keycodes, empties after size reaches 3
  70.     var keyPressedBuffer = [];
  71.  
  72.     // Register keydown event on body
  73.     $('body').keydown(function (e) {
  74.  
  75.         // Check if pressed key is part of the keycodes
  76.         if (keyCodes.indexOf(e.key) >= 0)
  77.         {
  78.             // Add pressed key to the recent pressed keys buffer
  79.             keyPressedBuffer.push(e.key);
  80.  
  81.             // Check if recent 3 keypresses are in same order as the registered keycode
  82.             if (keyPressedBuffer.length == 2)
  83.             {
  84.                 var _validate = true;
  85.                 for (var key in keyPressedBuffer)
  86.                     if (keyCodes[key])
  87.                         if (keyPressedBuffer[key] != keyCodes[key])
  88.                             _validate = false; // Invalid order, cancel
  89.  
  90.                 if (_validate) // Keycode matched!
  91.                     OpenImages(); // call function
  92.             }
  93.         }
  94.  
  95.         // Empty keypress buffer after 3 entries
  96.         if (keyPressedBuffer.length >= 2)
  97.             keyPressedBuffer = [];
  98.     });
  99. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement