🏠 Home 

DBLP Bib Helper

Copy BibTeX records quickly within search r###lts.


Install this script?
// ==UserScript==
// @name         DBLP Bib Helper
// @namespace    http://tampermonkey.net/
// @version      0.3
// @description  Copy BibTeX records quickly within search r###lts.
// @author       yusanshi
// @license      MIT
// @match        https://dblp.org/*
// @match        https://dblp.uni-trier.de/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=dblp.org
// @require      https://cdn.jsdelivr.net/npm/[email protected]/minified/arrive.min.js
// @require      https://cdn.jsdelivr.net/gh/ORCID/bibtexParseJs@b55dc9e4015f9dec67921f56f8f23dadb71697ad/bibtexParse.min.js
// @require      https://cdn.jsdelivr.net/npm/[email protected]/dist/lozad.min.js
// @grant        GM_addStyle
// ==/UserScript==
(function () {
'use strict';
if (new URL(document.location).searchParams.get('clean') === 'true') {
// https://stackoverflow.com/questions/4277792/hide-all-elements-except-one-div-and-its-child-element
// DBLP has loaded jquery 3.x itself, no need to @require it.
$('#completesearch-publs')
.show()
.parentsUntil('body')
.addBack()
.siblings()
.hide();
// why $('#completesearch-facets').hide() not working
GM_addStyle('#completesearch-facets {display:none!important}');
}
const entrySelector = '#completesearch-publs li.entry';
document.arrive(entrySelector, { existing: true }, function () {
this.querySelector('cite').insertAdjacentHTML(
'beforeend',
'<br><textarea rows="10" class="bib-textarea" style="font-size:11px;margin-top:6px;border-color:rgb(220,220,220);border-radius:5px;outline:none;width:100%;color:gray;" onclick="this.select()">Fetching BibTeX record...</textarea>'
);
const bibTextArea = this.querySelector('.bib-textarea');
const observer = lozad(bibTextArea, {
load: async () => {
const bibURL = this.querySelector(
'nav.publ > ul > li:nth-child(2) > div.head > a'
).href.replace('.html', '.bib');
const bibText = await fetch(bibURL).then((e) => e.text());
const bibJSON = bibtexParse.toJSON(bibText);
bibJSON[0].citationKey = bibJSON[0].citationKey.replace(
/[^a-zA-Z0-9]+/g,
'_'
);
bibTextArea.value = bibtexParse.toBibtex(bibJSON, false);
},
});
observer.observe();
});
})();