LinuxForum.Fans
Тема

Переменные в bash

Автор: ew-bolgow 20 сообщений 2226 просмотров
#387190

Здравствуйте. Пытаюсь запустить youtube-dl с php файла.В php из формы получаю $url. Пробовал

text
 ob_start();     
    passthru('youtube-dl '.$url);   
    ob_end_clean();

Не работает. Записал эту команду в bash

text
#!/bin/bash
$url=`php "/home/nik/ubuntu2/www/components/videos/frontend.php"`
youtube-dl $url

тоже не работает. $url не передаётся. Подскажите как правильно сделать.

#387195

А так если попробовать?

#!/bin/bash
url=$(/usr/bin/php /home/nik/ubuntu2/www/components/videos/frontend.php)
youtube-dl $url

#387197

Так тоже не работает,пишет

text
youtube-dl: error: you must provide at least one URL

Попоробовал так

text
url=$"(/usr/bin/php /home/nik/ubuntu2/www/components/videos/frontend.php)"

Выдало

text
WARNING: The url doesn't specify the protocol, trying with http
...
#387198

А что записано в $url не пробовал посмотреть?

#387199

Где? В php приходит что и надо-адрес, а в bash ничего не приходит.Из php bash вызываю так:

text
$url = isset($_GET['download']) ? trim($_GET['download']) : '';
    if($url){
    // print_r($url);
    ob_start();     
    passthru('/home/nik/youtube.sh' );   
    ob_end_clean();
    }
    else{
    echo 'ERROR';
    }

Может здесь, что не так?

#387211

Я имел ввиду - что записывается в $url в bash скрипте, а не php.

#387213
"ew-bolgow" написал:
Выдало

WARNING: The url doesn't specify the protocol, trying with http
...
text

#!/bin/bash
url=$(/usr/bin/php /home/nik/ubuntu2/www/components/videos/frontend.php)
echo $url
youtube-dl $url

Посмотрите, что попадает в переменную $url.

Что у вас вот в этом скрипте: /home/nik/ubuntu2/www/components/videos/frontend.php.

Вы уверены, что он возвращает правильные ссылки для скачивания?

#387218

В /home/nik/ubuntu2/www/components/videos/frontend.php см.пост 5. Ссылка в $url правильная. В bash в $url нет ничего (youtube-dl: error: you must provide at least one URL)
echo $url в bash ничего не выводит. Пустая страница. Как будто

text
  passthru('/home/nik/youtube.sh' );

не работает. Если подставляю адрес в bash и запускаю из мс то всё ок.

#387225
"ew-bolgow" написал:
$url = isset($_GET['download']) ? trim($_GET['download']) : '';
if($url){
// print_r($url);
ob_start();
passthru('/home/nik/youtube.sh' );
ob_end_clean();
}
else{
echo 'ERROR';
}

Может здесь, что не так?

Может и не так, т.к. без аргумента функция passthru() лишь выводит результат в браузер.

#387231

Пробовал и exec() и system(). У меня в другом месте ffmpeg режет превьюшки, тоже использую данную конструкцию, только без bash. И всё работает. А с youtube-dl не хочет. Может как по другому bash запускать можно из файла?

#387233

Да здесь делов-то, кот наплакал - разобраться - почему не выдается ссылка в скрипт. Если напрямую запустить в консоли:
/usr/bin/php /home/nik/ubuntu2/www/components/videos/frontend.php
выдастся ссылка? или что выдается?
Да, нужен толковый специалист по php, остались примитивные предположения:
Если так попробовать:
passthru('/bin/sh /home/nik/youtube.sh' );

Плюс дописать полный путь к youtube-dl: /usr/bin/youtube-dl

#387236

Попробую всё удалить и начать по новой.Вчера, поставил утилиту сначало на десктоп,проверил, работает. Ставлю на сервер не работает. До этого апгредился. Перезагрузился, апдейт, заработало. Сегодня всё по новой. На пк работает, а на сервере и с терминала перестала. И главное на каком то этапе, работало,( нашёл в папке в компоненте скаченный ролик ). Попобую переустановить.

#387247
JonnyBekoff написал:
Да здесь делов-то, кот наплакал - разобраться - почему не выдается ссылка в скрипт. Если напрямую запустить в консоли:
/usr/bin/php /home/nik/ubuntu2/www/components/videos/frontend.php

напрямую не могу.Там кроме этого куча кода. Но суть не в этом. На данный момент настроил на другом сервере. В таком виде

text
 ob_start();     
    exec('youtube-dl  '.$url );   
    ob_end_clean();

работает. Дело было в пробеле между youtube-dl и $url, в выводе его не было, а должен был быть. Но так, вроде как не правильно, нужно с bash вызывать. А вот с bash не хочет работать ни с какими путями. *WALL*

#387251
"ew-bolgow" написал:
А вот с bash не хочет работать ни с какими путями

Даже если к: passthru('/home/nik/youtube.sh') дописать $url ?, т.е.:
passthru('/bin/sh /home/nik/youtube.sh', $url)

Если опять не поможет, то включи вывод ошибок (хотя может быть и не покажет толком ничего):
error_reporting(E_ALL);
ini_set('display_errors',1);

#387253

Забыл сказать - последней строкой вывести ее: var_dump($url);

#387268

Короче, я сдаюсь. Ничего не выходит. Оставлю пока без баша. Буду пробовать другую утилиту.
var_dump($url); выводит string(27) http://...
Не хочет запускаться и ладно. Со временем разберусь. Ума поднабирусь пока. Спасибо за участие.

#387480

А вас не смущает, что youtube-dl - это python-сценарий? И да, о притязаниях копирастов вас предупредили.

#387537
yars написал:
А вас не смущает, что youtube-dl - это python-сценарий?

Теперь смущает.

yars написал:
И да, о притязаниях копирастов вас предупредили.

Это вы о чём, что то я не понял?

#387573

Это вы о чём

О том, что видео на youtube кому-то принадлежит, а не находится в общественном достоянии, увы.

#387621

Зачем же так строго. На ютубе ролики как раз и являются общественным достоянием, если правила их копирования не оговорены правообладателем. Многие блоги, сайты ими пестрят.

Войдите или зарегистрируйтесь, чтобы ответить.