https://github.com/nandor206/magyar-anime-scraper
Anime link scraper, ami az AnimeDrive oldalát használja. Bemutató célra csináltam, nem vállalok felekősséget semmire!
https://github.com/nandor206/magyar-anime-scraper
anime anime-scraper animedrive hu hun magyar rust scraper scraping-websites
Last synced: 3 months ago
JSON representation
Anime link scraper, ami az AnimeDrive oldalát használja. Bemutató célra csináltam, nem vállalok felekősséget semmire!
- Host: GitHub
- URL: https://github.com/nandor206/magyar-anime-scraper
- Owner: Nandor206
- Created: 2025-04-05T08:31:02.000Z (7 months ago)
- Default Branch: master
- Last Pushed: 2025-07-11T15:11:40.000Z (4 months ago)
- Last Synced: 2025-07-11T17:32:38.520Z (4 months ago)
- Topics: anime, anime-scraper, animedrive, hu, hun, magyar, rust, scraper, scraping-websites
- Language: Rust
- Homepage: https://animedrive.hu
- Size: 19.5 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# !!! Nem működik !!!
# AnimeDrive Scraper – Videó link kinyerő
Ez egy **bemutató célú** Rust program, amely megmutatja, mennyire **egyszerű lehet egy weboldalt scrappelni**, jelen esetben az [AnimeDrive.hu](https://animedrive.hu/) oldalt.
> ⚠️ **Jogi nyilatkozat:** Ez a kód *csak oktatási céllal* készült. Az AnimeDrive nem biztos, hogy legálisan tesz közzé tartalmakat, és a scraping technikák használata a felhasználási feltételek megsértését jelentheti.
> A kódot csak saját felelősségre használd!
Ha nagyon akarod ezt kombinálod az [anilist API](https://docs.anilist.co)-jával és van egy autómatikus anime szerző programod.
Az API lehetővé teszi a keresést, mal id-vá konvertálást, így már csak egy epizód szám kell és megvan a link.
---
## 🧠 Mit csinál ez a program?
- Egy adott anime (MyAnimeList ID alapján) és epizód szám alapján:
1. Lekéri az adott anime AnimeDrive ID-jét.
2. Összerakja a videoplayer linket.
3. Betölti a videoplayer HTML kódját.
4. Kinyeri belőle a legjobb minőségű videó linket.
5. Ezt kiírja a `video_link.txt` fájlba.
---
## ⚙️ Függőségek
A kód használatához a következő crate-ek szükségesek:
```toml
# Cargo.toml
[dependencies]
reqwest = { version = "0.11", features = ["blocking"] }
regex = "1.7"
```
---
## 📦 Build és futtatás
1. Klónozd vagy másold le a kódot egy Rust projektbe.
2. Add hozzá a fent említett függőségeket a `Cargo.toml`-hoz.
3. Buildeld és futtasd:
```bash
cargo run
```
A kimenet a `video_link.txt` fájlban lesz, ami tartalmazza a videó közvetlen elérhetőségét.
---
## 💡 Példa
A kódban példaként a *Sousou no Frieren* (MAL ID: `52991`) 8. epizódja van beállítva. Ez a rész automatikusan megkeresésre, betöltésre és feldolgozásra kerül.
Részlet a működésből:
```rust
let mal_id: u64 = 52991;
let episode: u64 = 8;
let anime_drive_link = anime_drive_link(&client, mal_id, episode);
let video_html = get_html(&client, anime_drive_link);
let video_link = extract_highest_quality(&video_html);
match video_link {
Some(link) => {
println!("Videó link: {}", link);
fs::write("video_link.txt", &link).expect("Nem sikerült a fájl írása");
}
None => {
eprintln!("Nem található videó link");
process::exit(1);
}
}
```
---
## 🔍 Hogyan működik?
### 1. AnimeDrive ID lekérése
A MyAnimeList link alapján történik egy keresés az AnimeDrive-on, ami automatikusan átirányít a megfelelő oldalra. Az `id` paraméter innen nyerhető ki.
```rust
let search_url = format!("https://animedrive.hu/search/?q=https://myanimelist.net/anime/{}", mal_id);
let response = client.get(&search_url).send().unwrap();
let final_url = response.url().to_string();
```
### 2. Player oldal lekérése
A kapott `id`-ből generáljuk a `player_wee.php` linket, ami betölti a videót.
```rust
let url = format!("https://player.animedrive.hu/player_wee.php?id={}&ep={}", id, episode);
```
### 3. HTML kinyerés
A teljes HTML letöltésre kerül, majd fájlba is íródik (`response.html`), hogy akár kézzel is elemezhető legyen.
### 4. Videó link kinyerés (Regex)
A JavaScript kódból egy regex segítségével kiszűrjük a videó linkeket és a hozzájuk tartozó felbontást. A legnagyobb felbontású link kerül kiválasztásra:
```rust
let re = Regex::new(r#"src:\s*'([^']+)'.*?size:\s*(\d+)"#).unwrap();
```
---
## 📁 Kimeneti fájlok
- `video_link.txt` – A végső videó URL
- `response.html` – A player oldal teljes HTML kódja (debug célra)
---
## ❗ Fontos megjegyzések
- A videoplayer oldal néha (főleg éjszaka) lassan tölt be, így a HTTP kliens timeoutja 2 percre van állítva.
- Ne küldj túl sok lekérést egyszerre, mert az oldal letilthatja az IP címedet.
---
Készítette: Egy unatkozó Rust fejlesztő 🤓