new landing page
This commit is contained in:
parent
70e2e2e900
commit
ce6bc03b46
@ -7,78 +7,140 @@
|
|||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<!-- Include flash messages template -->
|
<div class="container text-center mb-5">
|
||||||
{% include "partials/flash_messages.html.jinja" %}
|
|
||||||
|
|
||||||
<div class="container text-center">
|
|
||||||
<h1 class="display-4">Welcome to SciPaperLoader</h1>
|
<h1 class="display-4">Welcome to SciPaperLoader</h1>
|
||||||
<p class="lead">Your paper scraping tool is ready.</p>
|
<p class="lead">Your comprehensive paper management and scraping platform</p>
|
||||||
<p class="text-muted">A simple tool to scrape papers from Zotero API.</p>
|
<p class="text-muted">Automate paper collection, manage metadata, and monitor download progress with intelligent
|
||||||
|
scheduling</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row g-4">
|
<!-- Main Features Section -->
|
||||||
<div class="col-md-6">
|
<div class="row g-4 mb-5">
|
||||||
<div class="card shadow-sm">
|
<div class="col-12">
|
||||||
|
<h2 class="text-center mb-4">🚀 Core Features</h2>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-lg-4 col-md-6">
|
||||||
|
<div class="card shadow-sm h-100">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h5 class="card-title">📄 CSV Import</h5>
|
<h5 class="card-title">🎛️ Scraper Control Panel</h5>
|
||||||
<p class="card-text">
|
<p class="card-text">
|
||||||
Upload a 37-column CSV to import paper metadata. Only relevant fields
|
Start, pause, and monitor the automated paper scraping process. View real-time statistics,
|
||||||
(title, DOI, ISSN, etc.) are stored. Errors are reported without
|
activity charts, and process individual papers on demand.
|
||||||
aborting the batch.
|
|
||||||
</p>
|
</p>
|
||||||
<a href="{{ url_for('upload.upload') }}" class="btn btn-sm btn-outline-primary">Upload Now</a>
|
<a href="{{ url_for('scraper.index') }}" class="btn btn-primary">Open Control Panel</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-6">
|
<div class="col-lg-4 col-md-6">
|
||||||
<div class="card shadow-sm">
|
<div class="card shadow-sm h-100">
|
||||||
<div class="card-body">
|
|
||||||
<h5 class="card-title">🧠 Background Scraper</h5>
|
|
||||||
<p class="card-text">
|
|
||||||
A daemon process runs hourly to fetch papers using Zotero API.
|
|
||||||
Downloads are randomized to mimic human behavior and avoid detection.
|
|
||||||
</p>
|
|
||||||
<a href="{{ url_for('logger.list_logs') }}" class="btn btn-sm btn-outline-secondary">View Logs</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-md-6">
|
|
||||||
<div class="card shadow-sm">
|
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h5 class="card-title">📚 Paper Management</h5>
|
<h5 class="card-title">📚 Paper Management</h5>
|
||||||
<p class="card-text">
|
<p class="card-text">
|
||||||
Monitor paper status (Pending, Done, Failed), download PDFs, and
|
Browse, search, and manage your paper collection. View download status,
|
||||||
inspect errors. Files are stored on disk in structured folders per
|
inspect metadata, export data, and handle failed downloads.
|
||||||
DOI.
|
|
||||||
</p>
|
</p>
|
||||||
<a href="{{ url_for('papers.list_papers') }}" class="btn btn-sm btn-outline-success">Browse Papers</a>
|
<a href="{{ url_for('papers.list_papers') }}" class="btn btn-success">Browse Papers</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-6">
|
<div class="col-lg-4 col-md-6">
|
||||||
<div class="card shadow-sm">
|
<div class="card shadow-sm h-100">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h5 class="card-title">🕒 Download Schedule</h5>
|
<h5 class="card-title">📄 CSV Data Import</h5>
|
||||||
<p class="card-text">
|
<p class="card-text">
|
||||||
Control how many papers are downloaded per hour. Configure hourly
|
Bulk import paper metadata from CSV files. Supports 37-column format with
|
||||||
volume (e.g. 2/hour at daytime, 0 at night) to match your bandwidth or
|
intelligent duplicate detection and comprehensive error reporting.
|
||||||
usage pattern.
|
|
||||||
</p>
|
</p>
|
||||||
<a href="{{ url_for('config.schedule') }}" class="btn btn-sm btn-outline-warning">Adjust Schedule</a>
|
<a href="{{ url_for('upload.upload') }}" class="btn btn-outline-primary">Import Data</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Configuration & Monitoring Section -->
|
||||||
|
<div class="row g-4 mb-5">
|
||||||
|
<div class="col-12">
|
||||||
|
<h2 class="text-center mb-4">⚙️ Configuration & Monitoring</h2>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-lg-4 col-md-6">
|
||||||
|
<div class="card shadow-sm h-100">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">🕒 Download Scheduling</h5>
|
||||||
|
<p class="card-text">
|
||||||
|
Configure hourly download quotas and timing patterns. Set different rates for
|
||||||
|
day/night hours to optimize bandwidth usage and avoid detection.
|
||||||
|
</p>
|
||||||
|
<a href="{{ url_for('config.schedule') }}" class="btn btn-warning">Manage Schedule</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-lg-4 col-md-6">
|
||||||
|
<div class="card shadow-sm h-100">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">🔧 System Configuration</h5>
|
||||||
|
<p class="card-text">
|
||||||
|
Adjust global settings including daily volume limits, download paths,
|
||||||
|
and scraper module selection for optimal performance.
|
||||||
|
</p>
|
||||||
|
<a href="{{ url_for('config.general') }}" class="btn btn-outline-secondary">System Settings</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-lg-4 col-md-6">
|
||||||
|
<div class="card shadow-sm h-100">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">📊 Activity Logs</h5>
|
||||||
|
<p class="card-text">
|
||||||
|
Monitor system activity, track scraping progress, and troubleshoot issues
|
||||||
|
with comprehensive logging and activity timeline views.
|
||||||
|
</p>
|
||||||
|
<a href="{{ url_for('logger.list_logs') }}" class="btn btn-info">View Logs</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Advanced Features Section -->
|
||||||
|
<div class="row g-4 mb-5">
|
||||||
|
<div class="col-12">
|
||||||
|
<h2 class="text-center mb-4">🔬 Advanced Features</h2>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-lg-6 col-md-6">
|
||||||
|
<div class="card shadow-sm h-100">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">🗄️ Database Management</h5>
|
||||||
|
<p class="card-text">
|
||||||
|
Manage your paper database with tools for generating test data,
|
||||||
|
cleaning up records, and database maintenance operations.
|
||||||
|
</p>
|
||||||
|
<a href="{{ url_for('config.database') }}" class="btn btn-outline-danger">Database Tools</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-lg-6 col-md-6">
|
||||||
|
<div class="card shadow-sm h-100">
|
||||||
|
<div class="card-body">
|
||||||
|
<h5 class="card-title">🧠 Intelligent Processing</h5>
|
||||||
|
<p class="card-text">
|
||||||
|
Background daemon with randomized timing, human-like behavior patterns,
|
||||||
|
and automatic retry mechanisms for robust paper collection.
|
||||||
|
</p>
|
||||||
|
<div class="mt-3">
|
||||||
|
<span class="badge bg-success me-2">Auto-Retry</span>
|
||||||
|
<span class="badge bg-info me-2">Smart Timing</span>
|
||||||
|
<span class="badge bg-warning">Rate Limiting</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script>
|
|
||||||
function testMultipleMessages() {
|
|
||||||
showFlashMessage('First message - Success!', 'success');
|
|
||||||
setTimeout(() => showFlashMessage('Second message - Warning!', 'warning'), 500);
|
|
||||||
setTimeout(() => showFlashMessage('Third message - Info!', 'info'), 1000);
|
|
||||||
setTimeout(() => showFlashMessage('Fourth message - Error!', 'error'), 1500);
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
{% endblock content %}
|
{% endblock content %}
|
Loading…
x
Reference in New Issue
Block a user