How to retrieve and update metadata in zotero?
Hello everyone,
I'm a calibre library manager user moving into zotero for citations. Some books cannot retrieve metadata examples are the pdf that are not OCRs based on the error message and when I create a book item with a title, I cannot update its metadata at all. In calibre, I can select/highlight books, you click retrieve metadata and it fetches the data for you.
How to automatically retrieve and update metadata in zotero? I just don't want to enter each manually.
Is there any way we can have a calibre like metadata updater?
Thanks!
I'm a calibre library manager user moving into zotero for citations. Some books cannot retrieve metadata examples are the pdf that are not OCRs based on the error message and when I create a book item with a title, I cannot update its metadata at all. In calibre, I can select/highlight books, you click retrieve metadata and it fetches the data for you.
How to automatically retrieve and update metadata in zotero? I just don't want to enter each manually.
Is there any way we can have a calibre like metadata updater?
Thanks!
In Zotero, you almost never create items manually. You generally save them from the web using the Zotero Connector, and Zotero downloads the metadata and, when possible, the PDF automatically. Alternatively, if you add an OCRed PDF directly and it has a DOI or ISBN in the first few pages, Zotero can retrieve metadata for it, and it can also extract limited metadata for PDFs without identifiers. Finally, you can enter a DOI or ISBN into Add Item by Identifier in the Zotero toolbar to retrieve metadata that way.
We're working on the ability to update existing items, but that's more for updating previously saved preprint items and not really related to adding items to Zotero initially.
I guess I'm using zotero wrong, I'm adding the pdf manually since its too easy and intuitive to just drag + drop a pdf into zotero.
Is this a design decision or is there any plan on adding this feature ( adding books manually and then updating its metadata) in the future?
My understanding is that the process in Zotero is the opposite of calibre to have better metadata. As recommended I should add the metadata first before adding the PDF ebook.
Will Zotero allow users to update the metadata like the way calibre does it?
Zotero will be gaining a metadata-updating feature, but this isn't really the intended use case. If you have an ISBN, there's already a feature for creating an item that way.
Another option is to automatically look up the DOI using the DOI Manager plugin, then copy the DOI and use the Magic Wand tool to add an item using the DOI, then merge the two items.
dstillman, were can we find the Zotero beta that has this feature built in?
Thank you,
https://github.com/fkguo/zotero-inspire
by modifying the zotero-shortdoi and zotero-citationcounts plugins.
https://www.yuque.com/chentaotao-cf9fr/gthfy4/wrc8ef)
var items = Zotero.getActiveZoteroPane().getSelectedItems();
let item = items[0]
let identifier =
{
itemType: "journalArticle",
DOI: item.getField('DOI')
};
var translate = new Zotero.Translate.Search();
translate.setIdentifier(identifier);
let translators = await translate.getTranslators();
translate.setTranslator(translators);
let newItems = await translate.translate();
let newItem = newItems[0];
function update(field){
if (newItem.getField(field)){
item.setField(field,newItem.getField(field))
}
}
item.setCreators(newItem.getCreators());
// 可根据下述网址增减需要更新的Field.
// https://www.zotero.org/support/dev/client_coding/javascript_api/search_fields
let fields=["title","publicationTitle","journalAbbreviation","volume",
"issue","date","pages","issue","ISSN","url","abstractNote"
]
for (let field of fields){
update(field);
}
newItem.deleted = true;
item.saveTx();
await newItem.saveTx();
return ("成功!");
var items = Zotero.getActiveZoteroPane().getSelectedItems();
let item = items[0]
let identifier =
{
itemType: "book",
ISBN: item.getField('ISBN')
};
var translate = new Zotero.Translate.Search();
translate.setIdentifier(identifier);
let translators = await translate.getTranslators();
translate.setTranslator(translators);
let newItems = await translate.translate();
let newItem = newItems[0];
function update(field){
if (newItem.getField(field)){
item.setField(field,newItem.getField(field))
}
}
item.setCreators(newItem.getCreators());
// Update the book fields.
let fields=["title", "publisher", "place", "edition", "date", "numPages", "url", "abstractNote"]
for (let field of fields){
update(field);
}
newItem.deleted = true;
item.saveTx();
await newItem.saveTx();
return ("Success!");