Skip to content

Instantly share code, notes, and snippets.

@rawnly
Created April 19, 2018 12:56
Show Gist options
  • Save rawnly/c3d97e53a9c87198f762af2a353532d7 to your computer and use it in GitHub Desktop.
Save rawnly/c3d97e53a9c87198f762af2a353532d7 to your computer and use it in GitHub Desktop.
import 'babel-polyfill';
import { URL } from 'url';
import { JSDOM } from 'jsdom';
import got from 'got';
/**
*
* @name zippy
* @param {String} rawUrl
*
*/
export default async function(rawUrl) {
const parsedUrl = new URL(rawUrl);
try {
const { body } = await got(rawUrl)
const { window } = new JSDOM(body);
const { document } = window;
const scripts = document.querySelectorAll('script');
const myScript = scripts[Object.keys(scripts).filter(itemIndex => {
return scripts[itemIndex].innerHTML.includes('dlbutton');
})].innerHTML
const row = myScript.split('\n').filter(content => content.length > 1)[0].split('=')[1];
parsedUrl.pathname = eval(row)
return Promise.resolve( parsedUrl.href );
} catch (error) {
return Promise.reject(error);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment