paper-search-cli 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +18 -3
- package/README-sc.md +107 -24
- package/README.md +106 -23
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/config/ConfigService.d.ts +1 -1
- package/dist/config/ConfigService.d.ts.map +1 -1
- package/dist/config/ConfigService.js +4 -1
- package/dist/config/ConfigService.js.map +1 -1
- package/dist/config/constants.d.ts +6 -0
- package/dist/config/constants.d.ts.map +1 -1
- package/dist/config/constants.js +4 -1
- package/dist/config/constants.js.map +1 -1
- package/dist/core/diagnostics.d.ts.map +1 -1
- package/dist/core/diagnostics.js +34 -12
- package/dist/core/diagnostics.js.map +1 -1
- package/dist/core/handleToolCall.d.ts.map +1 -1
- package/dist/core/handleToolCall.js +50 -7
- package/dist/core/handleToolCall.js.map +1 -1
- package/dist/core/platformMetadata.d.ts +28 -0
- package/dist/core/platformMetadata.d.ts.map +1 -0
- package/dist/core/platformMetadata.js +258 -0
- package/dist/core/platformMetadata.js.map +1 -0
- package/dist/core/schemas.d.ts +108 -74
- package/dist/core/schemas.d.ts.map +1 -1
- package/dist/core/schemas.js +29 -38
- package/dist/core/schemas.js.map +1 -1
- package/dist/core/searchers.d.ts +11 -0
- package/dist/core/searchers.d.ts.map +1 -1
- package/dist/core/searchers.js +17 -1
- package/dist/core/searchers.js.map +1 -1
- package/dist/core/tools.d.ts.map +1 -1
- package/dist/core/tools.js +57 -30
- package/dist/core/tools.js.map +1 -1
- package/dist/platforms/ACMSearcher.d.ts +16 -0
- package/dist/platforms/ACMSearcher.d.ts.map +1 -0
- package/dist/platforms/ACMSearcher.js +125 -0
- package/dist/platforms/ACMSearcher.js.map +1 -0
- package/dist/platforms/ArxivSearcher.d.ts.map +1 -1
- package/dist/platforms/ArxivSearcher.js +10 -2
- package/dist/platforms/ArxivSearcher.js.map +1 -1
- package/dist/platforms/DBLPSearcher.d.ts +16 -0
- package/dist/platforms/DBLPSearcher.d.ts.map +1 -0
- package/dist/platforms/DBLPSearcher.js +116 -0
- package/dist/platforms/DBLPSearcher.js.map +1 -0
- package/dist/platforms/IEEESearcher.d.ts +15 -0
- package/dist/platforms/IEEESearcher.d.ts.map +1 -0
- package/dist/platforms/IEEESearcher.js +123 -0
- package/dist/platforms/IEEESearcher.js.map +1 -0
- package/dist/platforms/OpenAIRESearcher.d.ts.map +1 -1
- package/dist/platforms/OpenAIRESearcher.js +9 -1
- package/dist/platforms/OpenAIRESearcher.js.map +1 -1
- package/dist/platforms/OpenReviewSearcher.d.ts +19 -0
- package/dist/platforms/OpenReviewSearcher.d.ts.map +1 -0
- package/dist/platforms/OpenReviewSearcher.js +141 -0
- package/dist/platforms/OpenReviewSearcher.js.map +1 -0
- package/dist/platforms/PaperSource.d.ts +6 -0
- package/dist/platforms/PaperSource.d.ts.map +1 -1
- package/dist/platforms/PaperSource.js.map +1 -1
- package/dist/platforms/PubMedSearcher.d.ts.map +1 -1
- package/dist/platforms/PubMedSearcher.js +8 -0
- package/dist/platforms/PubMedSearcher.js.map +1 -1
- package/dist/platforms/USENIXSearcher.d.ts +14 -0
- package/dist/platforms/USENIXSearcher.d.ts.map +1 -0
- package/dist/platforms/USENIXSearcher.js +75 -0
- package/dist/platforms/USENIXSearcher.js.map +1 -0
- package/dist/services/MultiSourceSearchService.d.ts.map +1 -1
- package/dist/services/MultiSourceSearchService.js +8 -34
- package/dist/services/MultiSourceSearchService.js.map +1 -1
- package/dist/services/OpenAccessFallbackService.d.ts +1 -0
- package/dist/services/OpenAccessFallbackService.d.ts.map +1 -1
- package/dist/services/OpenAccessFallbackService.js +2 -2
- package/dist/services/OpenAccessFallbackService.js.map +1 -1
- package/dist/utils/HttpClient.d.ts +6 -0
- package/dist/utils/HttpClient.d.ts.map +1 -0
- package/dist/utils/HttpClient.js +30 -0
- package/dist/utils/HttpClient.js.map +1 -0
- package/dist/utils/PdfDownload.d.ts.map +1 -1
- package/dist/utils/PdfDownload.js +106 -16
- package/dist/utils/PdfDownload.js.map +1 -1
- package/package.json +3 -1
- package/skills/paper-search/SKILL.md +16 -5
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
import { PaperFactory } from '../models/Paper.js';
|
|
3
|
+
import { PaperSource } from './PaperSource.js';
|
|
4
|
+
import { TIMEOUTS, USER_AGENT } from '../config/constants.js';
|
|
5
|
+
import { ErrorHandler } from '../utils/ErrorHandler.js';
|
|
6
|
+
export class DBLPSearcher extends PaperSource {
|
|
7
|
+
client;
|
|
8
|
+
constructor() {
|
|
9
|
+
super('dblp', 'https://dblp.org/search/publ/api');
|
|
10
|
+
this.client = axios.create({
|
|
11
|
+
baseURL: this.baseUrl,
|
|
12
|
+
timeout: TIMEOUTS.DEFAULT,
|
|
13
|
+
headers: {
|
|
14
|
+
Accept: 'application/json',
|
|
15
|
+
'User-Agent': USER_AGENT
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
getCapabilities() {
|
|
20
|
+
return {
|
|
21
|
+
search: true,
|
|
22
|
+
download: false,
|
|
23
|
+
fullText: false,
|
|
24
|
+
citations: false,
|
|
25
|
+
requiresApiKey: false,
|
|
26
|
+
supportedOptions: ['maxResults', 'year', 'author', 'journal', 'sortBy', 'sortOrder']
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
async search(query, options = {}) {
|
|
30
|
+
try {
|
|
31
|
+
const params = {
|
|
32
|
+
q: this.buildQuery(query, options),
|
|
33
|
+
format: 'json',
|
|
34
|
+
h: Math.min(options.maxResults || 10, 1000),
|
|
35
|
+
c: 0
|
|
36
|
+
};
|
|
37
|
+
const response = await ErrorHandler.retryWithBackoff(() => this.client.get('', { params }), { context: 'DBLP search' });
|
|
38
|
+
const hits = this.asArray(response.data?.result?.hits?.hit);
|
|
39
|
+
return hits.map(hit => this.parseHit(hit)).filter((paper) => Boolean(paper));
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
this.handleHttpError(error, 'search');
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
async downloadPdf(_paperId, _options = {}) {
|
|
46
|
+
throw new Error('DBLP does not host PDFs directly. Use DOI or publisher URLs for download fallbacks.');
|
|
47
|
+
}
|
|
48
|
+
async readPaper(_paperId, _options = {}) {
|
|
49
|
+
throw new Error('DBLP provides bibliographic metadata only; it does not provide full text.');
|
|
50
|
+
}
|
|
51
|
+
buildQuery(query, options) {
|
|
52
|
+
const parts = [query.trim()];
|
|
53
|
+
if (options.author)
|
|
54
|
+
parts.push(`author:${options.author.trim()}`);
|
|
55
|
+
if (options.journal)
|
|
56
|
+
parts.push(options.journal.trim());
|
|
57
|
+
if (options.venue)
|
|
58
|
+
parts.push(options.venue.trim());
|
|
59
|
+
if (options.year && /^\d{4}$/.test(options.year.trim()))
|
|
60
|
+
parts.push(options.year.trim());
|
|
61
|
+
return parts.filter(Boolean).join(' ');
|
|
62
|
+
}
|
|
63
|
+
parseHit(hit) {
|
|
64
|
+
const info = hit.info;
|
|
65
|
+
if (!info?.title)
|
|
66
|
+
return null;
|
|
67
|
+
const year = info.year ? Number(info.year) || undefined : undefined;
|
|
68
|
+
const doi = info.doi || '';
|
|
69
|
+
const ee = this.firstValue(info.ee);
|
|
70
|
+
const url = info.url || (doi ? `https://doi.org/${doi}` : ee || '');
|
|
71
|
+
return PaperFactory.create({
|
|
72
|
+
paperId: info.key || doi || hit['@id'] || info.title,
|
|
73
|
+
title: this.cleanText(info.title),
|
|
74
|
+
authors: this.parseAuthors(info.authors?.author),
|
|
75
|
+
abstract: '',
|
|
76
|
+
doi,
|
|
77
|
+
publishedDate: year ? new Date(year, 0, 1) : null,
|
|
78
|
+
pdfUrl: '',
|
|
79
|
+
url,
|
|
80
|
+
source: 'dblp',
|
|
81
|
+
journal: info.venue || undefined,
|
|
82
|
+
volume: info.volume || undefined,
|
|
83
|
+
issue: info.number || undefined,
|
|
84
|
+
pages: info.pages || undefined,
|
|
85
|
+
year,
|
|
86
|
+
extra: {
|
|
87
|
+
dblpKey: info.key || '',
|
|
88
|
+
dblpType: info.type || '',
|
|
89
|
+
access: info.access || '',
|
|
90
|
+
electronicEdition: ee,
|
|
91
|
+
score: hit['@score'] || ''
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
parseAuthors(author) {
|
|
96
|
+
return this.asArray(author)
|
|
97
|
+
.map(item => {
|
|
98
|
+
if (typeof item === 'string')
|
|
99
|
+
return item;
|
|
100
|
+
return item.text || '';
|
|
101
|
+
})
|
|
102
|
+
.map(authorName => authorName.trim())
|
|
103
|
+
.filter(Boolean);
|
|
104
|
+
}
|
|
105
|
+
firstValue(value) {
|
|
106
|
+
if (Array.isArray(value))
|
|
107
|
+
return value[0] || '';
|
|
108
|
+
return value || '';
|
|
109
|
+
}
|
|
110
|
+
asArray(value) {
|
|
111
|
+
if (!value)
|
|
112
|
+
return [];
|
|
113
|
+
return Array.isArray(value) ? value : [value];
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=DBLPSearcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DBLPSearcher.js","sourceRoot":"","sources":["../../src/platforms/DBLPSearcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Paper } from '../models/Paper.js';
|
|
2
|
+
import { DownloadOptions, PaperSource, PlatformCapabilities, SearchOptions } from './PaperSource.js';
|
|
3
|
+
export declare class IEEESearcher extends PaperSource {
|
|
4
|
+
private readonly client;
|
|
5
|
+
constructor(apiKey?: string);
|
|
6
|
+
getCapabilities(): PlatformCapabilities;
|
|
7
|
+
search(query: string, options?: SearchOptions): Promise<Paper[]>;
|
|
8
|
+
downloadPdf(_paperId: string, _options?: DownloadOptions): Promise<string>;
|
|
9
|
+
readPaper(_paperId: string, _options?: DownloadOptions): Promise<string>;
|
|
10
|
+
private mapSortField;
|
|
11
|
+
private parseArticle;
|
|
12
|
+
private extractYear;
|
|
13
|
+
private extractKeywords;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=IEEESearcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IEEESearcher.d.ts","sourceRoot":"","sources":["../../src/platforms/IEEESearcher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAgB,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAsCrG,qBAAa,YAAa,SAAQ,WAAW;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;gBAE3B,MAAM,CAAC,EAAE,MAAM;IAY3B,eAAe,IAAI,oBAAoB;IAWjC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAqCpE,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IAI9E,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlF,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,YAAY;IAwCpB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,eAAe;CAKxB"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
import { PaperFactory } from '../models/Paper.js';
|
|
3
|
+
import { PaperSource } from './PaperSource.js';
|
|
4
|
+
import { TIMEOUTS, USER_AGENT } from '../config/constants.js';
|
|
5
|
+
import { ErrorHandler } from '../utils/ErrorHandler.js';
|
|
6
|
+
export class IEEESearcher extends PaperSource {
|
|
7
|
+
client;
|
|
8
|
+
constructor(apiKey) {
|
|
9
|
+
super('ieee', 'https://ieeexploreapi.ieee.org/api/v1/search/articles', apiKey);
|
|
10
|
+
this.client = axios.create({
|
|
11
|
+
baseURL: this.baseUrl,
|
|
12
|
+
timeout: TIMEOUTS.DEFAULT,
|
|
13
|
+
headers: {
|
|
14
|
+
Accept: 'application/json',
|
|
15
|
+
'User-Agent': USER_AGENT
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
getCapabilities() {
|
|
20
|
+
return {
|
|
21
|
+
search: true,
|
|
22
|
+
download: false,
|
|
23
|
+
fullText: false,
|
|
24
|
+
citations: true,
|
|
25
|
+
requiresApiKey: true,
|
|
26
|
+
supportedOptions: ['maxResults', 'year', 'author', 'journal', 'sortBy', 'sortOrder', 'articleTitle', 'startRecord']
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
async search(query, options = {}) {
|
|
30
|
+
if (!this.apiKey) {
|
|
31
|
+
throw new Error('IEEE API key is required. Please set IEEE_API_KEY environment variable.');
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
const params = {
|
|
35
|
+
apikey: this.apiKey,
|
|
36
|
+
format: 'json',
|
|
37
|
+
querytext: query,
|
|
38
|
+
max_records: Math.min(options.maxResults || 10, 200),
|
|
39
|
+
start_record: options.startRecord || 1
|
|
40
|
+
};
|
|
41
|
+
if (options.articleTitle)
|
|
42
|
+
params.article_title = options.articleTitle;
|
|
43
|
+
if (options.author)
|
|
44
|
+
params.author = options.author;
|
|
45
|
+
if (options.journal)
|
|
46
|
+
params.publication_title = options.journal;
|
|
47
|
+
if (options.year && /^\d{4}$/.test(options.year.trim()))
|
|
48
|
+
params.publication_year = options.year.trim();
|
|
49
|
+
if (options.sortBy) {
|
|
50
|
+
params.sort_field = this.mapSortField(options.sortBy);
|
|
51
|
+
params.sort_order = options.sortOrder === 'asc' ? 'asc' : 'desc';
|
|
52
|
+
}
|
|
53
|
+
const response = await ErrorHandler.retryWithBackoff(() => this.client.get('', { params }), { context: 'IEEE Xplore search' });
|
|
54
|
+
return (response.data.articles || [])
|
|
55
|
+
.map(article => this.parseArticle(article))
|
|
56
|
+
.filter((paper) => Boolean(paper));
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
this.handleHttpError(error, 'search');
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
async downloadPdf(_paperId, _options = {}) {
|
|
63
|
+
throw new Error('IEEE Xplore API search returns metadata and PDF URLs only; direct PDF download is not supported by this CLI.');
|
|
64
|
+
}
|
|
65
|
+
async readPaper(_paperId, _options = {}) {
|
|
66
|
+
throw new Error('IEEE Xplore full text requires separate API entitlement and is not supported by this searcher.');
|
|
67
|
+
}
|
|
68
|
+
mapSortField(sortBy) {
|
|
69
|
+
if (sortBy === 'date')
|
|
70
|
+
return 'publication_year';
|
|
71
|
+
if (sortBy === 'citations')
|
|
72
|
+
return 'citing_paper_count';
|
|
73
|
+
return 'article_number';
|
|
74
|
+
}
|
|
75
|
+
parseArticle(article) {
|
|
76
|
+
if (!article.title)
|
|
77
|
+
return null;
|
|
78
|
+
const year = Number(article.publication_year) || this.extractYear(article.publication_date);
|
|
79
|
+
const startPage = article.start_page || '';
|
|
80
|
+
const endPage = article.end_page || '';
|
|
81
|
+
const pages = startPage && endPage ? `${startPage}-${endPage}` : startPage || endPage || undefined;
|
|
82
|
+
const articleNumber = article.article_number ? String(article.article_number) : '';
|
|
83
|
+
const doi = article.doi || '';
|
|
84
|
+
return PaperFactory.create({
|
|
85
|
+
paperId: articleNumber || doi || article.title,
|
|
86
|
+
title: this.cleanText(article.title),
|
|
87
|
+
authors: (article.authors?.authors || [])
|
|
88
|
+
.sort((a, b) => (a.author_order || 0) - (b.author_order || 0))
|
|
89
|
+
.map(author => author.full_name || '')
|
|
90
|
+
.filter(Boolean),
|
|
91
|
+
abstract: this.cleanText(article.abstract || ''),
|
|
92
|
+
doi,
|
|
93
|
+
publishedDate: year ? new Date(year, 0, 1) : null,
|
|
94
|
+
pdfUrl: article.pdf_url || '',
|
|
95
|
+
url: article.html_url || (doi ? `https://doi.org/${doi}` : ''),
|
|
96
|
+
source: 'ieee',
|
|
97
|
+
journal: article.publication_title || undefined,
|
|
98
|
+
volume: article.volume || undefined,
|
|
99
|
+
issue: article.issue || undefined,
|
|
100
|
+
pages,
|
|
101
|
+
year,
|
|
102
|
+
citationCount: Number(article.citing_paper_count) || 0,
|
|
103
|
+
keywords: this.extractKeywords(article),
|
|
104
|
+
extra: {
|
|
105
|
+
articleNumber,
|
|
106
|
+
contentType: article.content_type || '',
|
|
107
|
+
publisher: article.publisher || '',
|
|
108
|
+
isbn: article.isbn || '',
|
|
109
|
+
issn: article.issn || ''
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
extractYear(value) {
|
|
114
|
+
const match = value?.match(/\b(19|20)\d{2}\b/);
|
|
115
|
+
return match ? Number(match[0]) : undefined;
|
|
116
|
+
}
|
|
117
|
+
extractKeywords(article) {
|
|
118
|
+
const ieeeTerms = article.index_terms?.ieee_terms?.terms || [];
|
|
119
|
+
const authorTerms = article.index_terms?.author_terms?.terms || [];
|
|
120
|
+
return [...ieeeTerms, ...authorTerms].filter((term, index, terms) => term && terms.indexOf(term) === index);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=IEEESearcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IEEESearcher.js","sourceRoot":"","sources":["../../src/platforms/IEEESearcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenAIRESearcher.d.ts","sourceRoot":"","sources":["../../src/platforms/OpenAIRESearcher.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAgB,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAGrG,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;gBAE3B,MAAM,CAAC,EAAE,MAAM;IAgB3B,eAAe,IAAI,oBAAoB;IAWjC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"OpenAIRESearcher.d.ts","sourceRoot":"","sources":["../../src/platforms/OpenAIRESearcher.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAgB,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAGrG,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;gBAE3B,MAAM,CAAC,EAAE,MAAM;IAgB3B,eAAe,IAAI,oBAAoB;IAWjC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAoCpE,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IAI9E,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;YAIpE,SAAS;IA+BvB,OAAO,CAAC,WAAW;IAiCnB,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,YAAY;IAsBpB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,IAAI;CAKb"}
|
|
@@ -33,7 +33,15 @@ export class OpenAIRESearcher extends PaperSource {
|
|
|
33
33
|
async search(query, options = {}) {
|
|
34
34
|
try {
|
|
35
35
|
const xml = await this.searchXml(query, Math.min(options.maxResults || 10, 100));
|
|
36
|
-
const
|
|
36
|
+
const trimmed = (xml || '').trim();
|
|
37
|
+
if (!trimmed) {
|
|
38
|
+
throw new Error('Empty XML response received from OpenAIRE');
|
|
39
|
+
}
|
|
40
|
+
if (!trimmed.startsWith('<')) {
|
|
41
|
+
const preview = trimmed.slice(0, 120).replace(/\s+/g, ' ');
|
|
42
|
+
throw new Error(`Invalid XML response received (expected markup, got: "${preview}...")`);
|
|
43
|
+
}
|
|
44
|
+
const parsed = await xml2js.parseStringPromise(trimmed, {
|
|
37
45
|
explicitArray: false,
|
|
38
46
|
explicitCharkey: true,
|
|
39
47
|
attrkey: '$',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenAIRESearcher.js","sourceRoot":"","sources":["../../src/platforms/OpenAIRESearcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAS,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAwD,MAAM,kBAAkB,CAAC;AACrG,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,OAAO,gBAAiB,SAAQ,WAAW;IAC9B,MAAM,CAAgB;IAEvC,YAAY,MAAe;QACzB,MAAM,aAAa,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC;QAChH,KAAK,CAAC,UAAU,EAAE,yBAAyB,EAAE,aAAa,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,OAAO,EAAE;gBACP,MAAM,EAAE,0CAA0C;gBAClD,YAAY,EAAE,UAAU;gBACxB,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvE;YACD,YAAY,EAAE,MAAM;YACpB,cAAc,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;SAChF,CAAC,CAAC;IACL,CAAC;IAED,eAAe;QACb,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,KAAK;YAChB,cAAc,EAAE,KAAK;YACrB,gBAAgB,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC;SACzC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,UAAyB,EAAE;QACrD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;YACjF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"OpenAIRESearcher.js","sourceRoot":"","sources":["../../src/platforms/OpenAIRESearcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Paper } from '../models/Paper.js';
|
|
2
|
+
import { DownloadOptions, PaperSource, PlatformCapabilities, SearchOptions } from './PaperSource.js';
|
|
3
|
+
export declare class OpenReviewSearcher extends PaperSource {
|
|
4
|
+
private readonly client;
|
|
5
|
+
constructor();
|
|
6
|
+
getCapabilities(): PlatformCapabilities;
|
|
7
|
+
search(query: string, options?: SearchOptions): Promise<Paper[]>;
|
|
8
|
+
downloadPdf(_paperId: string, _options?: DownloadOptions): Promise<string>;
|
|
9
|
+
readPaper(_paperId: string, _options?: DownloadOptions): Promise<string>;
|
|
10
|
+
private parseNote;
|
|
11
|
+
private matchesOptions;
|
|
12
|
+
private yearMatches;
|
|
13
|
+
private contentValue;
|
|
14
|
+
private asString;
|
|
15
|
+
private asStringArray;
|
|
16
|
+
private resolveOpenReviewUrl;
|
|
17
|
+
private extractDoi;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=OpenReviewSearcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenReviewSearcher.d.ts","sourceRoot":"","sources":["../../src/platforms/OpenReviewSearcher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAgB,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAuBrG,qBAAa,kBAAmB,SAAQ,WAAW;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;;IAcvC,eAAe,IAAI,oBAAoB;IAWjC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAsBpE,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IAI9E,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlF,OAAO,CAAC,SAAS;IAwCjB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,UAAU;CAInB"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
import { PaperFactory } from '../models/Paper.js';
|
|
3
|
+
import { PaperSource } from './PaperSource.js';
|
|
4
|
+
import { TIMEOUTS, USER_AGENT } from '../config/constants.js';
|
|
5
|
+
import { ErrorHandler } from '../utils/ErrorHandler.js';
|
|
6
|
+
export class OpenReviewSearcher extends PaperSource {
|
|
7
|
+
client;
|
|
8
|
+
constructor() {
|
|
9
|
+
super('openreview', 'https://api.openreview.net');
|
|
10
|
+
this.client = axios.create({
|
|
11
|
+
baseURL: this.baseUrl,
|
|
12
|
+
timeout: TIMEOUTS.DEFAULT,
|
|
13
|
+
headers: {
|
|
14
|
+
Accept: 'application/json',
|
|
15
|
+
'User-Agent': USER_AGENT
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
getCapabilities() {
|
|
20
|
+
return {
|
|
21
|
+
search: true,
|
|
22
|
+
download: false,
|
|
23
|
+
fullText: false,
|
|
24
|
+
citations: false,
|
|
25
|
+
requiresApiKey: false,
|
|
26
|
+
supportedOptions: ['maxResults', 'year', 'author', 'journal', 'venue']
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
async search(query, options = {}) {
|
|
30
|
+
try {
|
|
31
|
+
const params = {
|
|
32
|
+
term: query,
|
|
33
|
+
limit: Math.min(options.maxResults || 10, 100)
|
|
34
|
+
};
|
|
35
|
+
const response = await ErrorHandler.retryWithBackoff(() => this.client.get('/notes/search', { params }), { context: 'OpenReview note search' });
|
|
36
|
+
return (response.data.notes || [])
|
|
37
|
+
.map(note => this.parseNote(note))
|
|
38
|
+
.filter((paper) => Boolean(paper))
|
|
39
|
+
.filter(paper => this.matchesOptions(paper, options))
|
|
40
|
+
.slice(0, options.maxResults || 10);
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
this.handleHttpError(error, 'search');
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
async downloadPdf(_paperId, _options = {}) {
|
|
47
|
+
throw new Error('OpenReview search returns PDF URLs but does not download files directly.');
|
|
48
|
+
}
|
|
49
|
+
async readPaper(_paperId, _options = {}) {
|
|
50
|
+
throw new Error('OpenReview full-text parsing is not supported by this searcher.');
|
|
51
|
+
}
|
|
52
|
+
parseNote(note) {
|
|
53
|
+
const content = note.content || {};
|
|
54
|
+
const title = this.asString(this.contentValue(content, 'title'));
|
|
55
|
+
if (!title)
|
|
56
|
+
return null;
|
|
57
|
+
const authors = this.asStringArray(this.contentValue(content, 'authors'));
|
|
58
|
+
const authorIds = this.asStringArray(this.contentValue(content, 'authorids'));
|
|
59
|
+
const abstract = this.asString(this.contentValue(content, 'abstract'));
|
|
60
|
+
const venue = this.asString(this.contentValue(content, 'venue')) || this.asString(this.contentValue(content, 'venueid'));
|
|
61
|
+
const pdfValue = this.asString(this.contentValue(content, 'pdf'));
|
|
62
|
+
const htmlValue = this.asString(this.contentValue(content, 'html'));
|
|
63
|
+
const doi = this.extractDoi(htmlValue) || this.extractDoi(this.asString(this.contentValue(content, 'doi')));
|
|
64
|
+
const timestamp = note.pdate || note.cdate || note.tcdate || note.tmdate;
|
|
65
|
+
const publishedDate = timestamp ? new Date(timestamp) : null;
|
|
66
|
+
const year = publishedDate?.getFullYear();
|
|
67
|
+
const url = note.forum || note.id ? `https://openreview.net/forum?id=${note.forum || note.id}` : htmlValue;
|
|
68
|
+
return PaperFactory.create({
|
|
69
|
+
paperId: note.id || note.forum || title,
|
|
70
|
+
title: this.cleanText(title),
|
|
71
|
+
authors,
|
|
72
|
+
abstract: this.cleanText(abstract),
|
|
73
|
+
doi,
|
|
74
|
+
publishedDate,
|
|
75
|
+
pdfUrl: this.resolveOpenReviewUrl(pdfValue),
|
|
76
|
+
url,
|
|
77
|
+
source: 'openreview',
|
|
78
|
+
journal: venue || undefined,
|
|
79
|
+
year,
|
|
80
|
+
extra: {
|
|
81
|
+
forum: note.forum || '',
|
|
82
|
+
invitation: note.invitation || note.invitations?.[0] || '',
|
|
83
|
+
domain: note.domain || '',
|
|
84
|
+
signatures: note.signatures || [],
|
|
85
|
+
authorIds,
|
|
86
|
+
html: htmlValue
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
matchesOptions(paper, options) {
|
|
91
|
+
if (options.year && paper.year && !this.yearMatches(paper.year, options.year))
|
|
92
|
+
return false;
|
|
93
|
+
if (options.author && !paper.authors.some(author => author.toLowerCase().includes(options.author.toLowerCase())))
|
|
94
|
+
return false;
|
|
95
|
+
const venue = options.venue || options.journal;
|
|
96
|
+
if (venue && !(paper.journal || '').toLowerCase().includes(venue.toLowerCase()))
|
|
97
|
+
return false;
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
yearMatches(year, filter) {
|
|
101
|
+
const match = filter.match(/^(\d{4})(?:-(\d{4})?)?$/);
|
|
102
|
+
if (!match)
|
|
103
|
+
return true;
|
|
104
|
+
const start = Number(match[1]);
|
|
105
|
+
const end = match[2] ? Number(match[2]) : start;
|
|
106
|
+
return year >= start && year <= end;
|
|
107
|
+
}
|
|
108
|
+
contentValue(content, key) {
|
|
109
|
+
const value = content[key];
|
|
110
|
+
if (value && typeof value === 'object' && !Array.isArray(value) && 'value' in value) {
|
|
111
|
+
return value.value;
|
|
112
|
+
}
|
|
113
|
+
return value;
|
|
114
|
+
}
|
|
115
|
+
asString(value) {
|
|
116
|
+
if (typeof value === 'string')
|
|
117
|
+
return value;
|
|
118
|
+
if (typeof value === 'number')
|
|
119
|
+
return String(value);
|
|
120
|
+
return '';
|
|
121
|
+
}
|
|
122
|
+
asStringArray(value) {
|
|
123
|
+
if (Array.isArray(value)) {
|
|
124
|
+
return value.map(item => this.asString(item)).filter(Boolean);
|
|
125
|
+
}
|
|
126
|
+
const single = this.asString(value);
|
|
127
|
+
return single ? [single] : [];
|
|
128
|
+
}
|
|
129
|
+
resolveOpenReviewUrl(value) {
|
|
130
|
+
if (!value)
|
|
131
|
+
return '';
|
|
132
|
+
if (/^https?:\/\//i.test(value))
|
|
133
|
+
return value;
|
|
134
|
+
return `https://openreview.net${value.startsWith('/') ? value : `/${value}`}`;
|
|
135
|
+
}
|
|
136
|
+
extractDoi(value) {
|
|
137
|
+
const match = value.match(/10\.\d{4,9}\/[^\s"'<>]+/i);
|
|
138
|
+
return match ? match[0].replace(/[).,;]+$/, '') : '';
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=OpenReviewSearcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenReviewSearcher.js","sourceRoot":"","sources":["../../src/platforms/OpenReviewSearcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,8 @@ export interface SearchOptions {
|
|
|
13
13
|
author?: string;
|
|
14
14
|
/** 期刊过滤 */
|
|
15
15
|
journal?: string;
|
|
16
|
+
/** 会议或平台 venue 过滤 */
|
|
17
|
+
venue?: string;
|
|
16
18
|
/** 学科分类过滤 */
|
|
17
19
|
category?: string;
|
|
18
20
|
/** 排序方式 */
|
|
@@ -37,6 +39,10 @@ export interface SearchOptions {
|
|
|
37
39
|
documentType?: 'ar' | 'cp' | 're' | 'bk' | 'ch';
|
|
38
40
|
/** 出版物类型 (PubMed) */
|
|
39
41
|
publicationType?: string[];
|
|
42
|
+
/** 文章标题过滤 (IEEE Xplore) */
|
|
43
|
+
articleTitle?: string;
|
|
44
|
+
/** 起始记录位置 (IEEE Xplore) */
|
|
45
|
+
startRecord?: number;
|
|
40
46
|
}
|
|
41
47
|
export interface DownloadOptions {
|
|
42
48
|
/** 保存路径 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaperSource.d.ts","sourceRoot":"","sources":["../../src/platforms/PaperSource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAY,MAAM,0BAA0B,CAAC;AAGlE,MAAM,WAAW,aAAa;IAC5B,aAAa;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW;IACX,MAAM,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,WAAW,CAAC;IAC5C,WAAW;IACX,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC3B,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gCAAgC;IAChC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;IACtC,oBAAoB;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB;IACtB,YAAY,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAChD,qBAAqB;IACrB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"PaperSource.d.ts","sourceRoot":"","sources":["../../src/platforms/PaperSource.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PaperSource.js","sourceRoot":"","sources":["../../src/platforms/PaperSource.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,YAAY,EAAY,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"PaperSource.js","sourceRoot":"","sources":["../../src/platforms/PaperSource.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PubMedSearcher.d.ts","sourceRoot":"","sources":["../../src/platforms/PubMedSearcher.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,KAAK,EAAgB,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAMrG,UAAU,mBAAoB,SAAQ,aAAa;IACjD,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW;IACX,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AA2GD,qBAAa,cAAe,SAAQ,WAAW;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;gBAEzB,MAAM,CAAC,EAAE,MAAM;IAa3B,eAAe,IAAI,oBAAoB;IAWvC;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IA0BhF;;OAEG;YACW,WAAW;IA+CzB;;OAEG;YACW,iBAAiB;IAmC/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAwCxB;;OAEG;IACH,OAAO,CAAC,YAAY;IASpB;;OAEG;YACW,gBAAgB;
|
|
1
|
+
{"version":3,"file":"PubMedSearcher.d.ts","sourceRoot":"","sources":["../../src/platforms/PubMedSearcher.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,KAAK,EAAgB,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAMrG,UAAU,mBAAoB,SAAQ,aAAa;IACjD,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW;IACX,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AA2GD,qBAAa,cAAe,SAAQ,WAAW;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;gBAEzB,MAAM,CAAC,EAAE,MAAM;IAa3B,eAAe,IAAI,oBAAoB;IAWvC;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IA0BhF;;OAEG;YACW,WAAW;IA+CzB;;OAEG;YACW,iBAAiB;IAmC/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAwCxB;;OAEG;IACH,OAAO,CAAC,YAAY;IASpB;;OAEG;YACW,gBAAgB;IAyB9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAK3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA+D1B;;OAEG;IACH,OAAO,CAAC,cAAc;IAyBtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAgBvB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAmB5B;;OAEG;IACH,OAAO,CAAC,UAAU;IAiBlB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAW9E;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAI5E;;OAEG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAUzD;;OAEG;IACG,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAUvD;;OAEG;IACH,oBAAoB;;;;;;IAIpB;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;CAiBzC"}
|
|
@@ -179,6 +179,14 @@ export class PubMedSearcher extends PaperSource {
|
|
|
179
179
|
* 解析XML响应
|
|
180
180
|
*/
|
|
181
181
|
async parseXmlResponse(xmlData) {
|
|
182
|
+
const trimmed = (xmlData || '').trim();
|
|
183
|
+
if (!trimmed) {
|
|
184
|
+
throw new Error('Empty XML response received from PubMed');
|
|
185
|
+
}
|
|
186
|
+
if (!trimmed.startsWith('<')) {
|
|
187
|
+
const preview = trimmed.slice(0, 120).replace(/\s+/g, ' ');
|
|
188
|
+
throw new Error(`Invalid XML response received (expected markup, got: "${preview}...")`);
|
|
189
|
+
}
|
|
182
190
|
const parser = new xml2js.Parser({
|
|
183
191
|
explicitArray: false, // 简化数组处理
|
|
184
192
|
mergeAttrs: false,
|