Here's a Javascript bookmarklet that will extract component data from Digikey, for when you're building a bill of materials.
Saves just a little bit of copy/paste.
javascript:(function() {
var url = window.location.href.toLowerCase();
var dist = url.includes("digikey") ? "DigiKey" : url.includes("mouser") ? "Mouser" : "";
var fieldMapping = {
"DigiKey Part Number": "DistPN",
"Manufacturer": "Mfg",
"Manufacturer Product Number": "MfgPN"
};
var finalFields = ["Dist", "DistPN", "Mfg", "MfgPN", "Datasheet", "Description", "Detailed Description"];
var data = {};
if (dist) {
data['Dist'] = dist;
}
let rows = document.querySelectorAll('tbody.MuiTableBody-root tr');
rows.forEach(row => {
let cells = row.querySelectorAll('td');
if (cells.length > 1) {
let key = cells[0].innerText.trim();
let value = cells[1].querySelector('a') ? cells[1].querySelector('a').href : cells[1].innerText.trim();
let values = value.split('\n').map(v => v.trim()).filter(v => v);
if (key === "DigiKey Part Number" && values.some(v => v.endsWith("Cut Tape (CT)"))) {
value = values.find(v => v.endsWith("Cut Tape (CT)"));
data[fieldMapping[key] || key] = value;
} else if (values.length > 1) {
data[fieldMapping[key] || key] = values[0];
} else {
data[fieldMapping[key] || key] = value;
}
}
});
var filteredData = {};
finalFields.forEach(field => {
if (data[field]) {
filteredData[field] = data[field];
}
});
navigator.clipboard.writeText(JSON.stringify(filteredData, null, 2));
alert('Data copied to clipboard as JSON!');
})();
Here it is as a oneliner so you can copy it into a Bookmark bar.
javascript:(function(){var url=window.location.href.toLowerCase();var dist=url.includes("digikey")?"DigiKey":url.includes("mouser")?"Mouser":"";var fieldMapping={"DigiKey Part Number":"DistPN","Manufacturer":"Mfg","Manufacturer Product Number":"MfgPN"};var finalFields=["Dist","DistPN","Mfg","MfgPN","Datasheet","Description","Detailed Description"];var data={};if(dist){data['Dist']=dist;}let rows=document.querySelectorAll('tbody.MuiTableBody-root tr');rows.forEach(row=>{let cells=row.querySelectorAll('td');if(cells.length>1){let key=cells[0].innerText.trim();let value=cells[1].querySelector('a')?cells[1].querySelector('a').href:cells[1].innerText.trim();let values=value.split('\n').map(v=>v.trim()).filter(v=>v);if(key==="DigiKey Part Number"&&values.some(v=>v.endsWith("Cut Tape (CT)"))){value=values.find(v=>v.endsWith("Cut Tape (CT)"));data[fieldMapping[key]||key]=value;}else if(values.length>1){data[fieldMapping[key]||key]=values[0];}else{data[fieldMapping[key]||key]=value;}}});var filteredData={};finalFields.forEach(field=>{if(data[field]){filteredData[field]=data[field];}});navigator.clipboard.writeText(JSON.stringify(filteredData,null,2));alert('Data copied to clipboard as JSON!');})();