(paper: Dict[str, Any])
| 1898 | |
| 1899 | def _extract_source_links(paper: Dict[str, Any]) -> List[Tuple[str, str]]: |
| 1900 | links: List[Tuple[str, str]] = [] |
| 1901 | |
| 1902 | arxiv_id = _clean_text(paper.get("arxiv_id")) |
| 1903 | if arxiv_id: |
| 1904 | links.append(("arXiv", f"https://arxiv.org/abs/{arxiv_id}")) |
| 1905 | |
| 1906 | pdf_url = _extract_pdf_url(paper) |
| 1907 | if pdf_url: |
| 1908 | links.append(("PDF", pdf_url)) |
| 1909 | |
| 1910 | doi = _clean_text(paper.get("doi")) |
| 1911 | if doi: |
| 1912 | links.append(("DOI", f"https://doi.org/{doi}")) |
| 1913 | |
| 1914 | paper_url = _clean_text( |
| 1915 | paper.get("paper_url") |
| 1916 | or paper.get("openreview_url") |
| 1917 | or paper.get("cvf_url") |
| 1918 | or paper.get("ecva_url") |
| 1919 | or paper.get("dblp_url") |
| 1920 | or paper.get("url") |
| 1921 | or (paper.get("metadata") or {}).get("paper_url") |
| 1922 | or (paper.get("metadata") or {}).get("openreview_url") |
| 1923 | or (paper.get("metadata") or {}).get("cvf_url") |
| 1924 | or (paper.get("metadata") or {}).get("ecva_url") |
| 1925 | or (paper.get("metadata") or {}).get("dblp_url") |
| 1926 | or (paper.get("metadata") or {}).get("url") |
| 1927 | or (paper.get("metadata") or {}).get("link") |
| 1928 | ) |
| 1929 | if paper_url and all(paper_url != url for _, url in links): |
| 1930 | links.append(("原始链接", paper_url)) |
| 1931 | |
| 1932 | return links |
| 1933 | |
| 1934 | |
| 1935 | def _download_pdf(pdf_url: str, title: str, referer: Optional[str] = None) -> str: |
| 1936 | response = _http_get( |
nothing calls this directly
no test coverage detected