Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name Instagram Direct URL Opener >_
- // @namespace https://pr0gramm.com/user/Aarivex
- // @version 1.0
- // @description Opens the url(s) of the image(s) or video(s) on the current instagram page in tabs
- // @author Aarivex
- // @match https://*.instagram.com/*
- // @require https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js
- // ==/UserScript==
- $(function() {
- /*
- Kommentare sind auf Englisch, einfache Angewohnheit - komme damit besser zurecht.
- Viel Spaß! Kann jedermann gerne updaten oder auf seine Bedürfnisse anpassen.
- > Copyright (mein Name) sollte jedoch bitte dabei stehen.
- Open the direct url to the image or video that is currently opened
- Opens multiple tabs for each image when there are multiple media
- */
- function OpenImages()
- {
- // Stores the urls of the images
- var imageUrlBuffer = [];
- // Instagrams native object that stores everything we need
- var sharedData = _sharedData.entry_data.PostPage[0].graphql.shortcode_media;
- // If theres only one image
- if (!sharedData.edge_sidecar_to_children)
- {
- // Check if its a image or video
- if (sharedData.is_video)
- imageUrlBuffer.push(sharedData.video_url); // Video
- else
- imageUrlBuffer.push(sharedData.display_url); // Image
- }
- // If there are multiple images
- if (sharedData.edge_sidecar_to_children && sharedData.edge_sidecar_to_children.edges.length > 0)
- {
- for(var i = 0; i < sharedData.edge_sidecar_to_children.edges.length; i++)
- {
- var node = sharedData.edge_sidecar_to_children.edges[i].node;
- // Check if its a image or video
- if (node.is_video)
- imageUrlBuffer.push(node.video_url); // Video
- else
- imageUrlBuffer.push(node.display_url); // Image
- }
- }
- // Open each image and video as a new tab
- for(var url in imageUrlBuffer)
- window.open(imageUrlBuffer[url]);
- }
- /*
- In keyCodes könnt ihr die Chars reinschreiben, die das Öffnen der Tabs triggern sollen.
- Standard ist dl, sprich wenn ihr dl ohne Unterbrechung auf der Seite eingibt, werden die Medien in Tabs geöffnet.
- Register keycodes (Default: dl)
- Can be changed to anything
- */
- var keyCodes = [ 'd', 'l' ];
- // Stores the keycodes, empties after size reaches 3
- var keyPressedBuffer = [];
- // Register keydown event on body
- $('body').keydown(function (e) {
- // Check if pressed key is part of the keycodes
- if (keyCodes.indexOf(e.key) >= 0)
- {
- // Add pressed key to the recent pressed keys buffer
- keyPressedBuffer.push(e.key);
- // Check if recent 3 keypresses are in same order as the registered keycode
- if (keyPressedBuffer.length == 2)
- {
- var _validate = true;
- for (var key in keyPressedBuffer)
- if (keyCodes[key])
- if (keyPressedBuffer[key] != keyCodes[key])
- _validate = false; // Invalid order, cancel
- if (_validate) // Keycode matched!
- OpenImages(); // call function
- }
- }
- // Empty keypress buffer after 3 entries
- if (keyPressedBuffer.length >= 2)
- keyPressedBuffer = [];
- });
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement