Sign in

Зарегистрируйтесь, чтобы стать полноправным участником сообщества Masterpro.ws.

2018-12-12

Is there a waterfall in Orion? No, but some of the dust in M43 appears similar to a waterfall on Earth. M43, part of the Orion Molecular Cloud Complex, is the often imaged but rarely mentioned neighbor of the more famous M42. M42, which includes many bright stars from the Trapezium cluster, lies above the featured scene. M43 is itself a star forming region and although laced with filaments of dark dust, is composed mostly of glowing hydrogen. The entire Orion field, located about 1600 light years away, is inundated with many intricate and picturesque filaments of dust. Opaque to visible light, dark dust is created in the outer atmosphere of massive cool stars and expelled by a strong outer wind of protons and electrons. Free Download: 2019 APOD Calendar (v4 with light background)

Astronomy Picture of the Day на вашем сайте. Продолжение

Продолжаем усовершенствовать код, предназначенный для получения актуальной астрономической "картинки дня" с сайта NASA; начало см. в статье Astronomy Picture of the Day на вашем сайте. Работая с API Astronomy Picture of the Day, внезапно мы с вами осознаем, что с сервера NASA может транслироваться вовсе не линк на изображение, а... ссылка на ролик Youtube, и наш с вами код обязан это учитывать. Можно, разумеется, ограничиться проверкой на наличие изображения в полученном JSON, и в случае отсутствия такового - рандомно показать одну из заранее заготовленных картинок; но мы ведь не ищем легких путей, не правда ли?

 

 

Прежде всего, хотелось бы извлечь из полученной ссылки Youtube - идентификатор видео, как это сделать? С этим вполне справляется следующее регулярное выражение:

 

preg_match('#(\.be/|/embed/|/v/|/watch\?v=)([A-Za-z0-9_-]{5,11})#', $YoutubeCode, $matches);
if(isset($matches[2]) && $matches[2] != ''){
$YoutubeCode = $matches[2];
}

 

, и теперь ID видео находится у нас в переменной $YoutubeCode. Отлично, полдела сделано; публикация ролика уже не вызывает никаких затруднений:

 

echo '<iframe src="https://www.youtube.com/embed/' . $YoutubeCode . '" type="text/html" width="640" height="360" frameborder="0"></iframe>';

 

Идем далее. Как проверить, содержит ли полученный JSON ссылку на изображение? Вариантов подобной проверки немало; в частности, fopen, этот способ описан на форуме, в топике, посвященном Extended weather informer. Wunderground.com, взгляните:

 

} elseif (!@fopen($obj->url, 'r')) {
$best_images = Array(

 

Ну и вот, приходим наконец к коду, который полностью показан, как всегда, на форуме; демка в начале страницы. Данный API, как уже отмечалось, имеет ярко выраженную тенденцию к перманентному изменению, поэтому... поэтому разговор, безусловно, не закончен. Заходите на огонек.

Оставить комментарий

Добавьте ваш комментарий