Sign in

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

2018-10-21

A meteor, a comet, and a photogenic nebula have all been captured in this single image. The closest and most fleeting is the streaking meteor on the upper right -- it was visible for less than a second. The meteor, which disintegrated in Earth's atmosphere, was likely a small bit of debris from the nucleus of Comet 21P/Giacobini-Zinner, coincidentally the comet captured in the same image. Comet 21P, pictured across the inner Solar System from Earth, is distinctive for its long dust tail spread horizontally across the image center. This comet has been visible with binoculars for the past few months but is now fading as it heads back out to the orbit of Jupiter. Farthest out at 3,500 light years distant is the IC 2177, the Seagull Nebula, visible on the left. The comparatively vast Seagull Nebula, with a wingspan on order 250 light-years, will likely remain visible for hundreds of thousands of years. Long exposures, taken about two weeks ago from Iwaki-City in Japan, were combined to capture the image's faintest elements. You, too, could see a meteor like this -- and perhaps sooner than you might think: tonight is the peak of the Orionids meteor shower.

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, как уже отмечалось, имеет ярко выраженную тенденцию к перманентному изменению, поэтому... поэтому разговор, безусловно, не закончен. Заходите на огонек.

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

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