您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Copy article informations from Miamed Amboss.
当前为
// ==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.5 // @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) { //if ((e.key == 'c' && !e.shiftKey && e.ctrlKey && e.altKey && !e.metaKey) || (e.key == 'F9' && !e.shiftKey && !e.ctrlKey && !e.altKey && !e.metaKey)) { if ((e.key == 'c' && !e.shiftKey && e.ctrlKey && e.altKey && !e.metaKey)) { // pressed ctrl+alt+c or //F9 GM_setClipboard(getCardHtml(),'html'); } else if (e.key == 'a' && !e.shiftKey && e.ctrlKey && e.altKey && !e.metaKey) { // pressed ctrl+alt+a GM_setClipboard(getCardHtml(true),'html'); } } else if ('list' === currentContent) { if (e.key == 'c' && !e.shiftKey && e.ctrlKey && e.altKey && !e.metaKey) { // pressed ctrl+alt+c GM_setClipboard(getListHtml(),'html'); } else if (e.key == 't' && !e.shiftKey && e.ctrlKey && e.altKey && !e.metaKey) { // pressed ctrl+alt+t GM_setClipboard(getListHtml(true),'html'); } } }, 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 = 2000; 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()); // TODO: Change title of kreuzen // https://amboss.miamed.de/study2/index#/aB123Cdef/45 // $('<div/>').html($('[tooltip-classname="lg"]').attr('tooltip-content')).text().replace(/^(Sitzung: )/,''); // "Examens-Kreuzplan (H. 2016), Tag 12 (Frage 34 von 56)" 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'; document.title = getListTitle(); // change browser window title if proper } } function getCardHtml(full) { var html = ''; html += '<h1><a href="' + window.location + '">' + $.trim($('article.LearningCard h1:first').clone().children().remove().end().text()) + ($('article.LearningCard h1:first').attr('tooltip-content')? (' (' + $('article.LearningCard h1:first').attr('tooltip-content').replace(/^(Synonyme:<br> )/,'') + ')') : '') + '</a></h1>'; var tempDiv; if (full) { tempDiv = $('<div>').append($('article.LearningCard>section').clone().find('section, .unwichtig, .veraltet').remove().end().find('li:emptyorspace').remove().end()); // remove meta infos, veraltet and unwichtig //.find('ul:visible:empty, ol:visible:empty').remove().end() //.find('ul:empty, ol:empty').remove().end() } else { tempDiv = $('<div>').append($('article.LearningCard>section:first p').clone()); // only p extracted, first section without p probably not abstracts } tempDiv.find('a').each(function(i, anchor){ anchor.href = $(anchor).prop('href'); // all urls to abs }) html += tempDiv.html(); tempDiv.remove(); tempDiv = null; return html; } function getListHtml(tableFormat) { var html = ''; var listTitle = getListTitle(); document.title = listTitle; if (!tableFormat) { html += '<h2><a href="' + window.location + '">' + listTitle + '</a></h2>'; var tempDiv = $('<div>') .append($('table#LibraryList').clone().find('td:not(:nth-child(2), :nth-child(3), :nth-child(8), :nth-child(9))').remove().end().find('thead').remove().end()) .append($('<div>').append($('table#LibraryList').next('div:has(a.buttonized)').find('a.buttonized').clone())); // Kreuzen //tempDiv.hide(); //$('body').append(tempDiv); tempDiv.find('a').each(function(i, anchor){ anchor.href = $(anchor).prop('href'); // all urls to abs }) html += tempDiv.html(); tempDiv.remove(); tempDiv = null; } else { // output table format for excel var tempDiv = $('<div>') .append($('table#LibraryList').clone().find('td:not(:nth-child(2), :nth-child(3), :nth-child(8), :nth-child(9))').remove().end().find('thead').remove().end().find('tr').prepend($('<td><a href="' + window.location + '">' + listTitle + '</a></td>')).end()); //tempDiv.hide(); //$('body').append(tempDiv); tempDiv.find('a').each(function(i, anchor){ anchor.href = $(anchor).prop('href'); // all urls to abs }) html += tempDiv.html(); tempDiv.remove(); tempDiv = null; } return html; } function getListTitle() { var listTitle = $.trim($('#LibraryContent').find('#Title').text()); var examDay = $.trim($('div.Tab.active li.result-selected').text()); var checkStr = examDay ? $.trim(examDay.substring(0,6)) : ''; // 'Tag 1 ' or 'Tag 99' if (examDay && checkStr.length > 2 && listTitle.substr(-checkStr.length) === checkStr) { listTitle = examDay; } return listTitle; } 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, " ")); } $.expr[':'].notext = function detectNoText(x){ return x.innerHTML && x.innerHTML.replace(/(<!--.*(?!-->))|\s+/g, '').length === 0 } $.expr[':'].emptyorspace = function detectNoText(x){ return x.innerHTML.replace(/(<!--.*(?!-->))|\s+/g, '').length === 0 } }());