Приветствую всех!Уважаемые мастера прошу вашей пом

1. igrovik1 (30.06.2017 / 23:29)
Суть проблемы такова.
Нужен скрипт который бы по определённому запросу к нему выводил бы нужную информацию.

Пример:
К примеру запрос будет такой http:// мойсайт.ру/player/player.php?4568 (4568 к примеру ид с кинопоиска), так вот если по запросу будет найдена новость с таким ид кинопоиска то чтобы скрипт выдал в ответ плеер с этой новости. Как это можно организовать??? Если кто может дать код хотябы примитивный, буду весьма благодарен.

p/s движек Dle.
Заранее всем спасибо.

2. igrovik1 (01.07.2017 / 16:14)
horoshinkin, В php еще не очень силён, можно примерный код??
вот к примеру в админке дле будет доп поле с id кинопоиск, как мне это поле связать с данным кодом, чтобы после обращения к нему (http:// мойсайт.ру/player/player.php?4568) человеку было бы выведенно плеер??
Код плеера такой : <center> <div id="videoplayer176-1502" style="width:300px;height:340px;"></div>
<script type="text/javascript">this.player = new Uppod({m:"video",uid:"videoplayer176-1502",file:"здесь ссылка на видео",st:"uppodvideo176-1502"});</script>
</center>

3. Александр (01.07.2017 / 16:45)
На кинопоиске привязка к IP. Прямую ссылку на видео не взять.

https://s39e.storage.yandex.net/video-kinopoisk-trailers/8/4/data-0.1:9506058318:92632716?ts=000553451518fd94&sign=72ab24bbb560e98dd3804c0abf044e51f77ee919a74dfc96e3eacd51017b30d3

4. igrovik1 (01.07.2017 / 17:06)
Randy, Вы не поняли, смотрите к примеру у меня на моём сайте будет фильм Три богатыря на кинопоиске его ид 818570, и воту меня в админке будет дополнительное поле с этим ид 818570,
теперь когда у человека который поставит на свой сайт ссылку такого вида http:// мойсайт.ру/player/player.php?818570 должен вывестись мой плеер с моим видео ( то есть с фильмом Три богатыря) Такое используют видео базы типа moonwalk и им подобные.

Вот как это организовать не могу понять.

5. Александр (01.07.2017 / 18:35)
Если в PHP не шаришь, то только на заказ и кто работает с DLE. Как минум в БД нужно добавить все ID с кинопоиска, которые сооствествуют уже фильму у тебя на сайте/БД.

6. igrovik1 (01.07.2017 / 18:53)

Если в PHP не шаришь, то только на заказ и кто работает с DLE. Как минум в БД нужно добавить все ID с кинопоиска, которые сооствествуют уже фильму у тебя на сайте/БД.
Randy (Сегодня / 18:35)
В бд ид будут добавляться именно с доп поля, а вот как потом с бд вытянуть нужный ид?? и по нему вывести плеер.

Примерный код с которым думаю работать, нашарил в инете но в него нужно еще будет как-раз добавить функцию по поиску ид в бд и вывод плеера.Лан спасибо всем буду пытаться как-то.

Код api:
<?php
$status = 'OK';
$response = null;
$error = 0;
if(!isset($_GET['email'])){ // если не получили параметр
    $status = 'ERROR';
    $error = 1;
}else{
    $email = $_GET['email'];
    if(preg_match("|^[-0-9a-z_\.]+@[-0-9a-z_^\.]+\.[a-z]{2,6}$|i", $email)){ // проверяем корректрость e-mail
        $response = true;
    }else{
        $response = false;
    }
}
// массив для ответа
$result = array(
    'status' => $status,
    'response' => $response,
    'error' => $error,
);
echo json_encode($result); // ответ в формате json
?>
ссылка тогда получиться такая http://myService.ru/api.php?email=(здесь ид кинопоиск)
теперь мне нужно будет как-то после запроса этой ссылки http://myService.ru/api.php?email= 1234 в коде вытянуть ид кинопоиск прогнать его через бд, если найдется в бд поле со значением 1234, дать коду дальнейшее действие на вывод плеера. Что-то типа такого наверное буду делать.


Еще раз спасибо, за ответы.

7. Александр (01.07.2017 / 23:00)
igrovik1, что-то в этом роде ( с DLE ) не очень знаком. В корне создай файл


define('DATALIFEENGINE', true);
		define('AUTOMODE', true);
		define('LOGGED_IN', true);

		define('ROOT_DIR', dirname (__FILE__));
		define('ENGINE_DIR', ROOT_DIR.'/engine');
		
		require_once ENGINE_DIR.'/classes/mysql.php';
		require_once ENGINE_DIR.'/data/dbconfig.php';
		require_once ENGINE_DIR.'/data/config.php';
		require_once ENGINE_DIR.'/inc/include/functions.inc.php';
 
 $id_kinopisk = int($_GET['id']);
 
$channels = $db->get_row($db->query("SELECT * FROM `dle_channels` WHERE `id` = '".$id_kinopisk."';"),0); // или $db->get_row("SELECT * FROM `dle_channels` WHERE `id` = '".$id_kinopisk."';");

echo $channels['id_zapisi_iz_pole'];

будет выводить ID: site.com/kinopoisk.php?id=ИД

8. igrovik1 (01.07.2017 / 23:02)
Randy, Спасибо, буду пробовать.

9. igrovik1 (01.07.2017 / 23:24)
Randy, Если я понял будет выводить именно ссылку site.com/kinopoisk.php?id=ИД????
Мне немного иное нужно чтобы с этого url site.com/kinopoisk.php?id=ИД скрипт выдирал именно ИД и проверял его в базе если такой Ид будет найден то скрипт отдает человеку ссылку на видео с иного поля (поле video) то есть ссылку на видео файл.

10. Александр (02.07.2017 / 00:01)
igrovik1, новый запрос в БД и подставляй $channels['id_zapisi_iz_pole'], если данные с доп. поля хранятся не в одной таблице, если в одной, то:



define('DATALIFEENGINE', true);
		define('AUTOMODE', true);
		define('LOGGED_IN', true);

		define('ROOT_DIR', dirname (__FILE__));
		define('ENGINE_DIR', ROOT_DIR.'/engine');
		
		require_once ENGINE_DIR.'/classes/mysql.php';
		require_once ENGINE_DIR.'/data/dbconfig.php';
		require_once ENGINE_DIR.'/data/config.php';
		require_once ENGINE_DIR.'/inc/include/functions.inc.php';
 
 $id_kinopisk = int($_GET['id']);
 
$video = $db->get_row($db->query("SELECT * FROM `dle_post` WHERE `pole` = '".$id_kinopisk."';"),0); // или $db->get_row("SELECT * FROM `dle_post` WHERE `pole` = '".$id_kinopisk."';");


echo $video['video'];



11. Nervous (02.07.2017 / 00:05)
А я вот понял что у него id прописаны в базе, он их через админку добавляет.
Автор к тебе вопрос, тебе нужно чтобы было так твойсайт/video/id=5454645/ ну типа так, чтобы этот id 5454645 выводился на этой же странице? Как бы так страница с id например 4545 то и плеер в ней выводил id 4545 с кинопоиска верно ?

12. Александр (02.07.2017 / 00:08)
Отрешенный NERVOUS., не. Ему нужно вытащить ID из БД из доп поле от кинопоиска и потом если ID есть, то вывести уже из поле video видос

13. igrovik1 (02.07.2017 / 00:13)
Отрешенный NERVOUS., Не немного не так .Смотри знаешь такое moonwalk??? или getmovie?? Мне что-то подобное нужно как у них, то есть они дают человеку ссылку типа <script type="text/javascript" src="//сайт.ру/api/videos.js?тут_id_кинопоиска"></script>
<div id="getmovieplayer"></div> ну у них это идёт через api как я понял, но так как финансовый план мне не позволяет нанять кодера для написания api вот и ищу иное решение, для раздачи плеера.

14. Александр (02.07.2017 / 00:20)
igrovik1, ну так выше код я дал, будет выводить ссылку на видео, которая хранится в поле video. Тебе надо тогда прописать еще:

вместо echo $video['video'];
Header('Location: '.$video['video']);

И при запросе будет редиректить на видеофайл (или код плеера пропиши и вставь $video['video'] на видеофайл) и при запросе site.com/kinopoisk.php?id=ИД будет выводить плеер.

15. igrovik1 (02.07.2017 / 00:22)
Randy, Данные из доп полей в Dle хранятся в таблице post -->xfields как понял вытягиваю их такой функцией xfieldsdataload

Пример:

require_once __DIR__ . "/engine/api/api.class.php";
require_once ENGINE_DIR . '/modules/functions.php';

$field = 'имя доп поля';

$rows = $db->super_query( "SELECT xfields FROM ".PREFIX."_post", true );
$found = array();
foreach( $rows as $row )
{
$x = xfieldsdataload( $row['xfields'] );
if( $x[$field] ) $found[] = $x[$field];
}
$found = array_unique( $found );
natcasesort( $found );
$ty = join("\n<br/>", $found );

echo $ty;

16. Александр (02.07.2017 / 00:25)

Randy, Данные из доп полей в Dle хранятся в таблице post -->xfields как понял вытягиваю их такой функцией xfieldsdataload

Пример:

require_once __DIR__ . "/engine/api/api.class.php";
require_once ENGINE_DIR . '/modules/functions.php';

$field = 'имя доп поля';

$rows = $db->super_query( "SELECT xfields FROM ".PREFIX."_post", true );
$found = array();
foreach( $rows as $row )
{
$x = xfieldsdataload( $row['xfields'] );
if( $x[$field] ) $found[] = $x[$field];
}
$found = array_unique( $found );
natcasesort( $found );
$ty = join("\n<br/>", $found );

echo $ty;
igrovik1 (Сегодня / 00:22)
Зачем ты прицепился к этому API?

17. igrovik1 (02.07.2017 / 00:29)
Randy, Да что-то мне кажется что немного не то так как данные из доп полей содержаться в post -->xfields, и в этом xfields может содержаться до 10 доп полей то есть год, режиссер, актеры, и т.д и т.п то есть если я сделаю такой запрос $video = $db->get_row($db->query("SELECT * FROM `dle_post` WHERE `xfields` = '".$id_kinopisk."';"),0); то он будет скорее всего брать все что находиться в xfields. Или я ошибаюсь????

Добавлено через 01:56 сек.
Randy, Да некоторые говорили что это (то есть такая раздача плеера другим сайтам) делается только через api и никак иначе, вот и думаю.

18. Александр (02.07.2017 / 00:32)

Randy, Да что-то мне кажется что немного не то так как данные из доп полей содержаться в post -->xfields, и в этом xfields может содержаться до 10 доп полей то есть год, режиссер, актеры, и т.д и т.п то есть если я сделаю такой запрос $video = $db->get_row($db->query("SELECT * FROM `dle_post` WHERE `xfields` = '".$id_kinopisk."';"),0); то он будет скорее всего брать все что находиться в xfields. Или я ошибаюсь????
igrovik1 (Сегодня / 00:29)
Этого я не знаю... сейчас не могу посмотреть

19. igrovik1 (02.07.2017 / 00:34)
Randy, Ясно, ну попробую если получится скомпонировать все что ты написал, мож и получиться таким образом.

20. Александр (02.07.2017 / 00:34)

Добавлено через 01:56 сек.
Randy, Да некоторые говорили что это (то есть такая раздача плеера другим сайтам) делается только через api и никак иначе, вот и думаю.
igrovik1 (Сегодня / 00:29)

Да нет

Добавлено через 01:14 сек.

Randy, Ясно, ну попробую если получится скомпонировать все что ты написал, мож и получиться таким образом.
igrovik1 (Сегодня / 00:34)
Тебе главное поле нужно подствить, чтобы ID искался

21. igrovik1 (02.07.2017 / 00:47)
Randy, По твоему примеру выбивает такое Fatal error: Call to undefined function int() in W:\domains\test\kinopoisk.php on line 14 Мож я что не так делаю:-(?

Или все же нужно к xfields делать запрос примерно такого типа как я приводил??

Типа так:
$field = 'txt';

$rows = $db->super_query( "SELECT xfields FROM ".PREFIX."_post", true );
$found = array();
foreach( $rows as $row )
{
$x = xfieldsdataload( $row['xfields'] );
if( $x[$field] ) $found[] = $x[$field];
}
$found = array_unique( $found );
natcasesort( $found );
$ty = join("\n<br/>", $found );

echo $ty; ????

Но как это все связать тогда во едино??? Ппц голова вообще не варит:-(

22. Александр (02.07.2017 / 02:00)
igrovik1, Ты просто зарашиваешь файл kinopoisk.php без передачи ID (kinopoisk.php?id=1234).
Замени
$id_kinopisk = int($_GET['id']);
на
$id_kinopisk = intval($_GET['id']); 

if ($id_kinopisk)
{
// сюда остальные данные помести, запрос в БД, вывод из БД
}
else
{
echo 'Ошибка';
}


23. igrovik1 (03.07.2017 / 16:38)
Randy, Ничего у меня не получается:-(

24. igrovik1 (03.07.2017 / 21:42)
Вот один человек дал код как он сказал под эти нужды самое оно, ну как с ним работать не пойму:-(
Как в него передать запрос с ссылки сайт.ру?kinopoisk.php?id=1234 и каким образом уже забирать нужное??? На данный вопрос ответа от него не последовало:-(

25. igrovik1 (03.07.2017 / 21:44)
<?php

$xfield = empty($xfield) ? $db->safesql( htmlspecialchars(strip_tags( trim( $xfield ) ), ENT_QUOTES, $config['charset'] ) ) : false;
if (!$xfield) {
    return;
}

$field = empty($field) ? $db->safesql( htmlspecialchars(strip_tags( trim( $field ) ), ENT_QUOTES, $config['charset'] ) ) : false;

if (!$field) {
    return;
}

$cache = $xfield . $field;
$allow_cache = ($config['version_id'] >= '10.2') ? $config['allow_cache'] == '1' : $config['allow_cache'] == "yes";

if (!$allow_cache) {
    if ($config['version_id'] >= '10.2')
        $config['allow_cache'] = '1';
    else
        $config['allow_cache'] = "yes";
    $is_change = true;
}

$xflist = dle_cache("news", $config["skin"] . $cache, false);

if ($xflist) {
    echo $xflist;
    return;
}

if (trim($xfield) != "") {
    $where_str_xfield = "CHARACTER_LENGTH(SUBSTRING_INDEX( SUBSTRING_INDEX( xfields,  '{$xfield}|', -1 ) ,  '||', 1 )) > 0 AND SUBSTRING_INDEX( SUBSTRING_INDEX( xfields,  '{$xfield}|', -1 ) ,  '||', 1 ) NOT LIKE '%|%' AND CHARACTER_LENGTH(SUBSTRING_INDEX( SUBSTRING_INDEX( xfields,  '{$field}|', -1 ) ,  '||', 1 )) > 0 AND SUBSTRING_INDEX( SUBSTRING_INDEX( xfields,  '{$field}|', -1 ) ,  '||', 1 ) NOT LIKE '%|%'";
    $select_str_xfield = "SUBSTRING_INDEX( SUBSTRING_INDEX( xfields,  '{$field}|', -1 ) ,  '||', 1 ) as xf_{$field}";
}
else {
    return;
}

if (!$field) {
    return;
}

$thisdate = date ( "Y-m-d H:i:s", time () );
if($config['no_date'] && !$config['news_future'])
    $where_date = " AND date < '" . $thisdate . "' ";
else
    $where_date = "";

$db->query("SELECT {$select_str_xfield} FROM " . PREFIX . "_post WHERE approve=1 {$where_date} AND {$where_str_xfield}");

$xflist = array();

while ($row = $db->get_row()) {
    if (!isset($xflist[$row["xf_{$field}"]])) {
        $xflist[$row["xf_{$field}"]] = $row["xf_{$field}"];
    }
}
$xf_list = implode($xflist);
create_cache("news", $xf_list, $config["skin"] . $cache, false);

if ($is_change) {
    $config['allow_cache'] = false;
}

echo $xflist;
$db->free();
?>


26. Александр (03.07.2017 / 23:31)
igrovik1, я с DLE не знаком. Может кто подскажет.

27. igrovik1 (04.07.2017 / 13:54)
Randy, Спасибо хоть и на этом:-)

28. igrovik1 (04.07.2017 / 23:28)
Randy, А можно тогда к тебе другой вопрос???
С таким нюансом не получается у меня сделать раздачу.А как можно тогда сделать чтобы раздача была такого типа сайт.ру/player/{id новости на своем сайте} то есть типа как здесь http://datalock.ru/player/15628. На сайте данного плеере пишут такое http://uppod.ru/help/q=embed-html5 А как тогда это сделать:-( Хоть так бы сделать раздачу:-) Заранее спасибо за любой ответ.

29. Александр (05.07.2017 / 00:13)
igrovik1, задай на форуме uppod.ru этот вопрос, должны ребята ответить.

30. igrovik1 (05.07.2017 / 00:18)
Randy, Да я почитал почти все кто задает такое вопрос получают тот же ответ что я привел в примере в ссылке!

31. Александр (05.07.2017 / 00:48)
igrovik1, я тоже привел тебе пример smile Тут выдергиваешь данные из БД и вставляешь ссылку на видеофайл в код плеера и будет запрос как раз site.com/kinopoisk.php?id=1234

32. igrovik1 (05.07.2017 / 00:56)
Randy, Да я не спорю, ну суть в том что в Дле в базе данные с доп полей содержаться в таблице xfileds и как мне сказали чтобы их вытянуть нужно сделать разбор этой таблицы функцией xfieldsdataload или же так как я тебе выше писал, а простым запросом говорят не обойтись:-(

33. igrovik1 (05.07.2017 / 19:45)
Randy, Все спасибо за то что предоставлял помощь, нашел код который выводит плеер таким образом сайт.ру/player.php?1234 . Вот сейчас застрял еще над одной проблемой, нужно в плеер загнать ссылку на видео через переменную $video на флеш плеере вставлялось норм, а вот на эту хрень
<center> <div id="videoplayer176-1502" style="width:300px;height:340px;"></div>
<script type="text/javascript">this.player = new Uppod({m:"video",uid:"videoplayer176-1502",file:"$video",st:"uppodvideo176-1502"});</script>
            </center>
не хочет так :-(
Код запроса к базе и вывода нужного содержимого (Может кому-то тоже пригодиться):
<?php

@error_reporting(E_ALL ^ E_WARNING ^ E_DEPRECATED ^ E_NOTICE);
@ini_set('error_reporting', E_ALL ^ E_WARNING ^ E_DEPRECATED ^ E_NOTICE);

@ini_set('display_errors', true);
@ini_set('html_errors', false);

define('DATALIFEENGINE', true);
define('ROOT_DIR', dirname(__FILE__));
define('ENGINE_DIR', ROOT_DIR.'/engine');

$search_data = trim(strip_tags($_SERVER['QUERY_STRING']));

if (empty($search_data)){
    die();
}

include(ENGINE_DIR.'/data/config.php');

require_once ENGINE_DIR.'/classes/mysql.php';
require_once ENGINE_DIR.'/data/dbconfig.php';
require_once ENGINE_DIR.'/modules/functions.php';

$xfields_search_name = 'imya'; //Имя доп. поля в котором искать
$xfields_print_name = 'info'; //Имя доп. поля которое выводить

$posts = $db->super_query("SELECT xfields FROM ".PREFIX."_post WHERE xfields LIKE '%".$db->safesql($xfields_search_name)."|".$db->safesql($search_data)."%'", true);

foreach ($posts as $post) {
    $xfieldsdata = xfieldsdataload($post['xfields']);
    if (isset($xfieldsdata[$xfields_print_name])) {
        echo $xfieldsdata[$xfields_print_name].'<br>';
    }
}
?>


34. igrovik1 (05.07.2017 / 22:10)
И с плеером решил проблему, может кому пригодиться, не знаю верно сделано или нет но то что мне нужно было я добился:-)

Код плеера:
echo '<center> <div id="videoplayer176-1502" style="width:300px;height:340px;"></div>
<script type="text/javascript">this.player = new Uppod({m:"video",uid:"videoplayer176-1502",file:"';echo "$s"; echo '",st:"uppodvideo176-1502"});</script>
            </center>';


35. Александр (07.07.2017 / 12:51)
Только, например флешку лучше отдавать. На Opera 12.x не работает HTML5.

36. igrovik1 (07.07.2017 / 13:56)
Randy, Привет, ну говорят что флешка нынче не хорошо, что нужно отдавать html 5.

URL: https://visavi.net/topics/43633