diff --git a/wos-dumps/01-query/wos-test.txt b/wos-dumps/01-query/wos-test.txt deleted file mode 100644 index 1bbb73a..0000000 --- a/wos-dumps/01-query/wos-test.txt +++ /dev/null @@ -1 +0,0 @@ -CU=France AND PY=2018 AND DO=(10.1063/1.5066074) diff --git a/wos-dumps/01-query/wostest.txt b/wos-dumps/01-query/wostest.txt new file mode 100644 index 0000000..d03a68e --- /dev/null +++ b/wos-dumps/01-query/wostest.txt @@ -0,0 +1 @@ +DO=(10.1029/2020gl087215) diff --git a/wos-dumps/02-download.ini b/wos-dumps/02-download.ini index 8a54374..d772f9e 100644 --- a/wos-dumps/02-download.ini +++ b/wos-dumps/02-download.ini @@ -86,13 +86,14 @@ .thru(addresses => { \ let authorsData = {}; \ [].concat(addresses || []).forEach(addr => { \ - [].concat(addr.names?.name || []).filter(a => a.role === "author").forEach(author => { \ - let key = author.wos_standard || author.full_name || "Unknown"; \ + let names = [].concat(addr.names?.name || []); \ + if (names.length === 0) { \ + let key = "Unknown"; \ if (!authorsData[key]) { \ authorsData[key] = { \ - wos_standard: author.wos_standard || "Unknown", \ - full_name: author.preferred_name?.full_name || author.full_name || "Unknown", \ - full_name_deburred: _.deburr(author.preferred_name?.full_name || author.full_name || "Unknown"), \ + wos_standard: "Unknown", \ + full_name: "Unknown", \ + full_name_deburred: "UNKNOWN", \ addresses: [] \ }; \ } \ @@ -103,34 +104,57 @@ .filter(org => org.pref === "Y") \ .map(org => org.content); \ authorsData[key].addresses.push({ full_address, country, city, organizations }); \ - }); \ + } else { \ + names.filter(a => a.role === "author").forEach(author => { \ + let key = author.wos_standard || author.full_name || "Unknown"; \ + if (!authorsData[key]) { \ + authorsData[key] = { \ + wos_standard: author.wos_standard || "Unknown", \ + full_name: author.preferred_name?.full_name || author.full_name || "Unknown", \ + full_name_deburred: _.deburr(author.preferred_name?.full_name || author.full_name || "Unknown"), \ + addresses: [] \ + }; \ + } \ + let full_address = addr.address_spec?.full_address || "Unknown address"; \ + let country = addr.address_spec?.country || "Unknown country"; \ + let city = addr.address_spec?.city || "Unknown city"; \ + let organizations = _.castArray(addr.address_spec?.organizations?.organization || []) \ + .filter(org => org.pref === "Y") \ + .map(org => org.content); \ + authorsData[key].addresses.push({ full_address, country, city, organizations }); \ + }); \ + } \ }); \ return Object.values(authorsData); \ }) - path = ReprintAddresses value = get("static_data.fullrecord_metadata.reprint_addresses.address_name", []) \ .thru(reprints => { \ let authorsData = {}; \ [].concat(reprints || []).forEach(addr => { \ - let author = addr.names?.name || {}; \ - let key = author.wos_standard || author.full_name || "Unknown"; \ - if (!authorsData[key]) { \ - authorsData[key] = { \ - wos_standard: author.wos_standard || "Unknown", \ - full_name: author.full_name || "Unknown", \ - full_name_deburred: _.deburr(author.full_name || "Unknown"), \ - addresses: [] \ - }; \ + let authors = [].concat(addr.names?.name || []); \ + if (authors.length === 0) { \ + authors = [{ full_name: "Unknown", wos_standard: "Unknown" }]; \ } \ - authorsData[key].addresses.push({ \ - full_address: addr.address_spec?.full_address || "Unknown address", \ - country: addr.address_spec?.country || "Unknown country", \ - city: addr.address_spec?.city || "Unknown city", \ - organizations: _.castArray(addr.address_spec?.organizations?.organization || []) \ - .filter(org => org.pref === "Y") \ - .map(org => org.content) \ + authors.forEach(author => { \ + let key = author.wos_standard || author.full_name || "Unknown"; \ + if (!authorsData[key]) { \ + authorsData[key] = { \ + wos_standard: author.wos_standard || "Unknown", \ + full_name: author.full_name || "Unknown", \ + full_name_deburred: _.deburr(author.full_name || "Unknown"), \ + addresses: [] \ + }; \ + } \ + authorsData[key].addresses.push({ \ + full_address: addr.address_spec?.full_address || "Unknown address", \ + country: addr.address_spec?.country || "Unknown country", \ + city: addr.address_spec?.city || "Unknown city", \ + organizations: _.castArray(addr.address_spec?.organizations?.organization || []) \ + .filter(org => org.pref === "Y") \ + .map(org => org.content) \ + }); \ }); \ }); \ return Object.values(authorsData); \