- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Пожалуйста, помогите разобраться, не могу получить список ключевых слов от youtube.
Вот пример запроса, который эти ключевые слова отдает (tags)
https://www.googleapis.com/youtube/v3/videos?key=AIzaSyBOk9H_7v9BXEwB8RIign71H7ze2vFO1ao&fields=items(snippet(title,description,tags))&part=snippet&id=XvYOoNK0emw
Ниже функция при помощи которой я получаю title и description и сам ролик (на сайте title вывожу так: <?php echo Main::title() ?>...)
$part = "snippet,statistics";
$this->url = "https://www.googleapis.com/youtube/v3/videos?key={$this->config["key"]}&part=$part&videoEmbeddable=true&videoSyndicated=true&id=$id";
$data = $this->http(TRUE);
$data->items[0]->snippet->description = nl2br($data->items[0]->snippet->description);
if ($this->badwords($data->items[0]->snippet->title)==true) {
header("Location: {$this->config["url"]}");
exit;
}
return $data->items[0];
}
Помогите, пожалуйста, в функцию выше, верно прописать запрос на получение tags (keywords) и верно вывести на сайте с расставлением запятых (видимо так <?php echo Main::tags() ?>).
Спасибо!
"]Документация snippet.tags[]
---------- Добавлено 18.02.2017 в 15:56 ----------
Добавил строку
в результате получил Array вместо ключей.
---------- Добавлено 18.02.2017 в 16:21 ----------
Доработал класс
protected static $title = "";
protected static $description = "";
protected static $tags = "";
.......
/**
* Generate meta title
* @param none
* @return title
* @since v1.0
*/
public static function title(){
if(empty(self::$title)){
return self::$config["title"];
}else{
return self::$title;
}
}
/**
* Generate meta description
* @param none
* @return description
* @since v1.0
*/
public static function description(){
if(empty(self::$description)){
return self::$config["description"];
}else{
return self::$description;
}
}
/**
* Generate meta tags
* @param none
* @return tags
* @since v1.0
*/
public static function tags(){
if(empty(self::$tags)){
return self::$config["tags"];
}else{
return self::$tags;
}
}
по прежнему Array вместо ключей. :(
Что не так, не пойму.
по прежнему Array вместо ключей. :(
Что не так, не пойму.
не вникал, но может это массив ключей? что показывает var_dump()
Не знаю, верно сделал или нет, у меня var_dump() показывает это
https://i.gyazo.com/64d096f72c9de2499b6562ff5d9b386d.png
:)
Во-первых, не увидел в запрашиваемом урле части с fields=items(snippet(title,description,tags))
Но это ладно - возможно по дефолту теги и так отдаются.
Во вторых, после $data = $this->http(TRUE); сделайте
var_dump($data);
и посмотрите, что выводится, от этого и пляшите
var_dump($data); вывел ключи
Во-первых, не увидел в запрашиваемом урле части с fields=items(snippet(title,description,tags))
title,description я понял, что это отдается с помощью
if ($this->badwords($data->items[0]->snippet->title)==true) {
header("Location: {$this->config["url"]}");
exit;
}
из-за этого и добавил строку
$data->items[0]->snippet->tags = ($data->items[0]->snippet->tags);
смысл этой строки ноль) думаю у вас все получится, раз теги уже выводит.
Раз в ответе теги есть - то выводите их с помощью функции join() например.
Если делать что-то типа echo $arr; если $arr - массив - то вы слово Array на выходе и получите.
Т.е. Array и должно быть, осталось только верно вывести массив?
$arr=array('tags');
echo join(' ', $arr);
?>
Так выводит tags
Еще дописал функцию
* Get Meta data of URL
* @param url
* @return formatted array
*/
public static function get_meta_data($url){
$content=Main::curl($url);
if($content){
$array = array('title'=>'','description'=>'','tags'=>'');
$pattern = "|<[\s]*title[\s]*>([^<]+)<[\s]*/[\s]*title[\s]*>|Ui";
if(preg_match($pattern, $content, $match)){
$array['title']=$match[1];
}
$data=get_meta_tags($url);
if(isset($data['description'])){
$array['description']=$data['description'];
}
$data=get_meta_tags($url);
if(isset($data['tags'])){
$array['tags']=$data['tags'];
}
unset($data);
unset($content);
unset($match);
return $array;
}
return FALSE;
}
изменений нет.
вместо
$array['tags']=$data['tags'];
попробуйте
$array['tags']=join(",",$data['tags']);
Array выводит :(
Проверил, если на youtube нет ключей у видео, у меня в keywords отображаются ключи которые я прописал в config для tags.
Если у видео есть ключи, у меня Array
if(empty(self::$tags)){
return self::$config["tags"];
}else{
return self::$tags;
}
}
получается, что работает на половину?
Осталось разобраться, как вывести эти ключи.
Видимо проблема в том, что они отдаются не просто текстом а так:
"best",
............
"electro"
]
https://www.googleapis.com/youtube/v3/videos?key=AIzaSyBOk9H_7v9BXEwB8RIign71H7ze2vFO1ao&fields=items(snippet(title,description,tags))&part=snippet&id=XvYOoNK0emw