Тег mp3 для 7+

2.77K
.
(\/)____o_O____(\/)

ramzes, короч так, файл при обработке один раз качает, и далее его локально играет
архив кому интересно потестить

Прикрепленные файлы:
.
(\/)____o_O____(\/)

ramzes, тебе отдельно код для теста

методы (+/-)

protected function mp3Player($mp3) {
        return '<span class="green"><audio controls><source src="' . $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['SERVER_NAME'] . '/files/mp3/' . basename($mp3) . '"></audio></span>';
    }
    
    protected function downloadMp3($mp3) 
    {
        $dir = ROOT_PATH . 'files/mp3';
        if (!is_dir($dir)) {
            mkdir($dir, '0777', 1);
        } 
        
        $headers = get_headers($mp3, 1);
        $newfile = md5($mp3) . '.mp3'; // START_TIME
        
        if (!file_exists($dir . DIRECTORY_SEPARATOR . $newfile)) {
            if ($headers['Content-Type'] == 'audio/mpeg') {
                $uploadfil = new \SplFileObject($mp3, 'rb');
                $file = new \SplFileObject($dir . DIRECTORY_SEPARATOR . $newfile, 'w');
                $file->setFlags(\SplFileObject::SKIP_EMPTY);
                if ($file->flock(LOCK_EX)) { 
                    $file->ftruncate(0);
                    while (!$uploadfil->eof()) {
                        $file->fwrite($uploadfil->fgets());
                    }
                } 
                $file->flock(LOCK_UN);
            }
        }
        
        return (file_exists($dir . DIRECTORY_SEPARATOR . $newfile) ? $dir . DIRECTORY_SEPARATOR . $newfile : false);
    }
    
    protected function mp3($var) 
    {
        return preg_replace_callback(
            '#\[mp3](.+?)\[/mp3]#is',
            function ($matches) {
                $path = $this->downloadMp3(trim($matches[1]));
                return $path ? $this->mp3Player($path) : false;
            }, 
            $var,
            3
        );
    }

.

Koenig, эм....
а где тут обход их защиты? или у тебя качает и вк не палит?)

.
(\/)____o_O____(\/)

ramzes, ты попробовал? у меня норм качает

.
Koenig
(\/)____o_O____(\/)

ramzes, я ему ссылку из контакта
://cs1-40v4.vk-cdn.net/p21/ff0fc7118af047.mp3?extra=kjd-cGN3yLQcR4RDzY9bi2cUGiz_OYPhqaGXjp58qrRjcEg5FrDrUal-S5OpSb2_6-box3EQm2es--ZPjxc9nXVWx39vLIz9p6ejQ2iBtypF-KWUaEcamr-k2UgVCispbTtrn48tOckX

.

тогда понятно.. я не это имел ввиду.
это ты просто перешел по ссылке усложненным способом. треки по 20мб могут весить, хранить их у себя довольно накладно.
я имел ввиду генерацию хеша

.
Koenig
(\/)____o_O____(\/)

ramzes, ну они в норм качестве так и весят, я не говорю уже об часовых сетах, этот способ качает очень хитро, даже игнорит execution time , то есть кинешь ссылку на 1.5 Гб , оно его утянет, если пых собран как 64 битный, то думаю и более 2 гб файлы потянет

.
╭∩╮ (`-`) ╭∩╮

Кстати, класс переделал.
Теперь определения BBcode тэгов находятся в файле-конфиге и для переделки, или добавления новых тэгов не надо кромсать ядро системы.
Конфиг: https://github.com/john-cms/jo ... l.php
Класс: https://github.com/john-cms/jo ... 9-L50
https://github.com/john-cms/jo ... #L501
Там удален метод и опеределения тэгов берутся через DI контейнер из глобального конфига.

Надеюсь помните, что xxx.global.php это системные конфиги, которые трогать нежелательно, ибо могут измениться с последующим обновлением. Если надо что-то переписать, кидаете в папку с конфигами свой файл, но имеющий в названии не global а local. К примеру xxx.local.php
Файлы .local. грузятся ПОСЛЕ .global. и перезаписывают их значения.

Хотел вынести в конфиг еще и определения кнопок, но там дело сложнее и надо серьезно переписывать сам код, формирующий кнопки. А этим пока некогда было заниматься.

.
CyberGhostNet Group

Audio Player with javascript

Прикрепленные файлы:
Всего: 49