Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Информация о торрент файле в DLE 16.0?

Информация о торрент файле в DLE 16.0?


     11.06.2023    торрент, размер, информация о файле    Общие вопросы по PHP, Модули    341

вопрос
Доброго дня Всем.
Нужен рабочий модуль для DLE 16.0 который из торрент файла сможет вытащить всю информацию которую возможно, размер, названия и др.

Все что есть сейчас на просторах интернета ничего не работает с DLE 16.
Псевдо трекер пробовал, адаптировал его под php 8.1, отказывается работать показывает 0 b.
Пробовал другие библиотеки не помогает, видимо сами парсеры торрента уже изжились и не работают с новым php 8.1

Модуль трекер, который в продаже от 0-web под старую DLE и не уверен что подойдет к 16. по этому не решаюсь покупать, т.к. еще Автор сам не выходит на связь.

может, сможем совместными усилиями помочь, распарсить информацию в торрент файле и обновить так сказать модуль для DLE?)

Ответил: KoKauH


Пришлось полностью переписать код + добавил кэширование:


<?php
if (!defined('DATALIFEENGINE')) {
    die("Hacking attempt!");
}

global $row, $db, $config;

require_once ENGINE_DIR . '/modules/torrentparser/bencoded.php';

$news_id = 0; // Инициализируем переменную news_id

if (isset($row['id'])) {
    $news_id = intval($row['id']);
} elseif (isset($_GET['newsid'])) {
    $news_id = intval($_GET['newsid']);
}

// Получение информации о размере файла
$filesize_cache_key = 'filesize_cache_' . $news_id;
$filesize = dle_cache($filesize_cache_key, $config['skin']);

if (!$filesize) {
    $torrent_file = '';

    // Получение пути к торрент-файлу текущей новости
    $db->query("SELECT * FROM " . PREFIX . "_files WHERE news_id = {$news_id}");
    if ($db->num_rows()) {
        $file = $db->get_row();
        $torrent_file = ROOT_DIR . '/uploads/files/' . $file['onserver'];
    } else {
        // Обработка случая, когда торрент-файл не найден
        // Например, установка значения по умолчанию или вывод сообщения об ошибке
        $torrent_file = ""; // Задайте путь по умолчанию или обработайте иным способом
    }

    $torrent = new Torrent($torrent_file);
    $filesize = $torrent->size(2);

    create_cache($filesize_cache_key, $filesize, $config['skin']);
}

echo $filesize;
?>

1 комментарий

KoKauH
Юзер

KoKauH - 14 июня 2023 11:34 -

Немного посидев и посмотрев как работает я смог настроить вывод размера торрента в полную новость.
но столкнулся с проблема с выводом его в короткую новость.

вот код для извлечение информации в полной новости:
<?php

if (!defined('DATALIFEENGINE')) {
    die("Hacking attempt!");
}

require_once ENGINE_DIR . '/modules/torrentparser/bencoded.php';

$news_id = intval($_GET['newsid']); // Получение ID текущей новости

// Получение пути к торрент-файлу текущей новости
$db->query("SELECT * FROM " . PREFIX . "_files WHERE news_id = {$news_id}");
if ($db->num_rows()) {
    $file = $db->get_row();
    $torrent_file = ROOT_DIR . '/uploads/files/' . $file['onserver'];
} else {
    // Обработка случая, когда торрент-файл не найден
    $torrent_file = "";
}

$torrent = new Torrent($torrent_file);
$size = $torrent->size(2);

echo $size;

?>



вывод в шаблоне юзаю - {include file="engine/modules/kaztorka/torrent_size.php"}

в короткую новость выводиться размер - 0 octets
из кода bencoded.php

static public function format ( $size, $precision = 2 ) {
        $units = array ('octets', 'Kb', 'Mb', 'Gb', 'Tb');
        while( ( $next = next( $units ) ) && $size > 1024 )
            $size /= 1024;
        return round( $size, $precision ) . ' ' . ( $next ? prev( $units ) : end( $units ) );
    }

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх