Advertisement
Guest User

mfcstats

a guest
Aug 22nd, 2015
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name        MFC Stats
  3. // @namespace   mfcstats
  4. // @description Get online models statistics
  5. // @include       http://m.myfreecams.com/*
  6. // @license     WTFPL — http://www.wtfpl.net/
  7. // @version     0.2
  8. // @grant       none
  9. // ==/UserScript==
  10. (function () {
  11.   var streamData,
  12.   modelData,
  13.   blobURL,
  14.   filename,
  15.   css,
  16.   style,
  17.   link,
  18.   observer,
  19.   listeners = [
  20.   ];
  21.   css = '.streamData {clear: both;font-weight: 700;font-size: x-large;}';
  22.   style = document.createElement('style');
  23.   style.type = 'text/css';
  24.   style.appendChild(document.createTextNode(css));
  25.   document.getElementsByTagName('head') [0].appendChild(style);
  26.   var createBlob = function (streamData) {
  27.     var streamBlob;
  28.     streamBlob = new Blob([streamData], {
  29.       type: 'text/csv'
  30.     });
  31.     return URL.createObjectURL(streamBlob);
  32.   };
  33.   var getStats = function () {
  34.     modelData = mfcApp.currentUser.collection.models;
  35.     streamData = 'userid,username,age,camscore,rank,roomcount\n';
  36.     modelData.forEach(function (elt) {
  37.       var modelAttr = elt.attributes;
  38.       if (modelAttr.camscore !== undefined) {
  39.         streamData = streamData + modelAttr.userid + ',' + modelAttr.username + ',' + modelAttr.age + ',' + modelAttr.camscore + ',' + modelAttr.rank + ',' + modelAttr.roomCount + '\n';
  40.       }
  41.     });
  42.     blobURL = createBlob(streamData);
  43.     filename = 'streamdata_' + new Date().toISOString() + '.csv';
  44.     link = document.createElement('a');
  45.     link.className = 'streamData';
  46.     link.download = filename;
  47.     link.href = blobURL;
  48.     link.appendChild(document.createTextNode('Stats'));
  49.     var menulogo = document.querySelector('.unhide_menu_logo');
  50.     menulogo.parentNode.insertBefore(link, menulogo.nextSibling);
  51.   };
  52.   function ready(selector, fn) {
  53.     listeners.push({
  54.       selector: selector,
  55.       fn: fn
  56.     });
  57.     observer = new MutationObserver(check);
  58.     observer.observe(document, {
  59.       childList: true,
  60.       subtree: true
  61.     });
  62.     check();
  63.   }
  64.   function check() {
  65.     listeners.forEach(function (listener) {
  66.       var elements = document.querySelectorAll(listener.selector);
  67.       for (var i = 0, iLen = elements.length, element; i < iLen; i++) {
  68.         element = elements[i];
  69.         if (!element.ready) {
  70.           element.ready = true;
  71.           listener.fn.call(element, element);
  72.         }
  73.       }
  74.     });
  75.   };
  76.   ready('#column_menu_container', setTimeout(getStats, 5000));
  77. }) ();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement