MCP_CLIENTE_LATEX_V3 / fetch_papers.ps1
C2MV's picture
🚀 Deploy LaTeX MCP Server v2.0 — 7 tools (Modules A-F)
0ea56ba verified
$targetDir = "E:\Archivos (meanwhile)"
if (!(Test-Path $targetDir)) { New-Item -ItemType Directory -Path $targetDir -Force }
$dois = @(
"10.3390/molecules25061356",
"10.3390/molecules27010014",
"10.1007/s12355-018-0589-z",
"10.3390/12030607",
"10.3390/ijms25084197",
"10.1016/j.indcrop.2016.04.054",
"10.21704/rea.v21i1.1845",
"10.3390/horticulturae11101210",
"10.3390/horticulturae11060612",
"10.1007/s11240-016-1049-7",
"10.21448/ijsm.496724",
"10.3390/biom13050746",
"10.3390/molecules25122759",
"10.1007/s12892-020-00066-1",
"10.1105/tpc.004218",
"10.21203/rs.3.rs-4835008/v1",
"10.1038/nbt.1524",
"10.36995/j.recyt.2020.33.010",
"10.1007/s10535-012-0289-6",
"10.1590/s0103-50532013005000003",
"10.1021/jf1005935",
"10.3389/fpls.2012.00222",
"10.3390/ijms252413584",
"10.1590/0103-8478cr20181029",
"10.22541/au.174394998.87153798/v1",
"10.1007/s00253-021-11306-x",
"10.1007/s11240-023-02599-z",
"10.1002/bit.25346",
"10.1038/s41598-024-65483-6",
"10.21503/cyd.v23i2.2092",
"10.1007/s11240-025-03005-6",
"10.1007/s12355-018-0655-6",
"10.1007/s11130-021-00912-9",
"10.1080/15592324.2025.2558871",
"10.3390/plants10122762",
"10.5772/50568",
"10.1007/s11240-017-1312-6",
"10.1515/biolog-2017-0133",
"10.9755/ejfa.2021.v33.i3.2666",
"10.1111/j.1365-313X.2011.04486.x",
"10.1021/jf202185m",
"10.1093/pcp/pcm131",
"10.1016/J.INDCROP.2019.111530",
"10.1007/s11240-020-01902-6",
"10.1007/s11240-024-02909-z",
"10.3390/horticulturae10080788",
"10.1007/bf02932383",
"10.5897/jmpr11.1106",
"10.1002/jbm.540010406",
"10.1016/j.bcab.2021.101907",
"10.1016/j.ejbt.2018.08.006",
"10.1007/s11738-012-1136-2",
"10.1038/330677a0",
"10.1073/pnas.89.15.7213",
"10.1007/s12355-019-00727-8",
"10.1590/s0100-84042001000300013",
"10.1111/j.1399-3054.1962.tb08052.x",
"10.3390/plants11030439",
"10.1016/b978-0-12-812689-9.00009-1",
"10.1021/acsomega.3c07404",
"10.1007/s00449-025-03270-x",
"10.17576/jsm-2022-5107-06",
"10.1007/s11240-024-02804-7",
"10.17268/agroind.sci.2020.01.13",
"10.3389/fpls.2023.1310405",
"10.1016/j.indcrop.2025.120997",
"10.15373/2249555X/nov2011/3",
"10.3389/fpls.2023.1159588",
"10.3390/antiox13060692",
"10.37761/rsqp.v87i2.343",
"10.3390/agronomy11122414",
"10.15381/rpb.v30i2.24582",
"10.18054/PB.2016.118.1.3420",
"10.5281/zenodo.2333352",
"10.3390/molecules21020182",
"10.21448/ijsm.1079812",
"10.3390/molecules25040767",
"10.17576/jsm-2025-5404-03",
"10.1155/2022/5445291",
"10.3390/molecules30173476",
"10.1201/9780138743208-2",
"10.1590/s1517-83822013005000032",
"10.3390/ijms25042136",
"10.3390/agronomy14081743",
"10.22302/iribb.jur.mp.v89i2.458",
"10.21895/incres.2015.v6n2.03",
"10.1111/j.1365-313X.2007.03082.x",
"10.17268/agroind.sci.2019.01.11",
"10.1007/s11240-024-02892-5",
"10.1109/tla.2023.10246344",
"10.1016/j.biotechadv.2021.107774",
"10.35790/eg.5.1.2017.15416",
"10.22146/mot.87736",
"10.1016/j.biotechadv.2005.01.003"
)
$mirrors = @("https://sci-hub.st", "https://sci-hub.ru", "https://sci-hub.se")
$downloaded = @()
$notDownloaded = @()
foreach ($doi in $dois) {
Write-Host "Processing $doi..." -ForegroundColor Cyan
$success = $false
foreach ($mirror in $mirrors) {
$url = "$mirror/$doi"
try {
# Use curl.exe to get the page content
$html = curl.exe -s -L -A "Mozilla/5.0" $url
# Extract PDF link using regex
if ($html -match 'id\s*=\s*"pdf"[^>]+src\s*=\s*"([^"]+)"' -or $html -match 'embed[^>]+src\s*=\s*"([^"]+)"') {
$pdfUrl = $matches[1]
if ($pdfUrl -like "//*") { $pdfUrl = "https:$pdfUrl" }
elseif ($pdfUrl -like "/*") { $pdfUrl = "$mirror$pdfUrl" }
$safeName = ($doi -replace '[^a-zA-Z0-9]', '_') + ".pdf"
$dest = Join-Path $targetDir $safeName
Write-Host " Found PDF at $pdfUrl. Downloading..." -ForegroundColor Yellow
curl.exe -L -k -A "Mozilla/5.0" -o $dest $pdfUrl
if (Test-Path $dest) {
$size = (Get-Item $dest).Length
if ($size -gt 10000) {
$success = $true
break
} else {
Write-Host " File too small ($size bytes), possibly blocked." -ForegroundColor Red
Remove-Item $dest
}
}
}
} catch {
Write-Host " Error on mirror $mirror : $_" -ForegroundColor Red
}
}
if ($success) {
$downloaded += $doi
Write-Host " SUCCESS: $doi" -ForegroundColor Green
} else {
$notDownloaded += $doi
Write-Host " FAILED: $doi" -ForegroundColor Red
}
# Random sleep to avoid detection
$sleepTime = Get-Random -Minimum 2 -Maximum 5
Start-Sleep -Seconds $sleepTime
}
# Generate Report
$reportFile = Join-Path $targetDir "informe_descarga.md"
$report = @"
# Informe de Descarga de Artículos
## Resumen
- Descargados: $($downloaded.Count)
- Fallidos/No encontrados: $($notDownloaded.Count)
## DOIs Descargados
$(foreach ($d in $downloaded) { "- $d" })
## DOIs No Descargados
$(foreach ($d in $notDownloaded) { "- $d" })
## Referencias (APA 7)
(Consulte el archivo original para las referencias completas en orden alfabético)
"@
$report | Out-File -FilePath $reportFile -Encoding utf8
Write-Host "Report generated at $reportFile" -ForegroundColor Green