×
New project by Yuriy Vdovytchenko (01 март 2017)

ITCOD WEB DESKTOP - следующий этап развития проекта ITCOD.

Astronomy Picture of the Day

Больше
1 год 10 мес. назад - 1 год 10 мес. назад #1 от Aleksej
Аннотация статьи блога Astronomy Picture of the Day на вашем сайте ;
здесь же публикую два скрипта, о которых речь по ссылке.
Первый; предоставляет возможность получения изображений с NASA'S DATA PORTAL помимо API, но требует PHP Simple HTML DOM Parser :


<?php
function randomImage(){
  $best_images = Array( 
		"http://apod.nasa.gov/apod/image/1210/geyseraurora_howell_2163.jpg",
		"http://apod.nasa.gov/apod/image/1210/meteorviolet_salomonsen_1200.jpg", 
		"http://apod.nasa.gov/apod/image/1010/hartley2pacman_fernandez.jpg",
		"http://apod.nasa.gov/apod/image/1007/ISS023-E-58455lrg.jpg"
	);
	return $best_images[rand(0, count($best_images)-1)];
}
function isNotFound($url){
	$response = get_headers($url, 1);
	$response = explode(" ", $response[0]);
	$response = $response[1];
	if ($response=="404") return true;
	else return false;
}
include('simple_html_dom.php');
$url="http://apod.nasa.gov";
$html=file_get_html($url);
$img = $html->find('img', 0)->parent->href;
if ($img=='') $img = randomImage();
else{
	$img="http://apod.nasa.gov/apod/".$img;
	if (isNotFound($img)) $img = randomImage();
}
header("location: ".$img); 
?>


; и второй, уже разобранный на форуме. Вкупе со стилями он может выглядеть у вас следующим образом... или же как-то иначе:


<?
$json = file_get_contents('https://api.data.gov/nasa/planetary/apod?concept_tags=True&api_key=VASH_API_KEY');
$obj = json_decode($json);
?>

<style type="text/css">
.exp {
font-style: italic;
}
.img_apod img {
width: 600px;
}
</style>

<div class="img_apod"><?='<img src="' . $obj->url . '"/>';?></div>
<p> </p>
<div class="exp"><?=($obj->date);?></div>
<div class="exp"><?=($obj->explanation);?></div>
Последнее редактирование: 1 год 10 мес. назад от Aleksej.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
1 год 9 мес. назад - 1 год 9 мес. назад #2 от Aleksej

Aleksej пишет: здесь же публикую два скрипта, о которых...


Третий скрипт. ;)

Честно говоря, данный API не представляется мне стабильно работающим... бывало - экран остается пустым, бывало - я получал от американцев ответы наподобие:

Hi Alex,
I'm looping in the NASA team.
Gray

Hi Alex, Working on it. Something strange is going on for today's APOD, but it will certainly work tomorrow. Sorry about this.
Dan


Допишем проверку на пустоту для JSON; и добавим массив из нескольких картинок, которые будут рандомно экспонироваться в случае, если с API снова "strange is going":

<?
$best_images = Array( 
		"http://apod.nasa.gov/apod/image/1210/geyseraurora_howell_2163.jpg",
		"http://apod.nasa.gov/apod/image/1210/meteorviolet_salomonsen_1200.jpg", 
		"http://apod.nasa.gov/apod/image/1010/hartley2pacman_fernandez.jpg",
		"http://apod.nasa.gov/apod/image/1007/ISS023-E-58455lrg.jpg"
	);

$json = file_get_contents('https://api.data.gov/nasa/planetary/apod?concept_tags=True&api_key=VASH_API_KEY');
$obj = json_decode($json);

if(empty($json)){
$rand_keys = array_rand($best_images, 1);
echo '<img src="' . $best_images[$rand_keys] . '"/>';
}
Последнее редактирование: 1 год 9 мес. назад от p.rishard.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
1 год 9 мес. назад #3 от evgenij

Aleksej пишет: Допишем проверку на пустоту для JSON


а JSON у них, кстати, не пустой, даже если не содержит картинки:

{"message": "Your request could not be processed. Admins have been notified.", "error": "No APOD imagery for the given date."}

:)

Дождались! Fedora 25.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
1 год 9 мес. назад - 1 год 9 мес. назад #4 от Aleksej
Ну вот так , скажем. Привяжемся к 'message'... или к "error".... все равно:

<?
$best_images = Array( 
		"http://apod.nasa.gov/apod/image/1210/geyseraurora_howell_2163.jpg",
		"http://apod.nasa.gov/apod/image/1210/meteorviolet_salomonsen_1200.jpg", 
		"http://apod.nasa.gov/apod/image/1010/hartley2pacman_fernandez.jpg",
		"http://apod.nasa.gov/apod/image/1007/ISS023-E-58455lrg.jpg"
	);

$json = file_get_contents('https://api.data.gov/nasa/planetary/apod?concept_tags=True&api_key=VASH_API_KEY');
$obj = json_decode($json);


if (array_key_exists('message', $obj)) {
$rand_keys = array_rand($best_images, 1);
echo '<img src="' . $best_images[$rand_keys] . '"/>';
}


else {
?>
<style type="text/css">
.exp {
font-style: italic;
}
.img_apod img {
width: auto;
}
</style>

<div class="img_apod"><?='<img src="' . $obj->url . '"/>';?></div>
<p> </p>
<div class="exp"><?=($obj->date);?></div>
<div class="exp"><?=($obj->explanation);?></div>
<?
}
?>
Последнее редактирование: 1 год 9 мес. назад от p.rishard.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.