# wikipedia-summary 📚

Wikipedia API wrapper for Node.js — summaries, search, random articles, On This Day events, multi-language support.

## 🚀 What's New in v2.0.0

- **`search()`** — Search Wikipedia and get matched articles
- **`getRandomArticle()`** — Discover random Wikipedia articles
- **`getOnThisDay()`** — Historical events, births, deaths for today's date
- **`getMultipleSummaries()`** — Fetch multiple topics at once
- **Thumbnail & image URLs** — Both original and thumbnail images
- **Last modified date** — Article freshness info
- **Input validation** — Better error messages

## 📦 Installation

```bash
npm install wikipedia-summary
```

## 📋 Usage

### Get Summary

```js
const { getSummary } = require("wikipedia-summary");

const article = await getSummary("Node.js");
console.log(article.title);       // "Node.js"
console.log(article.extract);     // Full summary text
console.log(article.pageUrl);     // Wikipedia page URL
console.log(article.imageUrl);    // Main image URL
console.log(article.thumbnailUrl); // Thumbnail URL
console.log(article.lastModified); // Last edit timestamp
```

### Multi-language Support

```js
const { getSummary } = require("wikipedia-summary");

// Turkish
const tr = await getSummary("Istanbul", "tr");

// German
const de = await getSummary("Berlin", "de");

// Japanese
const ja = await getSummary("Tokyo", "ja");
```

### Search Wikipedia

```js
const { search } = require("wikipedia-summary");

const results = await search("artificial intelligence", "en", 5);
results.forEach(r => {
  console.log(`${r.title} - ${r.snippet}`);
  console.log(`  ${r.pageUrl}`);
});
```

### Random Article

```js
const { getRandomArticle } = require("wikipedia-summary");

const random = await getRandomArticle();
console.log(`${random.title}: ${random.extract}`);

// Random article in Turkish
const randomTR = await getRandomArticle("tr");
```

### On This Day

```js
const { getOnThisDay } = require("wikipedia-summary");

const events = await getOnThisDay("en", "all");
events.forEach(event => {
  console.log(`[${event.type}] ${event.year || ''} - ${event.text}`);
});

// Filter by type: "selected", "births", "deaths", "events", "holidays"
const births = await getOnThisDay("en", "births");
```

### Multiple Summaries

```js
const { getMultipleSummaries } = require("wikipedia-summary");

const topics = ["JavaScript", "Python", "Rust", "Go"];
const summaries = await getMultipleSummaries(topics);

summaries.forEach(s => {
  if (s.error) {
    console.log(`${s.title}: ${s.error}`);
  } else {
    console.log(`${s.title}: ${s.extract.substring(0, 100)}...`);
  }
});
```

## 📡 API

| Function | Description |
|----------|-------------|
| `getSummary(topic, lang?)` | Get article summary |
| `search(query, lang?, limit?)` | Search Wikipedia articles |
| `getRandomArticle(lang?)` | Get a random article |
| `getOnThisDay(lang?, type?)` | Get On This Day events |
| `getMultipleSummaries(topics[], lang?)` | Batch fetch summaries |

### Language Support

All functions accept a language code as parameter. Examples: `"en"`, `"tr"`, `"de"`, `"fr"`, `"es"`, `"ja"`, `"zh"`, `"pt"`, `"ru"`, `"ar"`.

## 📄 License

MIT © Utku Berkay Koç
