Миниатюры видео youtube для instantcms 2

InstantCMS 2.X
#1 25 сентября 2018 в 13:15
Добрый день!

Надо сделать, что бы миниатюры от видео youtube подгружались автоматически и выводились в списках.

Мое виденье решение этой задачи, сделать кнопу рядом с стандартной кнопкой загрузки картинок.


При её нажатии будет автоматически парситься миниатюра от видео youtube, которое первое идет в редакторе.


Готов рассмотреть все предложения цены и сроки.
#2 25 сентября 2018 в 19:37
1. Файл /system/controllers/images/frontend.php. После строк

  1. if (!cmsUser::isLogged()) {
  2.  
  3. return $this->cms_template->renderJSON(array(
  4. 'success' => false,
  5. 'error' => 'auth error'
  6. ));
  7.  
  8. }
Вставить

  1. if($this->request->has($name)){
  2.  
  3. $mb_link = $this->request->get($name, '');
  4.  
  5. // ссылка на YouTube?
  6. if(preg_match('#(?:youtube\.com\/\S*(?:(?:\/e(?:mbed))?\/|watch\/?\?(?:\S*?&?v\=))|youtu\.be\/)([a-zA-Z0-9_-]{6,11})#ui', $mb_link, $matches) && !empty($matches[1])){
  7. $_POST[$name] = 'https://img.youtube.com/vi/'.$matches[1].'/maxresdefault.jpg';
  8. }
  9.  
  10. }
2. В настройках поля включить чекбокс "Разрешить добавление по ссылке".

3. При нажатии на "добавить по ссылке", вставляете туда ссылку на ролик YouTube.

4. Всё остальное делается автоматически.

Готов рассмотреть все предложения цены и сроки.

Гарри
500$, срок пол года.
#3 25 сентября 2018 в 22:54
Fuze, Огромнейшее спасибо!!!

Только там получается один нюанс. Если на конце ссылки указаны секунды
  1. https://www.youtube.com/watch?v=ССЫЛКА-НА-ВИДЕО&t=4s
то загружается картинка заглушка. Можно это как-то отфильтровать? Я сам в написание кода не очень силен(мягко сказать)
zst
#4 26 сентября 2018 в 08:45
Fuze, спасибо!
#5 26 сентября 2018 в 12:35

Если на конце ссылки указаны секунды

Гарри
Проверил по вашей ссылке, всё нормально загружается.
#6 26 сентября 2018 в 14:19


Проверил по вашей ссылке, всё нормально загружается.

Fuze

И правда. Оказалась загвоздка в другом. У некоторых видео оказывается миниатюры не всех размеров. Например вот это видео
www.youtube.com/watch?v=EF2LJgcrsY0

У него получаться нет миниатюр большого размера и загружается заглушка. Проверял через этот сервис www.fwait.com/online-youtube-thumbnail-grabber/

#7 26 сентября 2018 в 14:31
  1. if($this->request->has($name)){
  2.  
  3. $mb_link = $this->request->get($name, '');
  4.  
  5. // ссылка на YouTube?
  6. if(preg_match('#(?:youtube\.com\/\S*(?:(?:\/e(?:mbed))?\/|watch\/?\?(?:\S*?&?v\=))|youtu\.be\/)([a-z0-9_-]{6,11})#ui', $mb_link, $matches) && !empty($matches[1])){
  7.  
  8. $images = array(
  9. 'https://img.youtube.com/vi/'.$matches[1].'/maxresdefault.jpg',
  10. 'https://img.youtube.com/vi/'.$matches[1].'/sddefault.jpg',
  11. 'https://img.youtube.com/vi/'.$matches[1].'/hqdefault.jpg'
  12. );
  13.  
  14. foreach ($images as $ytimg) {
  15.  
  16. $h = get_headers($ytimg, true);
  17. $code = substr($h[0], 9, 3);
  18.  
  19. if((int)$code < 400){
  20. $_POST[$name] = $ytimg; break;
  21. }
  22.  
  23. }
  24.  
  25. }
  26.  
  27. }
#8 26 сентября 2018 в 14:45
Теперь всё загружается.

В идеале конечно, что бы была кнопка, которая подставляла первую ссылку на видео из редактора. А то пользователи сейчас ленивые или несообразительный пошли.

Может кто поможет реализовать, но пока и так будем пользоваться.

Fuze, Ещё раз огромное спасибо!!!
#9 24 сентября 2019 в 23:08
Подскажите как это реализовать в версии InstantCMS v2.12.2, а то там поменялся код в файле. Пробовал подставлять и миниатюра не появляется.
#10 24 сентября 2019 в 23:42
#11 25 сентября 2019 в 01:03
Вставил именно туда код. Миниатюра в записи появляется, а вот в списке вместо миниатюры серый блок


В поле вроде все настроено.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.