// ==UserScript== // @name github add youtube // @namespace damien@pobel.fr // @include https://github.com/* // @version 1 // @grant none // ==/UserScript== (function () { function addButton (group) { var button = group.querySelector('.toolbar-item:last-of-type').cloneNode(true); button.setAttribute('aria-label', "Add a Youtube video"); button.setAttribute('data-ga-click', ""); // https://simpleicons.org/icons/youtube.svg // + class="octicon" // + width="20" // + height="16" // -viewBox button.innerHTML = ''; group.appendChild(button); return button; } function addMarkdown (textarea) { var vid, value = textarea.value; if ( textarea.selectionStart !== textarea.selectionEnd ) { vid = textarea.value.substring(textarea.selectionStart, textarea.selectionEnd).trim(); } else { vid = window.prompt('Youtube video URL?'); } vid = vid.replace(/.*v=([a-z0-9_-]+).*/gi, '$1'); textarea.value = `${value.substring(0, textarea.selectionStart)} [![](https://img.youtube.com/vi/${vid}/0.jpg)](http://www.youtube.com/watch?v=${vid} "Click to play on Youtube.com") ${value.substring(textarea.selectionEnd)}`; } function enhanceToolbar(commentForm) { var textarea = commentForm.querySelector('.comment-form-textarea'), toolbarGroup = commentForm.querySelector('.toolbar-group:last-of-type'), button; if ( !textarea || !toolbarGroup ) { return; } button = addButton(toolbarGroup); button.onclick = function (e) { e.stopPropagation(); addMarkdown(textarea); }; } Array.prototype.forEach.call(document.querySelectorAll('.previewable-comment-form'), enhanceToolbar); })();