{% extends "base.html" %} {% from "_help.html" import info %} {% from "_miss_surface.html" import status_icon %} {% from "_icon_btn.html" import icon_button %} {% from "_job_status.html" import job_status %} {% block title %}Wanted — Paperful{% endblock %} {% block body_attrs %}{% if request.query_params.get('run') or request.query_params.get('poll') %} data-poll-run="{{ request.query_params.get('run') or request.query_params.get('poll') }}"{% endif %}{% endblock %} {% block content %}
Find PDFs for items in the collection shown in the header. Missing means no file yet. Held means Paperful found a file but has not attached it, or the DOI does not match. Have means a matching PDF is already in the library. Preview shows what would happen; Grab downloads; Attach writes held files into Zotero.
{% if coach %}{% endif %} {% if error %}{% endif %} {{ job_status(job) }}Have {{ counts.have }} · Held {{ counts.held }} · Missing {{ counts.missing }}
Work on the current collection, or on rows you tick in the table below. With no rows ticked, Preview and Grab use the whole Missing list. {% if attach_mode == 'auto' %}Grab saves files under out/ and attaches them when the library can be written (Zotero 10 or newer). On Zotero 7–9 the files stay on disk. Change this under Settings.{% else %}Grab saves files under out/ only. Press Attach for the copies you trust. Attach needs Zotero 10 or newer; on 7–9, attach the files in Zotero. Settings can make Grab attach automatically.{% endif %}
Overrides and recovery. These can attach a PDF that is the wrong paper, or open many browser tabs. Preview first when a Preview button is offered.
Attach {{ info("Write held PDFs into Zotero, including files the usual Attach button would refuse.") }}
Use these only when you have looked at the held file and still want it on the item.
Recover {{ info("Re-run the browser agent on items a Grab already missed. Needs LLM config and the browser-agent extra.") }}
This opens a real browser and tries publisher pages one by one. It is slower than Grab and can hit captchas.
Tick rows to limit Fetch (and Advanced attach, recover, handoff, or reachout) to those items. With none ticked, Fetch uses the whole tab. The icon in Detail explains why an item is missing or held — hover it.
| Title | Detail | |
|---|---|---|
| {{ row.title }} {{ icon_button('Detail', 'detail', onclick="openDrawer('d-" ~ row.key ~ "')") }} | {% if row.miss_plain %}{{ status_icon(row.miss_surface, row.miss_plain, row.miss_detail) }} {% elif row.state %}{{ status_icon(row.state, row.verify_plain, row.verify_tip) }} {% endif %} {% if row.has_summary %}summary{% endif %} |