Skip to main content
The master database contains comprehensive information about all books, authors, and categories in the Shamela library.

Basic Download as SQLite

Download the master database as a SQLite file:
import { downloadMasterDatabase } from 'shamela';

const dbPath = await downloadMasterDatabase({
  outputFile: { path: './shamela_master.db' }
});
console.log(`Downloaded to: ${dbPath}`);

Download as JSON

Export the master database as JSON for easier inspection:
import { downloadMasterDatabase } from 'shamela';

const jsonPath = await downloadMasterDatabase({
  outputFile: { path: './shamela_master.json' }
});
console.log(`Downloaded to: ${jsonPath}`);

With Pre-fetched Metadata

Optimize by pre-fetching metadata to avoid an extra HTTP call:
import { getMasterMetadata, downloadMasterDatabase } from 'shamela';

// Fetch metadata first
const metadata = await getMasterMetadata();
console.log(`Latest version: ${metadata.version}`);
console.log(`Download URL: ${metadata.url}`);

// Use metadata in download
await downloadMasterDatabase({
  masterMetadata: metadata,
  outputFile: { path: './master.db' }
});

Check for Updates

Check if there are updates available from a specific version:
import { getMasterMetadata } from 'shamela';

// Check for updates from version 5
const updates = await getMasterMetadata(5);

if (updates.version > 5) {
  console.log(`New version available: ${updates.version}`);
  console.log(`Download from: ${updates.url}`);
} else {
  console.log('No updates available');
}

GetMasterMetadataResponsePayload

type GetMasterMetadataResponsePayload = {
  url: string;      // Download URL for the master database patch
  version: number;  // Latest version number
};

Example Response

{
  "url": "https://shamela.ws/api/master_patch/download/123.zip",
  "version": 42
}

File Format Detection

The output format is automatically detected from the file extension:
import { downloadMasterDatabase } from 'shamela';

// SQLite format (.db or .sqlite)
await downloadMasterDatabase({
  outputFile: { path: './master.db' }      // SQLite
});

await downloadMasterDatabase({
  outputFile: { path: './master.sqlite' }  // SQLite
});

// JSON format
await downloadMasterDatabase({
  outputFile: { path: './master.json' }    // JSON
});
The library automatically validates that all required tables (books, authors, categories) are present in the downloaded master database.