Reliability and transparency release. Each retrieval is now recorded
in a run log, scheduling is verified instead of assumed, and a failure
on one platform no longer affects the others or the history of seen
records. The exported function interface is unchanged apart from two new
optional arguments: day in
auto_LitFetchR_setup(), and output_format in
manual_fetch(), auto_LitFetchR_setup() and
dedup_refs().
output_format in
manual_fetch(), auto_LitFetchR_setup() and
dedup_refs(): "csv" (the default, unchanged)
or "ris". RIS files
(citationsRIS_<date and time>.ris) are read by most
reference managers and screening tools, for example Covidence, which
does not accept CSV. Each record is a journal article with one
AU line per author (the platforms give surnames separated
by commas), and the title, journal, year, volume, issue, pages,
abstract, DOI, ISBN, platform identifier and platform name. Tasks and
scripts created by earlier versions keep writing CSV files.run_log.csv in the project directory. Every
run, manual or scheduled, adds one row per saved search and platform
with the date and time, the versions of LitFetchR and R, the run mode
(manual or scheduled:<task name>), the
search string as read from search_list.txt, the exact query
submitted to the platform, the number of results and of new records, the
status (success, no_results,
partial or error) and any error message.search_list.txt, no platform selected) is logged as a row
with the platform all and the status
error.id_log sheet of history_id.xlsx has a
new search_name column. Existing files are upgraded in
place. A run_log.csv made by an earlier development version
is upgraded in place as well.create_save_search()
and the records retrieved by manual_fetch() always use the
same query.AND NOT for Scopus and
NOT for PubMed and Web of Science. A typed
AND NOT is no longer duplicated for Scopus. Previously
retrieval sent the raw string to Scopus, and PubMed ignored the
NOT of an AND NOT and returned the records to
be excluded. Searches containing exclusions can therefore return
different, correct, results than in 1.0.0.create_save_search() no longer ends the session when a
platform rejects a search. The count for that platform is shown as
unavailable, together with the platform’s message and the query
sent.&, # or
+ are now sent correctly to all three platforms. They were
not protected in the request, so PubMed silently searched only the part
before the & (returning unrelated results) and Web of
Science and Scopus rejected the request.exit or summary offers to save a
search of the session when none has been saved.= and regular
expression characters).search_list.txt is validated before any platform is
queried: a missing or empty file, a line without =, an
empty name or query and duplicate names stop the run with a clear
message. Files with duplicate names were accepted by 1.0.0 and now stop
the run.name = query) and
a byte order mark written by some editors are ignored. A
directory that is not a single text string now gives a
readable message.auto_LitFetchR_setup() reports “Task scheduled!” only
after the scheduler accepted the task and the task was read back. A
short summary (recurrence, next run time, status) is printed. If the
scheduler returns an error, the function stops and shows the scheduler’s
message. If the task cannot be confirmed, a warning is given.day: the weekday of a weekly task (MON to
SUN) or the day of the month of a monthly task (1 to 28). The default is
the weekday or day of the month of today. Weekly tasks previously ran
every day, and no start date is passed any more, so regional date
settings no longer matter.remove_scheduled_task() first.remove_scheduled_task() reports what actually
happened.schtasks command
directly and no longer uses taskscheduleR, which is removed from the
suggested packages. On macOS and Linux the task is still created with
cronR, without its interactive confirmation question, and
the new job is now found in the crontab afterwards (the crontab is read
line by line). A monthly cron task now runs only on the chosen day of
the month (the template of cronR also added every
Monday).history_id.xlsx is
updated afterwards, only with the identifiers of records actually
retrieved. A failed platform or a failed output therefore never marks
records as seen, and the records are retrieved at the next run.dedup = TRUE and no new record the deduplication step is
skipped instead of failing.run_log.csv cannot be written
now says why and what to do.<i>, <b>,
<sub>, <bold>,
<italic> and others) are now removed from titles and
abstracts of Web of Science and Scopus records, keeping the text (for
example <i>Vibrio harveyi</i> becomes
Vibrio harveyi). About 3% of the titles from Web of Science
carried them, and the same title could then differ between platforms.
Only the literal tags are removed, so p < 0.05 is
unchanged.Major reworking of the retrieval pipeline, consolidating a series of
performance, reliability, and data-quality improvements. The exported
function interface is unchanged apart from two new optional arguments to
save_api_keys() (scp_insttoken and
ncbi_api_key), but the returned data frame has changed (see
“Output columns” below).
issue column has been renamed to
number. Code that referred to the output column by the name
issue must be updated.pages and isbn columns to the output
of all three extractors.author, year, title, journal, volume, number, abstract, doi, pages, isbn, source, platform_id.rbind accumulation with list
collection and a single combine in all three extractors.history_id.xlsx
during extraction.X-ELS-APIKey
request header instead of a URL query parameter, matching Elsevier’s
current requirements.save_api_keys(scp_insttoken = "..."); when present it is
sent as the X-ELS-Insttoken header on all Scopus requests.
Some institutional subscriptions require it.save_api_keys() can now save an optional NCBI/PubMed
API key with save_api_keys(ncbi_api_key = "..."), which
enables a higher PubMed request rate. Previously this key had to be
added to .Renviron by hand.Retry-After header.ncbi_api_key environment variable is
set.create_save_search() now uses the same retrying HTTP
helper as the extractors rather than bare requests.= are now parsed correctly
from search_list.txt.<sup>/<inf> tags) is now stripped
from Scopus and Web of Science titles and abstracts while preserving
their content (e.g. 10<sup>2</sup> becomes
102), matching Scopus’ own export format. Bare
< and > used as mathematical operators
(e.g. p < 0.05) are preserved.manual_fetch(): removed a chunk of code
that was calling ‘scp_api_key’ before it was created in the internal
function extract_scp_list(). (see github issue
https://github.com/thomasdumond/LitFetchR/issues/2#issue-4259003613)CRAN release: 2026-02-10 * Added ‘directory’ arguments to functions creating files so users can choose in which directory they are created.
Added option to choose which literature platform to access when
creating the search string using create_save_search()
function.
Information messages can now be suppressed, if needed, using the
function suppressMessages().
This was the first version
Deduplication of references using ASySD made optional.
Added an option to choose or not the automatic opening of the references after each retrieval.