Amboss Copier

Copy article informations from Miamed Amboss.

目前为 2016-09-16 提交的版本,查看 最新版本

// ==UserScript==
// @name         Amboss Copier
// @namespace    http://oix.cc/gm
// @description  Copy article informations from Miamed Amboss.
// @author       Bin Zhang
// @icon         https://amboss.miamed.de/favicon-192x192.png
// @homepageURL  http://oix.cc/amboss
// @version      0.0.3
// @match        https://amboss.miamed.de/library
// @include      /^https?://amboss-miamed-de\.ezproxy\..*/library$/
// @grant        GM_setClipboard
// @run-at       document-idle
// ==/UserScript==

(function(){

var loadingWatcher;
var currentContent;

if (typeof angular !== 'undefined' || typeof angular.element('#LibraryContent').scope() !== 'undefined') {
    setwatcher();
    window.addEventListener("hashchange", setwatcher);
    document.addEventListener('keydown', function(e) {
        if ('card' === currentContent) {
            // pressed ctrl+alt+c
            if (e.key == 'c' && !e.shiftKey && e.ctrlKey && e.altKey && !e.metaKey) {
                GM_setClipboard('<a href="url">test</a>','html');
            }            
        } else if ('list' === currentContent) {
            // pressed ctrl+alt+c
            if (e.key == 'c' && !e.shiftKey && e.ctrlKey && e.altKey && !e.metaKey) {
                GM_setClipboard(getlisthtml(),'text');
            }            
        }
    }, false);
}

function setwatcher() {
    currentContent = null;
    
    var i;
    if (!i) i = 50;
    if (null !== getParameterByName('xid', '?' + window.location.hash.substring(1))) {
        // only cards set $root.loading, poll loading
        loadingWatcher = setInterval(checkloading, i);
    } else {
        i = 1000;
        loadingWatcher = setInterval(function (){
            clearInterval(loadingWatcher);
            loaded();
        }, i);
    }
    //console.log('i=' + i);
}
    
function checkloading() {
    //console.log('watch');
    //console.log(angular.element('#LibraryContent').scope().$root.loading);

    if (angular.element('#LibraryContent').scope().$root.loading !== true) {
        //console.log(typeof angular.element('#LibraryContent').scope().$root.loading);
        clearInterval(loadingWatcher);
        loaded();
    }
}

function loaded () {
    console.log('loaded');
    //console.log($('#LibraryContent').html());

    if (null !== getParameterByName('xid', '?' + window.location.hash.substring(1)) && $('#LibraryContent').find('article.LearningCard:visible').length > 0) {
        //console.log('card');
        currentContent = 'card';
    } 
    if ($('#LibraryContent').find('#LibraryList:visible').length > 0) {
        //console.log('list');
        currentContent = 'list';

    }
}

function getParameterByName(name, url) {
    if (!url) url = window.location.href;
    name = name.replace(/[\[\]]/g, "\\$&");
    var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, " "));
}

function getlisthtml() {
    var html = '';
    html += '<h2>' + $.trim($('#LibraryContent').find('#Title').text()) + '</h2>';
    html += $('table#LibraryList').find('td:not(:nth-child(2), :nth-child(3), :nth-child(8), :nth-child(9))').remove().end().find('th').remove().end().html();
    return html;
}

}());