Newer
Older
web-dumps / wos-dumps / 02-download.ini
append = pack

[use]
plugin = basics
plugin = conditor
plugin = analytics

[TXTConcat]

[replace]
path = usrQuery
value = self().trim()

path = databaseId
value = WOK

path = optionView
value = FS

path = sortField
value = LD+D

[throttle]
bySecond = 1

[WOSFetch]
url = https://wos-api.clarivate.com/api/wos
retries = 5
timeout = 120000
token = env('WOS_API_KEY')

[ungroup]

[replace]

path = AccessionNumber
value = get("UID","")

path = Identifiers
value = get("dynamic_data.cluster_related.identifiers.identifier", []) \
  .thru(identifiers => ({ \
  DOI: identifiers.find(i => i.type === "doi")?.value || "", \
  ISSN: identifiers.find(i => i.type === "issn")?.value || "", \
  eISSN: identifiers.find(i => i.type === "eissn")?.value || "", \
  eISBN: identifiers.find(i => i.type === "eisbn")?.value || "", \
  ArticleNumber: identifiers.find(i => i.type === "art_no")?.value || "", \
  PMID: identifiers.find(i => i.type === "pmid")?.value || "" }))

path = DocumentType
value = get("static_data.summary.doctypes") \
  .thru(obj => [].concat(obj || []).map(i => i?.doctype || null))

path = Titles
value = get("static_data.summary.titles.title") \
  .thru(titles => ({ DocumentTitle: titles.find(i => i.type === "item")?.content || "", \
  Source: titles.find(i => i.type === "source")?.content || "" }))

path = Publisher
value = get("static_data.summary.publishers.publisher.names.name") \
  .thru(pub => ({ Publisher: pub?.full_name || "", \
  PublisherUnifiedName: (pub?.unified_name || "").toUpperCase() }))

path = PubInfo
value = get("static_data.summary.pub_info") \
  .thru(pub => ({ Volume: pub?.vol || "", Issue: pub?.issue || "", \
  BeginningPage: pub?.page?.begin || "", EndingPage: pub?.page?.end || "", \
  YearPublished: pub?.pubyear || "", EarlyAccessYear: pub?.early_access_year || "" }))

path = Conference
value = get("static_data.summary.conferences.conference") \
  .thru(conf => ({ ConferenceDate: conf?.conf_dates?.conf_date?.content || "", \
  ConferenceTitle: conf?.conf_titles?.conf_title || "", \
  ConferenceCity: conf?.conf_locations?.conf_location?.conf_city || "", \
  ConferenceState: conf?.conf_locations?.conf_location?.conf_state || "" }))

path = Authors
value = get("static_data.summary.names.name") \
  .thru(authors => [].concat(authors || []).filter(i => i.role === "author") \
  .map(i => ({ wos_standard: i.wos_standard, \
  full_name_deburred: _.deburr(i.preferred_name?.full_name || ""), \
  full_name: i.preferred_name?.full_name || "" })))

path = AuthorsWithAddress
value = get("static_data.fullrecord_metadata.addresses.address_name", []) \
  .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"; \
            if (!authorsData[key]) { \
                authorsData[key] = { \
                    wos_standard: author.wos_standard || "Unknown", \
                    full_name: author.preferred_name?.full_name || author.full_name || "Unknown", \
                    countries: new Set(), \
                    cities: new Set(), \
                    full_addresses: new Set() \
                }; \
            } \
            authorsData[key].countries.add(addr.address_spec?.country || ""); \
            authorsData[key].cities.add(addr.address_spec?.city || ""); \
            authorsData[key].full_addresses.add(addr.address_spec?.full_address || ""); \
        }); \
    }); \
    return Object.values(authorsData).map(a => ({ \
        wos_standard: a.wos_standard, \
        full_name: a.full_name, \
        country: [...a.countries], \
        city: [...a.cities], \
        full_address: [...a.full_addresses] \
    })); \
  })

path = ReprintAddresses
value = get("static_data.fullrecord_metadata.reprint_addresses.address_name", []) \
  .thru(reprints => [].concat(reprints || []).map(addr => { \
      let authors = [].concat(addr.names?.name || []).filter(a => a.role === "author"); \
      let wos_standard = authors.length > 0 ? authors.map(a => a.wos_standard || "Unknown") : ["Unknown"]; \
      let full_name = authors.length > 0 ? authors.map(a => a.full_name || "Unknown") : ["Unknown"]; \
      return { \
          wos_standard: wos_standard, \
          full_name: full_name, \
          country: addr.address_spec?.country || "", \
          city: addr.address_spec?.city || "", \
          full_address: addr.address_spec?.full_address || "" \
      }; \
  }))

path = KeywordsPlus
value = get("static_data.item.keywords_plus.keyword", []) \
  .thru(kw => [].concat(kw || []))

path = AuthorKeywords
value = get("static_data.fullrecord_metadata.keywords.keyword", []) \
  .thru(kw => [].concat(kw || []))

path = CitationCountWOS
value = get("dynamic_data.citation_related.tc_list.silo_tc", []) \
  .thru(silos => [].concat(silos || []).find(i => i.coll_id === "WOS")?.local_count || 0)

path = CitationTopics
value = get("dynamic_data.citation_related.citation_topics.subj-group.subject", []) \
  .thru(subjects => { \
    let subjectArray = [].concat(subjects || []); \
    return { \
      Macro: subjectArray.find(i => i["content-type"] === "macro") ? \
        `${subjectArray.find(i => i["content-type"] === "macro")["content-id"]} - ${subjectArray.find(i => i["content-type"] === "macro").content}` : "", \
      Meso: subjectArray.find(i => i["content-type"] === "meso") ? \
        `${subjectArray.find(i => i["content-type"] === "meso")["content-id"]} - ${subjectArray.find(i => i["content-type"] === "meso").content}` : "", \
      Micro: subjectArray.find(i => i["content-type"] === "micro") ? \
        `${subjectArray.find(i => i["content-type"] === "micro")["content-id"]} - ${subjectArray.find(i => i["content-type"] === "micro").content}` : "" \
    }; \
  })

path = Categories
value = get("static_data.fullrecord_metadata.category_info.subjects.subject", []) \
  .thru(subjects => ({ ResearchAreas: subjects.find(i => i.ascatype === "extended")?.content || "", \
  WebofScienceCategories: subjects.find(i => i.ascatype === "traditional")?.content || "" }))

path = NormalizedLanguage
value = get("static_data.fullrecord_metadata.normalized_languages.language", []) \
  .thru(langs => [].concat(langs || []).map(i => i.content || ""))

path = NormalizedDocumentType
value = get("static_data.fullrecord_metadata.normalized_doctypes.doctype", []) \
  .thru(docs => [].concat(docs || []).map(i => i || ""))

path = Abstract
value = get("static_data.fullrecord_metadata.abstracts.abstract.abstract_text.p","")

path = SDG
value = get("dynamic_data.citation_related.SDG.sdg_category", []) \
  .castArray().map("content")