cr_works() using doi filter for querying multiple dois at once (thanks @LukasWallrich)bibtex package to Suggests as it has been orphaned, use it conditionally (#209)tibble::tbl_df to tibble::as_tibble (#206)cr_works() output: short-container-title, references-count, is-referenced-by-count, language, content-domain, and update-to (#208)query.title field query is no longer supported by Crossref, removed from package (#198)cr_funders(), cr_journals(), cr_licenses(), cr_members(), cr_prefixes(), cr_types(), cr_works() gain ability to show a progress bar when using deep pagination when using works=TRUE (#186) (#188)cr_works() returned a tibble in the $data slot in each case except for when a single DOI was passed to the doi parameter. now fixed (#184) thanks @martinjhnhadleycr_works(), cr_works_(), and cr_citation_count(). See the new parameter async (logical) in those functions. For cr_citation_count(), it now accepts more than 1 DOI, and the output has changed from a numeric value to a data.frame (columns: doi and count). With async=TRUE for cr_works() you get a list of data.frame's; while for cr_works_() you get a list of JSON's (#121) (#160) (#182)vcr for HTTP request/response caching (#178) (#179)works data, now returning published-print and published-online fields (#181)/works routes (when works = TRUE): isbn, reference_visibility, has_content_domain, and has_domain_restriction (#176) (#177)/works routes (when works = TRUE): $reference gives the references cited in the article (these are not the articles citing the target article, sorry) (#176)cr_abstract() of handling many DOIs while allowing for failures without stopping progress (#174) thanks @zackbatistcr_works() (#180) thanks @nicholasmfraser for the bug reportcr_citation_count(): when given a bad/invalid/malformed DOI, throw warning and give back an NA (#164) thanks for the report @chremancr_cn() (#168)cr_cn() when bibentry not valid, that is not parseable. before the package we use to parse bibtex would stop on invalid bibentry data, but now we get around the invalid bits and give back the bibentry (#147)dois parameter (#162) thanks @ms609cr_* functions. We now give errors like 404 (client error): /works/blblbl - Resource not found., which includes HTTP status code, major class of error (success, redirect, client, server), the route requested, and the error message (#163)cr_works() in which field queries should have been possible for title and affiliation, but were not. Fixed now. (#149)cr_journals() was not correctly parsing data when more than 1 ISSN given and works set to TRUE, fixed now (#156)cr_journals() was not correctly parsing data when no ISSN found and works set to TRUE, fixed now (#150)cr_journals() was not correctly handling queries with multiple ISSN's and works set to FALSE, fixed now (#151)cr_works(), and any other cr_* function that set works=TRUE. the license slot can have more than 1 result, and we were only giving the first back. fixed the parsing on this to give back all license results (#170)/works route gain a select
parameter to select certain fields to return (#146)sort parameter (#142)flq parameter) (#143)publisher-name). You can see the filters with the
functions filter_details/filter_names. Beware, some filters
error sometimes with the Crossref API - they may not work, but they may, let me know at https://github.com/ropensci/rcrossref/issues or let Crossref know at https://github.com/CrossRef/rest-api-doc/issues (#136) (#139) (#141)crminer
https://github.com/ropensci-archive/crminer . Functions that did
text mining stuff now defunct, see ?rcrossref-defunct (#122)https instead of http (#133)xml2::xml_find_one with xml2::xml_find_first (#128)
thanks @njahn82httr with crul for HTTP requests (#132)cr_journals and cr_works
about what the returned data fields backfile_dois and current_dois
really mean (#105) thanks @SteveVisscr_prefixes to not fail when no results found (#130)
thanks @globbestaelcr_works to allow queries like facet = license:* to be
passed to facet parameter (was always allowed by Crossref, but we
neglected to allow it - previously only allowed a boolean) (#129)cr_funders and cr_journals to give back facet data along
with other data (#134)cr_* functions to check for a missing content-type
headers and instead of failing, we continue anyway and try to parse
data as sometimes Crossref doesn't give back a content type header
at all (#127)query parameter which queries across all fields (#111)rappdirs for local storage and caching for cr_ft_text (#106)offset parameter (#126)config=verbose() call (#124)cr_search and cr_search_free are now defunct. They were marked
deprecated in previous version, and warned of defunct, and now
they are defunct. Similar functionality can be done with e.g., cr_works()
(#102)crosscite is now defunct. The functionality of this function can be
achieved with cr_cn() (#82)cr_fundref is now defunct. Crossref changed their name fundref
to funders, so we've changed our function, see cr_funders() (#83)sample maximum value is now 100, was previously 1000.
documentation updated. (#118)has-clinical-trial-number and has-abstract added to
the package, see ?filters for help (#120)?rcrossref for
more. Addin authored by Hao Zhu @haozhu233 (#114)cr_abstract() that tries to get an abstract via XML provided by
Crossref - NOTE: an abstract is rarely available though (#116)cr_cn() where DOIs with no minting agency found were
failing because we were previously stopping when no agency found.
Now, we just assume Crossref and move on from there. (#117)
thanks @dfalster !cr_r() when number requested > 100. Actual fix is in
cr_works(). Max for sample used to be 1000, asked this on the
Crossref API forum,
see https://github.com/CrossRef/rest-api-doc/issues/146 (#115)cr_journals() in internal parsing, was failing in cases
where ISSN array was of length zerocr_citation_count() to remove PLOS
reference as the function isn't only for PLOS works (#108)dplyr::rbind_all() to dplyr::bind_rows() (#113)httr
and curl (which httr depends on). Will potentially be useful to
Crossref to know how many requests come from this R client (#100)cr_search() and cr_search_free() use old Crossref web services, so
are now marked deprecated, and will throw a deprecation message, but can
still be used. They will both be defunct in v0.6 of this package (#99)XML replaced with xml2 (#98)httr::content() calls: all parse to text then parse content
manually. in addition, encoding explicitly set to UTF-8 on
httr::content() calls (#98)cr_journals() - fix to parse correctly on some failed requests
(#97) thanks @nkorfcr_fundref()/cr_funders() - parsing wasn't working correctly in
all casesSkipped v0.4 to v0.5 because of many changes - as described below.
cursor, which accepts a cursor alphanumeric string or the special *, which indicates that you want to initiate deep paging; cursor_max, which is not in the Crossref API, but just used here in this package to indicate where to stop - otherwise, you'd get all results, even if there was 70 million, for example. A new internal R6 class used to make cursor requests easy (#77)id_converter() to get a PMID from a DOI and vice versa (#49)cr_types(), along with its low level equivalent cr_types_() for when you just want a list or json back (#92)cr_funders_(), cr_journals_(), cr_licenses_(), cr_members_(), cr_prefixes_(), cr_types_(), cr_works_(). These functions are a bit faster, and aren't subject to parsing errors in the event of a change in the Crossref API. (#93)filter_names() and filter_details() functions to get information on what filters
are available, the expected values, and what they mean.filter_names() and filter_details() (#73)cr_funders() alias added to cr_fundref() (#74)/funders route,s in cr_funders() (#79)sample parameter ignored unless works=TRUE (#81)cr_cn() now checks that the user supplied content-type is supported for the DOI minting agency associated with the DOI (#88) (thanks @njahn82).progress parameter use internally where it wasn't applicable.sample parameter dropped from cr_licenses().cr_works() parsing changed. We now don't attempt to flatten nested arrays, but instead give them back as data.frame's nested within the main data.frame. For example, author often has many entries, so we return that as a single column, but indexing to that column gives back a data.frame with a row for each author, and N number of columns. Hopefully this doesn't break too much code downstream :)?rcrossref) to explain: what you're actually searching when you search; deprecated and defunct functions; and explanation of high vs. low level API.cr_members() to warn on error instead of stop during parsing (#68)cr_works() to output links data, for full text links (#70)cr_cn() example that didn't work (#80)affiliation data inside author object in Crossref search API returned data (#84)award slot in Crossref search API returned data (#90)crosscite() deprecated, will be removed in a future version of this package (#78)cr_fundref() now has a deprecated message, and will be removed in the next version (#74)crosscite() to work with the
Citeproc service (http://crosscite.org/citeproc/) (#60)httr v1 (#65)cr_agency() function,
back up and fixed now (#63)extract_pdf() to extract text from pdfscr_ft_links() to get links for full text content of an article (#10)cr_ft_text() to get links for full text content of an article. In addition,
cr_ft_pdf(), cr_ft_plain(), and cr_ft_xml() are convenience functions that will get
the format pdf, plain text, or xml, respectively. You can of course specify format in the
cr_ft_text() function with the type parameter (#10) (#42)data.frame in cr_works(), which caused failure if
a non-Crossref DOI included (#52)pmid2doi() and doi2pmid() functions removed temporarily as the web service is down
temporarily, but will be online again soon from Crossref (#48)cr_citation() is deprecated (stil useable, but will be removed in a
future version of the package). use cr_cn() instead. (#34)