librarycat-search
by anonymous · v1 · 13 installs · published 2026-07-23 01:48:33
Extracts and displays specific content from linked pages in the library catalog search results
Install librarycat-search-89f693.user.js Edit Runs on: https://www.librarycat.org/lib/*/search/text/*
Opens in your userscript manager — Userscripts for Safari, Tampermonkey, or Violentmonkey. Check the scan verdicts below before you run code you didn't write.
Community scan verdicts
No published scans yet for v1. Run one with your own model and publish the first verdict.
Source (v1)
// ==UserScript==
// @name Library Catalog URL Content Extractor
// @namespace https://www.librarycat.org/lib/
// @version 1.0
// @description Extracts and displays specific content from linked pages in the library catalog search results
// @author Brandon Philips
// @match https://www.librarycat.org/lib/*/search/text/*
// @license MIT
// @grant none
// ==/UserScript==
(async function() {
'use strict';
// Define a mapping of colors to hex values
const colorMap = {
green: '#008000',
red: '#FF0000',
yellow: '#FFFF00',
'hot pink': '#FF69B4',
'light blue': '#ADD8E6',
purple: '#800080',
'light pink': '#FFB6C1',
gray: '#808080',
'dark blue': '#00008B',
orange: '#FFA500',
'yellow dot': '#FFFF00'
};
// Function to create and add the div structure to each minipac_sr_text div
async function addDivStructureToItems() {
const srTextDivs = document.querySelectorAll('.minipac_sr_text');
for (const srTextDiv of srTextDivs) {
const h2 = srTextDiv.querySelector('h2');
if (h2) {
const url = h2.querySelector('a')?.getAttribute('href');
if (url) {
try {
const response = await fetch(url);
if (response.ok) {
const text = await response.text();
const parser = new DOMParser();
const doc = parser.parseFromString(text, 'text/html');
const collectionsElement = doc.querySelector('.minipac_bibpage_collections');
if (collectionsElement) {
const anchorTags = collectionsElement.querySelectorAll('a');
for (const anchorTag of anchorTags) {
const content = anchorTag.textContent.trim();
if (!content.includes('Your library')) {
// Extract color information using regular expression
const colorMatch = content.match(/\(([^)]+)\)/);
if (!colorMatch) {
break; // Break if there is no color information
}
const colorName = colorMatch[1].trim();
const hexColor = colorMap[colorName.toLowerCase()] || '';
// Create and append the div structure
const divStructure = `
<div class="minipac_searchresults_section row clearfix">
<div class="minipac_biblabel col-lg-2 col-md-2 col-sm-3 col-xs-3">Collection</div>
<div class="minipac_bibdata col-lg-7 col-md-8 col-sm-9 col-xs-10">
<a href="${url}">${content}</a>
</div>
<div style="background: ${hexColor};" class="minipac_bibdata col-lg-2 col-md-2 col-sm-2 col-xs-2"> </div>
</div>
`;
// Create a new div element and append the div structure to it
const newDiv = document.createElement('div');
newDiv.innerHTML = divStructure;
// Append the new div to the minipac_sr_text div
srTextDiv.appendChild(newDiv);
break; // Stop after the first matching anchor tag
}
}
}
}
} catch (error) {
console.error(`Error fetching or parsing the page: ${url}`, error);
}
}
}
}
}
// Call the function to add the div structure when the page loads
addDivStructureToItems();
})();