Bookmarklet Template

Bookmarklet for YouTube Infinite Repeater

by lchau

HTML

<div>
    <span class='bold'>Source</span>: <a id='source_url' target='_blank'></a>
</div>

<div>
    <span class='bold'>Drag to bookmarks</span>: <a id='bookmarklet'>Generating&hellip;</a>
</div>

CSS

.hidden {
  display: none;
}

body {
  font-family: sans-serif;
  font-size: 13px;
}

div {
  padding: 7px;
}

.bold {
  font-weight: bold;
}

JavaScript

$.ajaxSetup({
  dataType: 'text'
});

function getDisplayName(url) {
  var matcher = url.match(/https?:\/\/.+\/([^\/]+.)$/);
  if (matcher) {
    url = matcher[1].replace('/', '');
    url = url.slice(0, url.indexOf('.'));
  }
  return url;
}

function minify(source) {
  return $.post('https://closure-compiler.appspot.com/compile', {
    output_info: 'compiled_code',
    compilation_level: 'ADVANCED_OPTIMIZATIONS',
    warning_level: 'quiet',
    js_code: source
  });
}

function update(id, text, href) {
  $(id)
    .text(text)
    .attr('href', href);
}

var SOURCE_URL = 'https://gist.github.com/lamchau/b02c6c8a64d0a384ae18';
var SOURCE_CDN_URL = 'https://cdn.rawgit.com/lamchau/b02c6c8a64d0a384ae18/raw/63a758032e30c6f4b9c1a720f5be406ae6b54702/youtube-repeat.js';

update('#source_url', SOURCE_URL, SOURCE_URL);

$.get(SOURCE_CDN_URL)
  .then(minify)
  .then(function(source) {
    var text = getDisplayName(SOURCE_CDN_URL);
    update('#bookmarklet', text, source);
  });