Название: Парсер с opensharing.org
Движки: Tesla Gold, Tesla Platinum

1) Парсит описание, все bb коды правильной конвертации.
2) Постер заливает на сервер и вводится в соответственные поле.
3) Теги фильтруются и заносятся в поле 'tags'.
4) Категория автоматически определяется.
5)Скриншоты вводит в соответственные поле, фильтруются, скриншот должен быть не меньше: шириной - 300, высотой - 150.
6) Превью скриншотов определяется, само заходит на сайт и копирует большое изображения, а на некоторых замену делает.
7) У парсера есть 2 способы парсить:
а) Указываем id раздачи который хотим спарсить
б) Автоматом парсем все роздачи что есть в базе данных(бд).
8) Можно выбирать какую категорию парсить.
9) .torrent файл копируется в папку с торентами.
10) Проверка по Хэш, если есть данный Хэш в бд то не заливает релиз на трекер.
11) Если нету описания к релизу, то тогда не заливает релиз на трекер.
12) Процедура парсинга поэтапно расписана (что спарсино, что нет).
13) В конце небольшая статистика. Сколько спарсино раздач, сколько осталось и сколько всего было + в процентах отображения сколько спарсино релизов.
14) Время генерации 6 - 8 секунд.
15) Весь код продокументирован, легко читается.

Установка:
1) Запрос в базу:

Код:
CREATE TABLE `grab_open` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `details` int(100) NOT NULL default '0',
  `work` int(10) unsigned default '1',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `one` (`details`)
) ENGINE=Aria DEFAULT CHARSET=cp1251 AUTO_INCREMENT=17474 ;

Создать файл parser_open.php и закинуть в корень трекера:

parser_open.php

<?
/**
* Автор :   6atafan aka VictoRD11
* icq :     436788492
* Z249740074765
* R210907110797
* U253667061157
* Поддержы автора!
**/

require_once("include/bittorrent.php");
require_once("include/benc.php");
dbconn();

// Показывать ошибок на экран, On or Off
@ini_set('display_errors', 'On');
// Лимит отработки скрипта
@ini_set('memory_limit', '32M');

// Проверка на авторизацию
loggedinorreturn();

// Проверка на класс пользователя
if ($CURUSER["class"] <> 6)
{
die;
}

// Выводим title
echo '<title>Парсер торрентов с opensharing.org</title>';

$action = (string)$_GET['action'];

if($action == 'link')
{
    $idpage = (int)$_GET["page"];
    $cat = (int)$_GET['cat'];
   
    // Проверку на категорию
    if(!empty($cat))
    {
    // Подгружаем страницу
    $this_content = file_get_contents('http://opensharing.org/b.php?cat='.$cat.'&page='.$idpage);
   
    // Все id торентов парсим
    preg_match_all('/<a class="downgif" href="\/download\/(.*?)\/">/is', $this_content, $id_torrent);
   
    // Проверка на ссылки
    if(count($id_torrent[1]))
    {
        echo '<b><font color=green>Найдены id.</font></b>';
       
        $numminus = $numplus = 0;
       
        // Цикл 
        foreach ($id_torrent[1] as $torrent)
        {
        // Все найденые id заносим в бд
        sql_query("INSERT INTO grab_open (details, work) VALUES (".sqlesc($torrent).",".sqlesc("1").")");
       
        // Проверка добавило роздачу или нет.
        $newid = mysql_insert_id();
       
        //Подсчет сколько силок спарсино, сколько нет.
        if($newid)
        {
            ++$numplus;
        } else {
            ++$numminus;
        }
        }
        // Вывод на экран информацию
        echo '</br>Спарсировано <b><font color=green>'.$numplus.'</font></b> из <b><font color=red>'.$numminus.'</font></b> сылок';   
    } else {
        echo '</br>Не могу спарсировать ссылки - <b><font color=red>Ошибка</font></b>';
    }
   
    ++$idpage;
    // Редирект
    echo '<script>setTimeout(\'document.location.href="parser_open.php?action=link&cat='.$cat.'&page='.$idpage.'"\', 1000);</script>';
    die;
    } else {
    // Выбираем какую категорию парсить
    echo '<form method="get">';
        echo '<b><font color=green>Парсем категорию</font></b> : ';
        echo '<input type="hidden" name="action" value="link">';
        echo '<select name="cat">';
            echo '<option value="10" selected="">Все</option>';
            echo '<option value="1">Кино</option>';
            echo '<option value="2">Музыка</option>';
            echo '<option value="3">Разное</option>';
            echo '<option value="4">Сериалы</option>';
            echo '<option value="5">Книги</option>';
            echo '<option value="6">Телевизор</option>';
            echo '<option value="7">Мультипликация</option>';
            echo '<option value="8">Игры</option>';
            echo '<option value="9">Софт</option>';
        echo '</select>';
        echo ' <input type="submit" style="width: 100px" value="Поехали" />';
    echo '</form>';
    die;
    }
}
// Выбираем из базы данных не спарсированые роздачи
$query = sql_query("SELECT * FROM grab_open WHERE work='1' ORDER BY id DESC LIMIT 1");
$result = mysql_fetch_array($query);

// id ссылки на opensharing.org
$releases_id = $result["details"];
$id_grab = $result["id"];

// Проверка на парсер роздачи по id
if (!empty($_GET["id"]))
{
    $releases_id = (int)$_GET['id'];
}

// Если нету релизов для парсинга, редирект на ссылки
if (empty($releases_id))
{
    echo 'Сборка силок <script>setTimeout(\'document.location.href="parser_open.php?action=link"\', 5000);</script>';
    die;
} else {
    echo 'Взят id с базы: <font color=green><b>'.$releases_id.'</b></font>';
}

// Автори,групы роздач
$reliz = array("от Suprug (BigFANGroup)", "от OpenSharing", "от HQ-ViDEO", "от HELLYWOOD", "от CGInfo", "от Бультерьер", "от HD-Te@m", "от PlanetaUA", "от LostFilm", "от NovaFiLM", "от Friends-Club", "от Bumblebee", "от INTERFILM", "от 25KADR", "от Vvv", "от HQCLUB", "от UaTeam", "от ExKinoRay", "от AnimeReactor", "от BigFANGroup", "от FreeTorrents-UA", "от FS-Media", "от Dizell", "от Lukavaya", "от NOLIMITS-TEAM", "от КинозалSAT", "от Hurtom", "от AndrewWhite", "от Neofilm", "от HQRips", "от MassTorr", "от NovaLan", "от BestSound ExKinoRay", "от Кинозал", "от ParadiSe", "от Lossless", "от ParadiSe Кинозал", "от Vaippp", "от GREEN TEA", "от KinoZalSat", "от VinylRip", "от Files-x", "от Xixidok", "от Japan mini-lp Remasters", "от olegek70", "от AniFilm", "от Torrent-Games", "от ivandubskoj", "от Traumer | Reloading", "от Freeisland", "от den904", "от R.G. GoldenShara | Extended", "от R.G. GoldenShara", "от SergV", "от Theatrical Cut", "от Director's Cut", "от Sergei7721", "от Релиз ®", "от Widok", "от KimVlad & ANDROZZZ", "от KINOREAKTOR", "от gegemaunt & Psycho-Share", "от 100 ТВ", "от ®", "от R.G.Packers", "от Snowrecords", "от R.G.Игроманы", "от egoleshik", "от R.G. RuTor", "от VIDEODB", "от BestSound", "от (AVO @PD)", "от Лье Ло", "от Riper AM", "от Smart's Studios & Onefilm", "от Smart's Studios", "от Onefilm", "от RipOnline", "от X-DIGITAL", "от Рипер ОК!", "от bvsbns", "от РиперАМ", "от ed_rez", "от Rip Spieler", "от Enigma-Vladislav71", "от R.G. Repacker's", "от & Ivnet-Cinema", "от R.G. Catalyst", "от R.G. Механики", "от R.G. Origami", "от RiperAM", "от КinoZalSat", "от DHT-Movies", "от Релиз", "от GENADIY", "от (VO-production)", "от КиноРай.ТВ", "от Хтабыч", "от Kosmos", "от Sheikn", "от BigFANGrop", "от AntiBobr", "от SatTV", "от СТС", "от R.G. Element Arts", "от xatab", "от Firebit-Films", "от q1q1", "от Кубик в Кубе", "от PROPER", "от DreamRecords", "от Theatrical Cut PROPER", "от SMALL-RiP", "от Firebit-Ретро", "от SHIZA [NIKITOS]", "от ELEMENT-TEAM", "от Сборка Урода", "от GoldenShara", "от SHIZA [ShadMG]", "от R.G.BlackBoX", "от Трактир", "от NewStudio", "от Extended Cut", "от Extended Edition", "от R.G.", "от Games-", "от ArtSound", "от Кино-Юм", "от KS", "от Razda4ka", "от Element-Team", "от HQ-VIDEO", "от SHIZA [ShadMG]", "от DXPort", "от Spieler", "от UNRATED", "от LOOK", "от ed rez", "от 3HR&Zer0", "от Киномагия", "от FireBit-Films", "от PowerTracker", "от Generalfilm", "от sYsTem", "от HDReactor", "от RG FaSt-ReLiSe", "от RuSub", "от Firebit-ретро", "от HiSound", "от Firebit-Music", "от FireBit", "от КомРина", "от Best-Music", "от R.G Repacker's", "by Suprug (BigFANGroup)", "by OpenSharing", "by HQ-ViDEO", "by HELLYWOOD", "by CGInfo", "by Бультерьер", "by HD-Te@m", "by PlanetaUA", "by LostFilm", "by NovaFiLM", "by Friends-Club", "by Bumblebee", "by INTERFILM", "by 25KADR", "by Vvv", "by HQCLUB", "by UaTeam", "by ExKinoRay", "by AnimeReactor", "by BigFANGroup", "by FreeTorrents-UA", "by FS-Media", "by Dizell", "by Lukavaya", "by NOLIMITS-TEAM", "by КинозалSAT", "by Hurtom", "by AndrewWhite", "by Neofilm", "by HQRips", "by MassTorr", "by NovaLan", "by BestSound ExKinoRay", "by Кинозал", "by ParadiSe", "by Lossless", "by ParadiSe Кинозал", "by Vaippp", "by GREEN TEA", "by KinoZalSat", "by VinylRip", "by Files-x", "by Xixidok", "by Japan mini-lp Remasters", "by olegek70", "by AniFilm", "by Torrent-Games", "by ivandubskoj", "by Traumer | Reloading", "by Freeisland", "by den904", "by R.G. GoldenShara | Extended", "by R.G. GoldenShara", "by SergV", "by Theatrical Cut", "by Director's Cut", "by Sergei7721", "by Релиз ®", "by Widok", "by KimVlad & ANDROZZZ", "by KINOREAKTOR", "by gegemaunt & Psycho-Share", "by 100 ТВ", "by ®", "by R.G.Packers", "by Snowrecords", "by R.G.Игроманы", "by egoleshik", "by R.G. RuTor", "by VIDEODB", "by BestSound", "by (AVO @PD)", "by Лье Ло", "by Riper AM", "by Smart's Studios & Onefilm", "by Smart's Studios", "by Onefilm", "by RipOnline", "by X-DIGITAL", "by Рипер ОК!", "by bvsbns", "by РиперАМ", "by ed_rez", "by Rip Spieler", "by Enigma-Vladislav71", "by R.G. Repacker's", "by & Ivnet-Cinema", "by R.G. Catalyst", "by R.G. Механики", "by R.G. Origami", "by RiperAM", "by КinoZalSat", "by DHT-Movies", "by Релиз", "by GENADIY", "by (VO-production)", "by КиноРай.ТВ", "by Хтабыч", "by Kosmos", "by Sheikn", "by BigFANGrop", "by AntiBobr", "by SatTV", "by СТС", "by R.G. Element Arts", "by xatab", "by Firebit-Films", "by q1q1", "by Кубик в Кубе", "by PROPER", "by DreamRecords", "by Theatrical Cut PROPER", "by SMALL-RiP", "by Firebit-Ретро", "by SHIZA [NIKITOS]", "by ELEMENT-TEAM", "by Сборка Урода", "by GoldenShara", "by SHIZA [ShadMG]", "by R.G.BlackBoX", "by Трактир", "by NewStudio", "by Extended Cut", "by Extended Edition", "by R.G.", "by Games-", "by ArtSound", "by Кино-Юм", "by KS", "by Razda4ka", "by Element-Team", "by HQ-VIDEO", "by SHIZA [ShadMG]", "by DXPort", "by Spieler", "by UNRATED", "by LOOK", "by ed rez", "by 3HR&Zer0", "by Киномагия", "by FireBit-Films", "by PowerTracker", "by Generalfilm", "by sYsTem", "by HDReactor", "by RG FaSt-ReLiSe", "by RuSub", "by Firebit-ретро", "by HiSound", "by Firebit-Music", "by FireBit", "by КомРина", "by Best-Music", "by R.G Repacker's","- Suprug (BigFANGroup)", "- OpenSharing", "- HQ-ViDEO", "- HELLYWOOD", "- CGInfo", "- Бультерьер", "- HD-Te@m", "- PlanetaUA", "- LostFilm", "- NovaFiLM", "- Friends-Club", "- Bumblebee", "- INTERFILM", "- 25KADR", "- Vvv", "- HQCLUB", "- UaTeam", "- ExKinoRay", "- AnimeReactor", "- BigFANGroup", "- FreeTorrents-UA", "- FS-Media", "- Dizell", "- Lukavaya", "- NOLIMITS-TEAM", "- КинозалSAT", "- Hurtom", "- AndrewWhite", "- Neofilm", "- HQRips", "- MassTorr", "- NovaLan", "- BestSound ExKinoRay", "- Кинозал", "- ParadiSe", "- Lossless", "- ParadiSe Кинозал", "- Vaippp", "- GREEN TEA", "- KinoZalSat", "- VinylRip", "- Files-x", "- Xixidok", "- Japan mini-lp Remasters", "- olegek70", "- AniFilm", "- Torrent-Games", "- ivandubskoj", "- Traumer | Reloading", "- Freeisland", "- den904", "- R.G. GoldenShara | Extended", "- R.G. GoldenShara", "- SergV", "- Theatrical Cut", "- Director's Cut", "- Sergei7721", "- Релиз ®", "- Widok", "- KimVlad & ANDROZZZ", "- KINOREAKTOR", "- gegemaunt & Psycho-Share", "- 100 ТВ", "- ®", "- R.G.Packers", "- Snowrecords", "- R.G.Игроманы", "- egoleshik", "- R.G. RuTor", "- VIDEODB", "- BestSound", "- (AVO @PD)", "- Лье Ло", "- Riper AM", "- Smart's Studios & Onefilm", "- Smart's Studios", "- Onefilm", "- RipOnline", "- X-DIGITAL", "- Рипер ОК!", "- bvsbns", "- РиперАМ", "- ed_rez", "- Rip Spieler", "- Enigma-Vladislav71", "- R.G. Repacker's", "- & Ivnet-Cinema", "- R.G. Catalyst", "- R.G. Механики", "- R.G. Origami", "- RiperAM", "- КinoZalSat", "- DHT-Movies", "- Релиз", "- GENADIY", "- (VO-production)", "- КиноРай.ТВ", "- Хтабыч", "- Kosmos", "- Sheikn", "- BigFANGrop", "- AntiBobr", "- SatTV", "- СТС", "- R.G. Element Arts", "- xatab", "- Firebit-Films", "- q1q1", "- Кубик в Кубе", "- PROPER", "- DreamRecords", "- Theatrical Cut PROPER", "- SMALL-RiP", "- Firebit-Ретро", "- SHIZA [NIKITOS]", "- ELEMENT-TEAM", "- Сборка Урода", "- GoldenShara", "- SHIZA [ShadMG]", "- R.G.BlackBoX", "- Трактир", "- NewStudio", "- Extended Cut", "- Extended Edition", "- R.G.", "- Games-", "- ArtSound", "- Кино-Юм", "- KS", "- Razda4ka", "- Element-Team", "- HQ-VIDEO", "- SHIZA [ShadMG]", "- DXPort", "- Spieler", "- UNRATED", "- LOOK", "- ed rez", "- 3HR&Zer0", "- Киномагия", "- FireBit-Films", "- PowerTracker", "- Generalfilm", "- sYsTem", "- HDReactor", "- RG FaSt-ReLiSe", "- RuSub", "- Firebit-ретро", "- HiSound", "- Firebit-Music", "- FireBit", "- КомРина", "- Best-Music", "- R.G Repacker's", "| Suprug (BigFANGroup)", "| OpenSharing", "| HQ-ViDEO", "| HELLYWOOD", "| CGInfo", "| Бультерьер", "| HD-Te@m", "| PlanetaUA", "| LostFilm", "| NovaFiLM", "| Friends-Club", "| Bumblebee", "| INTERFILM", "| 25KADR", "| Vvv", "| HQCLUB", "| UaTeam", "| ExKinoRay", "| AnimeReactor", "| BigFANGroup", "| FreeTorrents-UA", "| FS-Media", "| Dizell", "| Lukavaya", "| NOLIMITS-TEAM", "| КинозалSAT", "| Hurtom", "| AndrewWhite", "| Neofilm", "| HQRips", "| MassTorr", "| NovaLan", "| BestSound ExKinoRay", "| Кинозал", "| ParadiSe", "| Lossless", "| ParadiSe Кинозал", "| Vaippp", "| GREEN TEA", "| KinoZalSat", "| VinylRip", "| Files-x", "| Xixidok", "| Japan mini-lp Remasters", "| olegek70", "| AniFilm", "| Torrent-Games", "| ivandubskoj", "| Traumer | Reloading", "| Freeisland", "| den904", "| R.G. GoldenShara | Extended", "| R.G. GoldenShara", "| SergV", "| Theatrical Cut", "| Director's Cut", "| Sergei7721", "| Релиз ®", "| Widok", "| KimVlad & ANDROZZZ", "| KINOREAKTOR", "| gegemaunt & Psycho-Share", "| 100 ТВ", "| ®", "| R.G.Packers", "| Snowrecords", "| R.G.Игроманы", "| egoleshik", "| R.G. RuTor", "| VIDEODB", "| BestSound", "| (AVO @PD)", "| Лье Ло", "| Riper AM", "| Smart's Studios & Onefilm", "| Smart's Studios", "| Onefilm", "| RipOnline", "| X-DIGITAL", "| Рипер ОК!", "| bvsbns", "| РиперАМ", "| ed_rez", "| Rip Spieler", "| Enigma-Vladislav71", "| R.G. Repacker's", "| & Ivnet-Cinema", "| R.G. Catalyst", "| R.G. Механики", "| R.G. Origami", "| RiperAM", "| КinoZalSat", "| DHT-Movies", "| Релиз", "| GENADIY", "| (VO-production)", "| КиноРай.ТВ", "| Хтабыч", "| Kosmos", "| Sheikn", "| BigFANGrop", "| AntiBobr", "| SatTV", "| СТС", "| R.G. Element Arts", "| xatab", "| Firebit-Films", "| q1q1", "| Кубик в Кубе", "| PROPER", "| DreamRecords", "| Theatrical Cut PROPER", "| SMALL-RiP", "| Firebit-Ретро", "| SHIZA [NIKITOS]", "| ELEMENT-TEAM", "| Сборка Урода", "| GoldenShara", "| SHIZA [ShadMG]", "| R.G.BlackBoX", "| Трактир", "| NewStudio", "| Extended Cut", "| Extended Edition", "| R.G.", "| Games-", "| ArtSound", "| Кино-Юм", "| KS", "| Razda4ka", "| Element-Team", "| HQ-VIDEO", "| SHIZA [ShadMG]", "| DXPort", "| Spieler", "| UNRATED", "| LOOK", "| ed rez", "| 3HR&Zer0", "| Киномагия", "| FireBit-Films", "| PowerTracker", "| Generalfilm", "| sYsTem", "| HDReactor", "| RG FaSt-ReLiSe", "| RuSub", "| Firebit-ретро", "| HiSound", "| Firebit-Music", "| FireBit", "| КомРина", "| Best-Music", "| R.G Repacker's",  "Suprug (BigFANGroup)", "OpenSharing", "HQ-ViDEO", "HELLYWOOD", "CGInfo", "Бультерьер", "HD-Te@m", "PlanetaUA", "LostFilm", "NovaFiLM", "Friends-Club", "Bumblebee", "INTERFILM", "25KADR", "Vvv", "HQCLUB", "UaTeam", "ExKinoRay", "AnimeReactor", "BigFANGroup", "FreeTorrents-UA", "FS-Media", "Dizell", "Lukavaya", "NOLIMITS-TEAM", "КинозалSAT", "Hurtom", "AndrewWhite", "Neofilm", "HQRips", "MassTorr", "NovaLan", "BestSound ExKinoRay", "Кинозал", "ParadiSe", "Lossless", "ParadiSe Кинозал", "Vaippp", "GREEN TEA", "KinoZalSat", "VinylRip", "Files-x", "Xixidok", "Japan mini-lp Remasters", "olegek70", "AniFilm", "Torrent-Games", "ivandubskoj", "Traumer | Reloading", "Freeisland", "den904", "R.G. GoldenShara | Extended", "R.G. GoldenShara", "SergV", "Theatrical Cut", "Director's Cut", "Sergei7721", "Релиз ®", "Widok", "KimVlad & ANDROZZZ", "KINOREAKTOR", "gegemaunt & Psycho-Share", "100 ТВ", "®", "R.G.Packers", "Snowrecords", "R.G.Игроманы", "egoleshik", "R.G. RuTor", "VIDEODB", "BestSound", "(AVO @PD)", "Лье Ло", "Riper AM", "Smart's Studios & Onefilm", "Smart's Studios", "Onefilm", "RipOnline", "X-DIGITAL", "Рипер ОК!", "bvsbns", "РиперАМ", "ed_rez", "Rip Spieler", "Enigma-Vladislav71", "R.G. Repacker's", "& Ivnet-Cinema", "R.G. Catalyst", "R.G. Механики", "R.G. Origami", "RiperAM", "КinoZalSat", "DHT-Movies", "Релиз", "GENADIY", "(VO-production)", "КиноРай.ТВ", "Хтабыч", "Kosmos", "Sheikn", "BigFANGrop", "AntiBobr", "SatTV", "СТС", "R.G. Element Arts", "xatab", "Firebit-Films", "q1q1", "Кубик в Кубе", "PROPER", "DreamRecords", "Theatrical Cut PROPER", "SMALL-RiP", "Firebit-Ретро", "SHIZA [NIKITOS]", "ELEMENT-TEAM", "Сборка Урода", "GoldenShara", "SHIZA [ShadMG]", "R.G.BlackBoX", "Трактир", "NewStudio", "Extended Cut", "Extended Edition", "R.G.", "Games-", "ArtSound", "Кино-Юм", "KS", "Razda4ka", "Element-Team", "HQ-VIDEO", "SHIZA [ShadMG]", "DXPort", "Spieler", "UNRATED", "LOOK", "ed rez", "3HR&Zer0", "Киномагия", "FireBit-Films", "PowerTracker", "Generalfilm", "sYsTem", "HDReactor", "RG FaSt-ReLiSe", "RuSub", "Firebit-ретро", "HiSound", "Firebit-Music", "FireBit", "КомРина", "Best-Music", "R.G Repacker's", "()", "[]");

// Подгружаем страницу релиза
$this_content = file_get_contents('http://opensharing.org/torrent/'.$releases_id.'/');

// Если не возможна открыть страницу берем следущую.
if(!$this_content)
{
    sql_query("UPDATE grab_open SET work='0' WHERE id = '".$result["id"]."'") or sqlerr(__FILE__, __LINE__);
    echo '<script>setTimeout(\'document.location.href="parser_open.php"\', 1000);</script>';
    echo 'Не могу открыть страницу - <font color=red><b>Ошибка</b></font>';
    die;
}

// Константа для название торрента
define('MD5XA', md5('http://opensharing.org/torrent/'.$releases_id.'/'));

// Узнаем будущий id роздачи
$query1 = mysql_query("SHOW TABLE STATUS LIKE 'torrents'");
$result1 = mysql_fetch_array($query1);
$next_id_torrent = $result1['Auto_increment'];

// Парсим название релиза
preg_match('/<title>(.*?)<\/title\>/is', $this_content, $title);

// Удаляем не нужные елементы
$name = trim(str_replace("OpenSharing.ORG :: ", "", $title[1]));

// Переконвертирование
$name = utf8_to_win($name);

// Если роздача не существует, переходим на следущую
if (stristr($name,'Раздача не существует!'))
{
    sql_query("UPDATE grab_open SET work='0' WHERE id = '".$result["id"]."'") or sqlerr(__FILE__, __LINE__);
    echo '<script>setTimeout(\'document.location.href="parser_open.php"\', 1000);</script>';
    echo '<b><font color=red>Даной раздачи не существует</font></b>.';
    die;
}

// В название релиза удаляем авторов,групы
$name = trim(str_replace($reliz, '', $name));

$name_count = get_row_count("torrents","WHERE name=".sqlesc($name));

// Если есть название релиза на сайте переходим к следуйщей роздачи
if($name_count)
{
    sql_query("UPDATE grab_open SET work='0' WHERE id = '".$result["id"]."'") or sqlerr(__FILE__, __LINE__);
    echo '<script>setTimeout(\'document.location.href="parser_open.php"\', 1000);</script>';
    echo '</br><b><font color=red>Данний релиз уже есть на сайте</font></b>.';
    die;
}

// Если название релиза пустое или минимум 3 символа - не парсим
if(empty($name) or strlen($name) < 3)
{
    echo '</br>Названние роздачи - <b><font color=red>не спарсировано</font></b>.';
    sql_query("UPDATE grab_open SET work='0' WHERE id = '".$result["id"]."'") or sqlerr(__FILE__, __LINE__);
    echo '<script>setTimeout(\'document.location.href="parser_open.php"\', 1000);</script>';
    die;
} else {
    echo '</br>Названние роздачи - <b><font color=green>спарсировано</font></b>.';
}

// Узнаем какая категория релиза на opensharing.org
preg_match_all('/<td>(.*?)<\/td>/is', $this_content, $cats);
$cats = strip_tags(utf8_to_win($cats[0][4]));

//Определяем категорию релиза
if (stristr($name,'DVDRIP') || stristr($cats,'Кино'))
    $catid="13"; /// Фильмы / AVI
elseif (stristr($cats,'телевизор') || stristr($name,'TVRip'))
    $catid="22"; /// TV / Документалки
elseif (stristr($cats,'Сериалы'))
    $catid="11"; /// Сериалы
elseif (stristr($cats,'Музыка') || stristr($name,'MP3') || stristr($name,'FLAC'))
    $catid="10"; /// Музыка / Мультимедиа
elseif (stristr($cats,'Игры'))
    $catid="5"; /// Игры / ПК
elseif (stristr($name,'Аниме'))
    $catid="12"; /// Аниме
elseif (stristr($name,'Мультипликация') || stristr($cats,'Мультипликация'))
    $catid="6"; /// Мультфильмы
elseif (stristr($name,'JPEG') || stristr($name,'JPG') || stristr($name,'HQ'))
    $catid="25"; /// Картинки / Фото
elseif (stristr($cats,'софт'))
    $catid="26"; /// Софт / Windows
elseif (stristr($name,'WMV') || stristr($name,'КПК') || stristr($name,'MP4'))
    $catid="18"; /// Клипы / Ролики / Приколы
elseif (stristr($cats,'книги') || stristr($name,'PDF'))
    $catid="16"; /// книги
elseif (stristr($name,'DVD'))
    $catid="15"; /// DVD / Фильмы
else
    $catid="4";

if($catid)
{
    echo '</br>Категория роздачи - <b><font color=green>определённа</font></b>.';
} else {
    echo '</br>Категория роздачи - <b><font color=red>не определённа</font></b>.';
}

//Парсим описание
preg_match('/<table id="details">(.*?)<\/table>/ius', $this_content, $table_details);
preg_match('/<td>(.*)<br \/><\/td><\/tr>/is', $table_details[0], $descr);

// Переконвертирование
$desc = utf8_to_win($descr[0]);

// Парсим постер релиза
preg_match("/<img.*?src=\"(http:\/\/[^()<>\s]+?)\"[^>]*?>/i", $desc, $poster);

$end_image=trim($poster[1]);
$uploaddir = ROOT_PATH."torrents/images/";

// Проверка на пустоту постера
if (!empty($end_image))
{
    $image=@file_get_contents($end_image);
    echo "</br>Постер - <b><font color=green>найден</font></b>.";
} else {
    echo "</br>Постер - <b><font color=red>не найден</font></b>.";
}

// Проверям постер
if (!empty($image))
{
    // Будущие название постера
    $ifileimg = $next_id_torrent.'.'.end(explode('.',$end_image));
   
    // Удаляем старый постер если таковой существует
    $posters = @unlink($uploaddir.$ifileimg);
   
    if($posters)
    {
    echo "</br>Старий постер - <font color=green><b>удален!</b></font>\n";
    }
   
    // Копируем постер
    if (!copy($end_image, $uploaddir.$ifileimg))
    {
       echo "</br><font color=red><b>Не удалось скопировать постер</b></font>\n";
    } else {
    echo "</br>Постер - <font color=green><b>скопирован</b></font>.\n";
    }
}
    //Ищем ссылки на скриншоты
    preg_match_all('/<a href="(.*?)"><img.*?><\/a>/i', $desc, $pic);
    //Ищем сами скриншоты
    preg_match_all("/<img.*?src=\"(http:\/\/[^()<>\s]+?)\"[^>]*?>/i", $desc, $pic11111);//<img.*?src=\"(.*?)\".*>

$link_image=array();
$xpio = 1;

// Вытягиваем все из массива
foreach ($pic[1] as $ksf)
{
    // Замена названий скриншотов для ipicture
    $array_html = array("jpg.html","gif.html","bmp.html","png.html","jpeg.html");
    $array_form = array("jpg","gif","bmp","png","jpeg");

    $ksf = trim(str_replace($array_html, $array_form, $ksf));
   
    // Для firepic проверка
    if(preg_match('/firepic\.org/i', $ksf, $firepic) )
    {
    // Подгружаем страницу
    $firepic_content = file_get_contents($ksf);
   
    // Находим изображенния
    if(preg_match('<img src=(.*?) alt="" width="">', $firepic_content, $firepic_link) )
    {
        // Заносим в переменую для дальнейшого использования
        $ksf = $firepic_link[1];
    } else {
        // Заносим в временную переменую
        $ksf = $ksf;
    }
    }
   
    // Узнаем розширенния скриншота
    if (list($width, $height) = @getimagesize($ksf))
    {
    // Если скриншот в ширену менше 300 и в висоту менше 150 не парсим скриншот
    if ($width>=300 && $height>=150 && $width>=$height)
    {
        // Заносим в переменую
        $link_image[$xpio] = $ksf;
        // Если 4 скриншота найденно перериваем парсинг скриншотов
        if ($xpio<5)
        {
        echo '</br>Скриншот (№'.$xpio.') спарсирован, размер('.$width.'x'.$height.') - <b><font color=green>Успешно</font></b>';
        }
        ++$xpio;
    }
    }
}

// Вытягиваем все из массива
foreach ($pic11111[1] as $ksf)
{
    // Для firepic проверка
    if(preg_match('/firepic\.org/i', $ksf, $firepic) )
    {
    // Подгружаем страницу
    $firepic_content = file_get_contents($ksf);
   
    // Находим изображенния
    if(preg_match('<img src=(.*?) alt="" width="">', $firepic_content, $firepic_link) )
    {
        // Заносим в переменую для дальнейшого использования
        $ksf = $firepic_link[1];
    } else {
        // Заносим в временную переменую
        $ksf = $ksf;
    }
    }
   
    // Для lostpic проверка
    if(preg_match('/lostpic\.net/i', $ksf, $lostpic) )
    {
    // Замена
    $ksf = str_replace("thumbs", "images", $ksf);
    }
   
    // Для 10pix проверка
    if(preg_match('/10pix\.ru/i', $ksf, $pix) )
    {
    // Замена
    $ksf = str_replace(".th", "", $ksf);
    }
   
    // Для ximages проверка
    if(preg_match('/ximages\.net/i', $ksf, $ximages) )
    {
    // Замена
    $ksf = str_replace("viewer.php?file=", "images/", $ksf);
    $ksf = str_replace("_thumb", "", $ksf);
    }
   
    // Для iceimg проверка
    if(preg_match('/iceimg\.ru/i', $ksf, $iceimg) )
    {
    // Замена
    $ksf = str_replace("dt", "di", $ksf);
    }
   
    // Для imageban проверка
    if(preg_match('/imageban\.ru/i', $ksf, $imageban) )
    {
    // Замена
    $ksf = str_replace("thumbs", "out", $ksf);
    }
   
    // Для twinpix проверка
    if(preg_match('/twinpix\.nu/i', $ksf, $twinpix) )
    {
    // Замена
    $ksf = str_replace("stamp", "full", $ksf);
    }
   
    // Узнаем розширенния скриншота
    if (list($width, $height) = @getimagesize($ksf))
    {
    // Если скриншот в ширену менше 300 и в висоту менше 150 не парсим скриншот
    if ($width>=300 && $height>=150 && $width>=$height)
    {
        // Заносим в переменую
        $link_image[$xpio] = $ksf;
        // Если 4 скриншота найденно перериваем парсинг скриншотов
        if ($xpio<5)
        {
        echo '</br>Скриншот (№'.$xpio.') спарсирован, размер('.$width.'x'.$height.') - <b><font color=green>Успешно</font></b>';
        }
        ++$xpio;
    }
    }
}

// Проверка на теги
preg_match_all('/<a href=\'(.*?)+tags.*?\'>(.*?)<\/a>/i', $desc, $ptags);

$array_tags = $ptags[2];

// Находим теги
if (count($array_tags))
{
    echo '</br>Теги для роздачи - <b><font color=green>найдены ('.count($array_tags).')</font></b>';
   
    // Удаляем дубликати тегов
    $array_tags = array_unique($array_tags);

    // Вытягиваем все из массива
    foreach ($array_tags as $tage)
    {
    // Удаляем пробелы, все символы переводим в нижний реестер
    $tage = tolower(trim(htmlspecialchars_uni($tage)));
   
    // Если нету тегов, продолжаем дальше
    if (!empty($tage))
    {
        echo '</br>Добавляен тег: <b>'.$tage.'</b>';
       
        // Добавляем теги
        sql_query("INSERT INTO tags (category, name, howmuch,added) VALUES (".sqlesc($catid).", ".sqlesc($tage).", 1, ".sqlesc(get_date_time()).")");
        sql_query("UPDATE tags SET howmuch=howmuch+1 WHERE name LIKE ".sqlesc($tage)) or sqlerr(__FILE__, __LINE__);
        $tags[] = $tage;
    }

    }
   
    // Проверка на теги
    if (count($tags))
    {
    // Все теги делаем через кому, и заносим в переменую
    $tags_sql = implode(",", $tags);
    }
} else {
    echo '</br>Теги для роздачи - <b><font color=red>не найдены</font></b>';
}

// <b> -
$desc = preg_replace('/<b>(.*?)<\/b\>/is', "[b]\\1
", $desc);
// <i> -
$desc = preg_replace('/<i>(.*?)<\/i\>/is', "[i]\\1
", $desc);
// <u> -
$desc = preg_replace('/<u>(.*?)<\/u\>/is', "[u]\\1
", $desc);
// <font size=> -
$desc = preg_replace('/<font size=(.*?)>(.*?)<\/font\>/is', "[size=\\1]\\2
", $desc);
// <font color=> - [color=]
$desc = preg_replace('/<font color=(.*?)>(.*?)<\/font\>/is', "[color=\\1]\\2[/color]", $desc);
// <font face=> - текст
$desc = preg_replace('/<font face=(.*?)>(.*?)<\/font\>/is', "\\2", $desc);
// <li> - [li]
$desc = preg_replace('/<li>/is', "[li]", $desc);
// <div> - текст
$desc = preg_replace('/<div.*?>(.*?)<\/div\>/is', "\\2", $desc);
// <textarea> - текст, спойлер можно сделать
$desc = preg_replace('/<textarea+(.*?)>(.*?)<\/textarea><\/div>/is', "\\2", $desc);
// <a href=(gif|jpg|jpeg|png)> - --[br]", $desc);
// <a href=> - $desc = preg_replace("/<a.*?href=\"(http:\/\/[^()<>\s]+?)\"[^>]*?>(.*?)<\/a>/i", "[url=\\1]\\2", $desc);
// <img src=(gif|jpg|jpeg|png)> - --[br]", $desc);
// <var title=(gif|jpg|jpeg|png)> - --[br]", $desc);
// <(td|tr)> - пусто
$desc = preg_replace('/<(.*?)(td|tr)>/', "", $desc);
// <a> - пусто
$desc = preg_replace('/<(\/a|a)+(.*?)>/', "", $desc);
// <br /> - пусто
$desc = str_replace("<br />", "", $desc);
// <br /><br /> - \n
$desc = str_replace("<br /><br />", "\n", $desc);
// <br /><br /><br /> - \n
$desc = str_replace("<br /><br /><br />", "\n", $desc);
// <br /><br /><br /><br /> - \n
$desc = str_replace("<br /><br /><br /><br />", "\n", $desc);

// Если нету описания к торренту переходим к следуйщему релизу
if (empty($desc))
{
    sql_query("UPDATE grab_open SET work='0' WHERE id = '".$result["id"]."'") or sqlerr(__FILE__, __LINE__);
    echo '<script>setTimeout(\'document.location.href="parser_open.php"\', 1000);</script>';
    echo '</br>Описания - <b><font color=red>пустое</font></b>.';
    die;
} else {
    echo '</br>Описания - <b><font color=green>спарсировано</font></b>.';
}

/**
*
* Функция:      get_torrent
* Автор:        VictoRD11 aka 6atafan~
* Дата:         17.01.2012
* Параметры:    (int) id, path
* Вернеться:    (string) infohash, size, count_files
*
**/
function get_torrent($id=false,$path) {

global $id_grab;

// Силка на скучку .torrent
$path = "/download/".$path."/";
// Торрент трекер
$host = "opensharing.org";

// Устанавливаем соединение
$fp = fsockopen($host, 80, $errno, $errstr, 25) or die("Нет подлючения в get_torrent функции .... <script>setTimeout('document.location.href=\"parser_open.php\"', 2000);</script>");
socket_set_timeout($fp,5,0);
   
// Проверяем успешность установки соединения

if ($fp) {
   
    // Данные HTTP-запроса
    $data = "";
    // Заголовок HTTP-запроса
    $headers = "GET $path HTTP/1.0\r\n";
    $headers .= "Host: $host\r\n";
    $headers .= "Connection: Close\r\n";
    $headers .= "\r\n";
   
    fwrite($fp, $headers.$data);
   
    while (!feof($fp))
    {
    $line = fgets(($fp), 1024);
    $date.=$line;
    }
   
    fclose($fp);
}

list($data_1,$data_2) = explode("\r\n\r\n", $date);

$ifilename = ROOT_PATH."torrents/txt/".MD5XA.".torrent";
$sf = $ifilename;

$fpsf = fopen($sf,"a+");
fputs($fpsf,$data_2);
fclose($fpsf);

if(@file_exists($sf))
{
    // Проверка розмера релиза
    if(filesize($sf) >= 1024000)
    {
    sql_query("UPDATE grab_open SET work='0' WHERE id = '".$id_grab."'") or sqlerr(__FILE__, __LINE__);
    @unlink($sf);
    echo "<script>setTimeout('document.location.href=\"parser_open.php\"', 1000);</script>";
    echo '</br> .torrent файл весит больше 1 мегабайта - <b><font color=red>Ошибка</font></b>';
    die;
    }
   
    $dict = bdec_file($sf, 1024000);
   
    list($info) = dict_check_t($dict, "info");
    list($dname, $plen, $pieces) = @dict_check_t($info, "name(string):piece length(integer):pieces(string)");

    $filelist = array();
    $totallen = @dict_get_t($info, "length", "integer");
    if (isset($totallen)) {
    $filelist[] = array($dname, $totallen);
    } else {
    $flist = @dict_get_t($info, "files", "list");
    $totallen = 0;
   
    if (count($flist)){
   
        foreach ($flist as $sf) {
        list($ll, $ff) = @dict_check_t($sf, "length(integer):path(list)");
        $totallen += $ll;
        $ffa = array();
        foreach ($ff as $ffe) {
            $ffa[] = $ffe["value"];
        }
        $ffe = implode("/", $ffa);
        $filelist[] = array($ffe, $ll);
        }
    }
    }

    $dict=@bdec(@benc($dict));
    @list($info) = @dict_check_t($dict, "info");
    $infohash = sha1($info["string"]);

    $size=0;
   
    if (!empty($totallen)){
    sql_query("DELETE FROM files WHERE torrent = '".$id."'");
       
    $count_files = 0;
       
    foreach ($filelist as $file)
    {
        $file[0] = utf8_to_win($file[0]);

        $size = $size + $file[1];
        // Добавленния в бд файлов
        sql_query('INSERT INTO files (torrent, filename, size) VALUES ('.$id.', '.sqlesc($file[0]).', '.sqlesc($file[1]).')') or sqlerr(__FILE__, __LINE__);
       
        $count_files++;
    }
    echo '</br> Перерасчет файлов в торренте - <b><font color=green>'.$count_files.' файлa(ов) добавлено</font></b>.';
    } else {
    @unlink(ROOT_PATH."torrents/txt/".MD5XA.".torrent");
    sql_query("UPDATE grab_open SET work='0' WHERE id = '".$id_grab."'") or sqlerr(__FILE__, __LINE__);
    echo "<script>setTimeout('document.location.href=\"parser_open.php\"', 1000);</script>";
    echo "</br>Размер .torrent 0кб. - <b><font color=red>Ошибка</font></b>";
    die;
    }

}

if (empty($infohash))
    $infohash = false;

return array($infohash, $size, $count_files);
}

// Проверка на хэш релиза
$torrent_hash = get_torrent($next_id_torrent, $releases_id);

// Если хеш не вернулся значить ввиводим ошибку и переходим к следуйщему релизу
if ($torrent_hash[0] == false)
{
    sql_query("UPDATE grab_open SET work='0' WHERE id = '".$result["id"]."'") or sqlerr(__FILE__, __LINE__);
    echo '<script>setTimeout(\'document.location.href="parser_open.php"\', 1000);</script>';
    echo '</br>.torrent файл не могу прочитать - <b><font color=red>Ошибка</font></b>';
    die;
}

echo '</br><b>Хеш релиза определен</b> : '.$torrent_hash[0];

$hash = get_row_count("torrents","WHERE info_hash=".sqlesc($torrent_hash[0]));

// Если хеш есть в бд переходим к следуйщему релизу
if($hash)
{
    sql_query("UPDATE grab_open SET work='0' WHERE id = '".$result["id"]."'") or sqlerr(__FILE__, __LINE__);
    echo '<script>setTimeout(\'document.location.href="parser_open.php"\', 1000);</script>';
    echo '</br><b><font color=red>Данний релиз уже есть на сайте</font></b>.';
    die;
}

// Удаляем постер
if (!empty($end_image))
{
    $desc = str_replace("--[br]", "", $desc);
}

// Удаляем Скриншоты
foreach ($link_image as $delete_image)
{
    $desc = str_replace("--[br]", "", $desc);
}

// Удаляем Скриншоты
if(count($link_image))
{
    $desc = str_replace("Скриншоты:", "", $desc);
    $desc = str_replace("Скриншоты:", "", $desc);
    $desc = preg_replace('#(\[img\]).*lostpic\.net/.*(\[/img\]\[br\])#i', '', $desc);
    $desc = preg_replace('#(\[img\]).*firepic\.org/.*(\[/img\]\[br\])#i', '', $desc);
    $desc = preg_replace('#(\[img\]).*10pix\.ru/.*(\[/img\]\[br\])#i', '', $desc);
    $desc = preg_replace('#(\[img\]).*ximages\.net/.*(\[/img\]\[br\])#i', '', $desc);
    $desc = preg_replace('#(\[img\]).*radikal\.ru/.*(\[/img\]\[br\])#i', '', $desc);
    $desc = preg_replace('#(\[img\]).*imageban\.ru/.*(\[/img\]\[br\])#i', '', $desc);
    $desc = preg_replace('#(\[img\]).*iceimg\.ru/.*(\[/img\]\[br\])#i', '', $desc);
    $desc = preg_replace('#(\[img\]).*twinpix\.nu/.*(\[/img\]\[br\])#i', '', $desc);
}

// Удаляем html теги
$desc = strip_tags($desc);
// \n\n - \n
$desc = str_replace("\n\n", "\n", $desc);
// \n\n\n - \n
$desc = str_replace("\n\n\n", "\n", $desc);
// \n\n\n\n - \n
$desc = trim(str_replace("\n\n\n\n", "\n", $desc));
// \n - пусто
$desc = trim(str_replace("\n", "", $desc));
// &nbsp; - пусто
$desc = str_replace("&nbsp;", "", $desc);
// - пусто
$desc = str_replace("", "", $desc);
// -- - пусто
//$desc = preg_replace("#\[url=.*?\][(\W)]?\[/url\]#i", "", $desc);
// Удаляем пробелы из описания в конце.
$descr = htmlspecialchars_uni(trim($desc));
// Удаляем пробелы из названия в конце.
$torrent = htmlspecialchars_uni(trim($name));

// Кто заливает релиз
$own = $CURUSER['id'];
// Отображать релиз
$visi = sqlesc("yes");
// Релиз проверин
$moderated = sqlesc("yes");
// Релиз мультитрекерный
$multut = sqlesc("yes");
// Информацыя о релизе
$torrent_com = get_date_time() . ' граббер торрентов (http://opensharing.org/torrent/'.$releases_id.'/).';

// Добавляем релиз в бд
$ret = sql_query("INSERT INTO torrents ( owner, moderated, moderatedby, moderatordate, visible, tags, image1, picture1, picture2, picture3, picture4, info_hash, size, numfiles, name, descr, torrent_com, category, added, last_action, multitracker) VALUES (" . implode(",", array_map("sqlesc", array($own, $moderated, $own, get_date_time(), $visi, $tags_sql, $ifileimg, $link_image[1], $link_image[2], $link_image[3], $link_image[4], $torrent_hash[0], $torrent_hash[1], $torrent_hash[2], $torrent, $descr, $torrent_com, $catid))) . ", '" . get_date_time() . "', '" . get_date_time() . "',".$multut.")") or sqlerr(__FILE__,__LINE__) ;

// Узнаем id релиза
$id = mysql_insert_id();

// Копируем торрент файл
$copy = @copy(ROOT_PATH.'torrents/txt/'.MD5XA.'.torrent', ROOT_PATH.'torrents/'.$id.'.torrent');

if (!$copy)
{
    echo '</br>Не могу скопировать торрент в папку - <b><font color=red>Ошибка</font></b>';
    echo '<script>setTimeout(\'document.location.href="parser_open.php"\', 1000);</script>';
} else {
    echo '</br>Торрент файл скопирован - <b><font color=green>Успешно</font></b>';
    }
// Релиз успешно спарсирован
sql_query("UPDATE grab_open SET work='0' WHERE id = '".$result["id"]."'") or sqlerr(__FILE__, __LINE__);
echo '<script>setTimeout(\'document.location.href="parser_open.php"\', 1000);</script>';
echo '</br>Релиз <a href="http://opensharing.org/torrent/'.$releases_id.'/">'.$torrent.'</a> успешно спарсирован на трекер <a href="'.$DEFAULTBASEURL.'/details.php?id='.$id.'">'.$torrent.'</a>';

// Статистика парсера
$arr = sql_query("SELECT COUNT(*) AS numgrab,(SELECT COUNT(*) FROM grab_open WHERE work='0') AS grabost FROM grab_open WHERE work='1'");
$row_arr = mysql_fetch_array($arr);

echo "</br><b>Завершенно</b>: ".number_format(100-number_format(100 * (1 - ($row_arr["grabost"] / ($row_arr["grabost"]+$row_arr["numgrab"]))),2),2)."% (<b>Спарсировано</b>:".number_format($row_arr["grabost"]).":<b>Осталось</b>:".number_format($row_arr["numgrab"]).":<b>Всего</b>:".number_format($row_arr["grabost"] + $row_arr["numgrab"]).")";

$seconds = (timer() - $tstart);
$seconds = substr($seconds, 0, 8);
// Генерация страницы
echo '</br>Генерация : <font color=green><b>'.$seconds.'</b></font>';

?>