Last active
January 12, 2016 03:48
-
-
Save jeremygibbs/1d62544ee57dc4ee8633 to your computer and use it in GitHub Desktop.
Script to check Apple.com for Apple pencil in-store availability
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
############################################################ | |
# script to check Apple for Apple Pencil availability # | |
# sku number: MK0C2AM/A # | |
# by: Jeremy A. Gibbs # | |
# https://gist.github.com/jeremygibbs/1d62544ee57dc4ee8633 # | |
############################################################ | |
error_reporting(E_ALL); | |
ini_set('display_errors', 'On'); | |
//-- Search for a given zip code --// | |
$json = file_get_contents("http://store.apple.com/us/retail/availabilitySearch?parts.0=MK0C2AM/A&zip=<YOUR_ZIP_CODE>"); | |
$data = json_decode($json); | |
$stores = $data->body->stores; | |
$pencil_info = Array(); | |
foreach ($stores as $store) { | |
$pencil_info[] = array( | |
"store_name" => $store->storeName, | |
"store_dist" => $store->storedistance, | |
"store_stat" => $store->partsAvailability->{'MK0C2AM/A'}->pickupDisplay | |
); | |
} | |
//-- Filter only those stores with Apple Pencil availability --// | |
$filter_array = array( | |
'store_stat' => "available" | |
); | |
$filtered_array = array_filter($pencil_info, function ($val_array) use ($filter_array) { | |
$intersection = array_intersect_assoc($val_array, $filter_array); | |
return (count($intersection)) === count($filter_array); | |
}); | |
$stores = $filtered_array; | |
$instore = count($stores)>0 ? true : false; | |
//-- If available in-store within the search area, send an email alert --// | |
if ($instore) { | |
$to = '<YOUR@EMAIL.COM>'; | |
$subject = 'Pencil available near <LOCATION>'; | |
$message = ""; | |
foreach($stores as $store) { | |
$name = $store["store_name"]; | |
$dist = $store["store_dist"]; | |
$message .= "$name, $dist miles from <LOCATION>\n\n"; | |
} | |
$message .= "http://www.apple.com/shop/product/MK0C2/apple-pencil-for-ipad-pro"; | |
mail($to, $subject, $message, null, '-f<YOUR@FROM_EMAIL.COM>'); | |
} | |
//-- Write a simple html table (either for web viewing or in Panic's StatusBoard app) --// | |
$html = ' | |
<html> | |
<style> | |
.name { | |
width: 50%; | |
font-size: 22px; | |
} | |
.dist { | |
width: 25%; | |
text-align: center; | |
font-size: 22px; | |
} | |
.stat { | |
width: 25%; | |
text-align: center; | |
font-size: 22px; | |
} | |
</style> | |
<table data-refresh-every-n-seconds="300">'; | |
if ($instore) { | |
$html .=' | |
<tr> | |
<th class="name">Store</th> | |
<th class="dist">Distance</th> | |
<th class="stat">Availability</th> | |
</tr>'; | |
} else { | |
$html .=' | |
<tr> | |
<th class="name">Apple Pencil not available</th> | |
</tr>'; | |
} | |
if ($instore) { | |
foreach($stores as $store) { | |
$html .=' | |
<tr> | |
<td class="name">'. $store["store_name"] .'</td> | |
<td class="dist">'. $store["store_dist"] .'</td> | |
<td class="stat">'. $store["store_stat"] .'</td> | |
</tr>'; | |
} | |
} | |
$html .= '</table></html>'; | |
$output = fopen("/PATH/TO/YOUR/WEB/FILES/status_apple.html", "w"); | |
fwrite($output, $html); | |
fclose($output); | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment