Advertisement
az4521

Upnext.fm Favourites Exporter

Oct 23rd, 2016
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //THIS IS HOW I IMPORT DEPENDENCIES
  2. //DEAL WITH IT
  3.  
  4. /* FileSaver.js
  5.  *  A saveAs() & saveTextAs() FileSaver implementation.
  6.  *  2014-06-24
  7.  *
  8.  *  Modify by Brian Chen
  9.  *  Author: Eli Grey, http://eligrey.com
  10.  *  License: X11/MIT
  11.  *    See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md
  12.  */
  13.  
  14. /*global self */
  15. /*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */
  16.  
  17. /*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */
  18.  
  19. var saveAs = saveAs
  20.   // IE 10+ (native saveAs)
  21.   || (typeof navigator !== "undefined" &&
  22.       navigator.msSaveOrOpenBlob && navigator.msSaveOrOpenBlob.bind(navigator))
  23.   // Everyone else
  24.   || (function (view) {
  25.       "use strict";
  26.       // IE <10 is explicitly unsupported
  27.       if (typeof navigator !== "undefined" &&
  28.           /MSIE [1-9]\./.test(navigator.userAgent)) {
  29.           return;
  30.       }
  31.       var
  32.             doc = view.document
  33.             // only get URL when necessary in case Blob.js hasn't overridden it yet
  34.           , get_URL = function () {
  35.               return view.URL || view.webkitURL || view;
  36.           }
  37.           , save_link = doc.createElementNS("http://www.w3.org/1999/xhtml", "a")
  38.           , can_use_save_link = !view.externalHost && "download" in save_link
  39.           , click = function (node) {
  40.               var event = doc.createEvent("MouseEvents");
  41.               event.initMouseEvent(
  42.                   "click", true, false, view, 0, 0, 0, 0, 0
  43.                   , false, false, false, false, 0, null
  44.               );
  45.               node.dispatchEvent(event);
  46.           }
  47.           , webkit_req_fs = view.webkitRequestFileSystem
  48.           , req_fs = view.requestFileSystem || webkit_req_fs || view.mozRequestFileSystem
  49.           , throw_outside = function (ex) {
  50.               (view.setImmediate || view.setTimeout)(function () {
  51.                   throw ex;
  52.               }, 0);
  53.           }
  54.           , force_saveable_type = "application/octet-stream"
  55.           , fs_min_size = 0
  56.           , deletion_queue = []
  57.           , process_deletion_queue = function () {
  58.               var i = deletion_queue.length;
  59.               while (i--) {
  60.                   var file = deletion_queue[i];
  61.                   if (typeof file === "string") { // file is an object URL
  62.                       get_URL().revokeObjectURL(file);
  63.                   } else { // file is a File
  64.                       file.remove();
  65.                   }
  66.               }
  67.               deletion_queue.length = 0; // clear queue
  68.           }
  69.           , dispatch = function (filesaver, event_types, event) {
  70.               event_types = [].concat(event_types);
  71.               var i = event_types.length;
  72.               while (i--) {
  73.                   var listener = filesaver["on" + event_types[i]];
  74.                   if (typeof listener === "function") {
  75.                       try {
  76.                           listener.call(filesaver, event || filesaver);
  77.                       } catch (ex) {
  78.                           throw_outside(ex);
  79.                       }
  80.                   }
  81.               }
  82.           }
  83.           , FileSaver = function (blob, name) {
  84.               // First try a.download, then web filesystem, then object URLs
  85.               var
  86.                     filesaver = this
  87.                   , type = blob.type
  88.                   , blob_changed = false
  89.                   , object_url
  90.                   , target_view
  91.                   , get_object_url = function () {
  92.                       var object_url = get_URL().createObjectURL(blob);
  93.                       deletion_queue.push(object_url);
  94.                       return object_url;
  95.                   }
  96.                   , dispatch_all = function () {
  97.                       dispatch(filesaver, "writestart progress write writeend".split(" "));
  98.                   }
  99.                   // on any filesys errors revert to saving with object URLs
  100.                   , fs_error = function () {
  101.                       // don't create more object URLs than needed
  102.                       if (blob_changed || !object_url) {
  103.                           object_url = get_object_url(blob);
  104.                       }
  105.                       if (target_view) {
  106.                           target_view.location.href = object_url;
  107.                       } else {
  108.                           window.open(object_url, "_blank");
  109.                       }
  110.                       filesaver.readyState = filesaver.DONE;
  111.                       dispatch_all();
  112.                   }
  113.                   , abortable = function (func) {
  114.                       return function () {
  115.                           if (filesaver.readyState !== filesaver.DONE) {
  116.                               return func.apply(this, arguments);
  117.                           }
  118.                       };
  119.                   }
  120.                   , create_if_not_found = { create: true, exclusive: false }
  121.                   , slice
  122.               ;
  123.               filesaver.readyState = filesaver.INIT;
  124.               if (!name) {
  125.                   name = "download";
  126.               }
  127.               if (can_use_save_link) {
  128.                   object_url = get_object_url(blob);
  129.                   save_link.href = object_url;
  130.                   save_link.download = name;
  131.                   click(save_link);
  132.                   filesaver.readyState = filesaver.DONE;
  133.                   dispatch_all();
  134.                   return;
  135.               }
  136.               // Object and web filesystem URLs have a problem saving in Google Chrome when
  137.               // viewed in a tab, so I force save with application/octet-stream
  138.               // http://code.google.com/p/chromium/issues/detail?id=91158
  139.               if (view.chrome && type && type !== force_saveable_type) {
  140.                   slice = blob.slice || blob.webkitSlice;
  141.                   blob = slice.call(blob, 0, blob.size, force_saveable_type);
  142.                   blob_changed = true;
  143.               }
  144.               // Since I can't be sure that the guessed media type will trigger a download
  145.               // in WebKit, I append .download to the filename.
  146.               // https://bugs.webkit.org/show_bug.cgi?id=65440
  147.               if (webkit_req_fs && name !== "download") {
  148.                   name += ".download";
  149.               }
  150.               if (type === force_saveable_type || webkit_req_fs) {
  151.                   target_view = view;
  152.               }
  153.               if (!req_fs) {
  154.                   fs_error();
  155.                   return;
  156.               }
  157.               fs_min_size += blob.size;
  158.               req_fs(view.TEMPORARY, fs_min_size, abortable(function (fs) {
  159.                   fs.root.getDirectory("saved", create_if_not_found, abortable(function (dir) {
  160.                       var save = function () {
  161.                           dir.getFile(name, create_if_not_found, abortable(function (file) {
  162.                               file.createWriter(abortable(function (writer) {
  163.                                   writer.onwriteend = function (event) {
  164.                                       target_view.location.href = file.toURL();
  165.                                       deletion_queue.push(file);
  166.                                       filesaver.readyState = filesaver.DONE;
  167.                                       dispatch(filesaver, "writeend", event);
  168.                                   };
  169.                                   writer.onerror = function () {
  170.                                       var error = writer.error;
  171.                                       if (error.code !== error.ABORT_ERR) {
  172.                                           fs_error();
  173.                                       }
  174.                                   };
  175.                                   "writestart progress write abort".split(" ").forEach(function (event) {
  176.                                       writer["on" + event] = filesaver["on" + event];
  177.                                   });
  178.                                   writer.write(blob);
  179.                                   filesaver.abort = function () {
  180.                                       writer.abort();
  181.                                       filesaver.readyState = filesaver.DONE;
  182.                                   };
  183.                                   filesaver.readyState = filesaver.WRITING;
  184.                               }), fs_error);
  185.                           }), fs_error);
  186.                       };
  187.                       dir.getFile(name, { create: false }, abortable(function (file) {
  188.                           // delete file if it already exists
  189.                           file.remove();
  190.                           save();
  191.                       }), abortable(function (ex) {
  192.                           if (ex.code === ex.NOT_FOUND_ERR) {
  193.                               save();
  194.                           } else {
  195.                               fs_error();
  196.                           }
  197.                       }));
  198.                   }), fs_error);
  199.               }), fs_error);
  200.           }
  201.           , FS_proto = FileSaver.prototype
  202.           , saveAs = function (blob, name) {
  203.               return new FileSaver(blob, name);
  204.           }
  205.       ;
  206.       FS_proto.abort = function () {
  207.           var filesaver = this;
  208.           filesaver.readyState = filesaver.DONE;
  209.           dispatch(filesaver, "abort");
  210.       };
  211.       FS_proto.readyState = FS_proto.INIT = 0;
  212.       FS_proto.WRITING = 1;
  213.       FS_proto.DONE = 2;
  214.  
  215.       FS_proto.error =
  216.       FS_proto.onwritestart =
  217.       FS_proto.onprogress =
  218.       FS_proto.onwrite =
  219.       FS_proto.onabort =
  220.       FS_proto.onerror =
  221.       FS_proto.onwriteend =
  222.           null;
  223.  
  224.       view.addEventListener("unload", process_deletion_queue, false);
  225.       saveAs.unload = function () {
  226.           process_deletion_queue();
  227.           view.removeEventListener("unload", process_deletion_queue, false);
  228.       };
  229.       return saveAs;
  230.   }(
  231.        typeof self !== "undefined" && self
  232.     || typeof window !== "undefined" && window
  233.     || this.content
  234. ));
  235. // `self` is undefined in Firefox for Android content script context
  236. // while `this` is nsIContentFrameMessageManager
  237. // with an attribute `content` that corresponds to the window
  238.  
  239. if (typeof module !== "undefined" && module !== null) {
  240.     module.exports = saveAs;
  241. } else if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) {
  242.     define([], function () {
  243.         return saveAs;
  244.     });
  245. }
  246.  
  247. String.prototype.endsWithAny = function () {
  248.     var strArray = Array.prototype.slice.call(arguments),
  249.         $this = this.toLowerCase().toString();
  250.     for (var i = 0; i < strArray.length; i++) {
  251.         if ($this.indexOf(strArray[i], $this.length - strArray[i].length) !== -1) return true;
  252.     }
  253.     return false;
  254. };
  255.  
  256. var saveTextAs = saveTextAs
  257. || (function (textContent, fileName, charset) {
  258.     fileName = fileName || 'download.txt';
  259.     charset = charset || 'utf-8';
  260.     textContent = (textContent || '').replace(/\r?\n/g, "\r\n");
  261.     if (saveAs && Blob) {
  262.         var blob = new Blob([textContent], { type: "text/plain;charset=" + charset });
  263.         saveAs(blob, fileName);
  264.         return true;
  265.     } else {//IE9-
  266.         var saveTxtWindow = window.frames.saveTxtWindow;
  267.         if (!saveTxtWindow) {
  268.             saveTxtWindow = document.createElement('iframe');
  269.             saveTxtWindow.id = 'saveTxtWindow';
  270.             saveTxtWindow.style.display = 'none';
  271.             document.body.insertBefore(saveTxtWindow, null);
  272.             saveTxtWindow = window.frames.saveTxtWindow;
  273.             if (!saveTxtWindow) {
  274.                 saveTxtWindow = window.open('', '_temp', 'width=100,height=100');
  275.                 if (!saveTxtWindow) {
  276.                     window.alert('Sorry, download file could not be created.');
  277.                     return false;
  278.                 }
  279.             }
  280.         }
  281.  
  282.         var doc = saveTxtWindow.document;
  283.         doc.open('text/html', 'replace');
  284.         doc.charset = charset;
  285.         if (fileName.endsWithAny('.htm', '.html')) {
  286.             doc.close();
  287.             doc.body.innerHTML = '\r\n' + textContent + '\r\n';
  288.         } else {
  289.             if (!fileName.endsWithAny('.txt')) fileName += '.txt';
  290.             doc.write(textContent);
  291.             doc.close();
  292.         }
  293.  
  294.         var retValue = doc.execCommand('SaveAs', null, fileName);
  295.         saveTxtWindow.close();
  296.         return retValue;
  297.     }
  298. })
  299.  
  300.  
  301. //important code that i wrote
  302. //probably headz would call it super shit somehow
  303. $playlist.on("favorites",function(e,data){
  304.     parsed = "UPNEXT.FM FAVOURITES LIST</br>YOUTUBE ONLY</br></br>"
  305.     console.log (data.length);
  306.     for(i = 0; i < data.length; i++){
  307.         if(data[i].type == "yt"){
  308.         parsed = parsed + "https://www.youtube.com/watch?v=" + data[i].uid + "</br>"
  309.         };
  310.     };
  311.     var blob = new Blob([parsed], {type: "plain/text"});
  312.     saveAs(blob, "favs.html");
  313.     console.log("saved");
  314. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement