J'ai raté la vague des Airpods Pro. L'Airpods Pro est sorti à la fin du mois dernier, mais je pensais l'acheter après avoir vu l'exemple de Sony Neucan et une revue comparative, mais au moment où j'ai lu l'article, il était épuisé. Il semble que l'arrivée de marchandises se fasse occasionnellement sur l'Apple Store géré directement, alors surveillez-le et envoyez une notification __ à votre __LINE dès l'arrivée.
Problème d'obtention des informations d'entreposage Apparemment, il est mis à jour correctement quand il arrive chaque matin
Cliquez sur Confirmer la date pour recevoir cet écran. Vous pouvez obtenir des informations sur les commerces à proximité en entrant le code postal.
Avec ce sentiment, il semble que vous puissiez l'obtenir par GET ou POST, alors regardez le réseau
Il y a quelque chose comme ça, ce n'est pas vraiment ça
Vous pouvez voir Response dans les outils de développement Je veux faciliter la compréhension, je vais donc essayer d'obtenir des informations avec une application qui GET ou POST Venu tellement
pièces est le numéro de pièce et l'emplacement est le code postal
Les lenspons que je viens de retourner seront retournés dans un magasin.
response
{
"head": {
"status": "200",
"data": {}
},
"body": {
"stores": [
{
"storeEmail": "[email protected]",
"storeName": "Shinsaibashi",
"reservationUrl": "http://www.apple.com/jp/retail/shinsaibashi",
"makeReservationUrl": "http://www.apple.com/jp/retail/shinsaibashi",
"state": "Préfecture d'Osaka",
"storeImageUrl": "https://rtlimages.apple.com/cmc/dieter/store/4_3/R091.png?resize=828:*&output-format=jpg",
"country": "JP",
"city": "Ville d'Osaka",
"storeNumber": "R091",
"partsAvailability": {
"MWP22J/A": {
"storePickEligible": true,
"storeSearchEnabled": true,
"storeSelectionEnabled": true,
"storePickupQuote": "Sam 2019/12/07 Pomme Shinsaibashi",
"pickupSearchQuote": "Date de réception:<br/>Sam 2019/12/07",
"storePickupLabel": "Date de réception:",
"partNumber": "MWP22J/A",
"purchaseOption": "",
"ctoOptions": "",
"storePickupLinkText": "Vérifiez la date à laquelle vous pouvez recevoir",
"storePickupProductTitle": "AirPods Pro",
"pickupDisplay": "ships-to-store"
}
},
"phoneNumber": "06-4963-4500",
"address": {
"address": "Shinsaibashi aux pommes",
"address3": "Urbain BLD Shinsaibashi",
"address2": "1 Nishishinsaibashi, Chuo-ku-5-5",
"postalCode": "542-0086"
},
"hoursUrl": "http://www.apple.com/jp/retail/shinsaibashi",
"storeHours": {
"storeHoursText": "heures de travail",
"bopisPickupDays": "Journées",
"bopisPickupHours": "temps",
"hours": [
{
"storeTimings": "10:00~21:00",
"storeDays": "Mois~journée:"
}
]
},
"storelatitude": 34.672,
"storelongitude": 135.50007,
"storedistance": 3.44,
"storeDistanceWithUnit": "3.44 km",
"storeDistanceVoText": "542-Distance de 0086: 3.44 km",
"storelistnumber": 1,
"storeListNumber": 1
}
----------------Continuez vers le bas----------------
Il ne semble y avoir aucun problème si vous ne pouvez obtenir que __storePickupQuote
__
Si vous l'obtenez, vous ne pouvez l'implémenter qu'avec des requêtes, alors écrivez-le correctement
Acquisition des informations d'inventaire
def get_store_status(_parts, _location):
arrival = []
url = "https://www.apple.com/jp/shop/retail/pickup-message"
param = {"parts.0": _parts, "location": _location}
response = requests.get(url, params=param)
json_data = json.loads(response.text)
stores = json_data['body']['stores']
for store in stores:
store_pickup = store['partsAvailability'][_parts]['storePickupQuote']
if 'aujourd'hui' in store_pickup:
arrival.append({'Boutique':store['address']['address'],
'Code postal':store['address']['postalCode']})
return arrival
Je l'ai écrit pour le moment, si je l'explique correctement Mettez le json retourné dans le dictionnaire Le magasin qui a reçu les marchandises a aujourd'hui, pas la date, alors faites un tel jugement Je passerai s'il y a aujourd'hui
Je ne sais pas quand les informations d'inventaire seront réellement mises à jour, donc Faites une demande une fois par minute entre 6h00 et 10h00.
python
def start_job():
parts = {'AirpodsPro':'MWP22J/A', 'Airpods':'MV7N2J/A'}
location = '530-0000'
end_stamp = datetime.now().timestamp() + (60 * 60 * 4)
while True:
now = datetime.now().timestamp()
arrival = get_store_status(parts['AirpodsPro'], location)
if arrival or now > end_stamp:
line_notif(arrival)
break
time.sleep(60)
def trigger():
schedule.every().day.at('06:00').do(start_job)
while True:
schedule.run_pending()
time.sleep(1)
S'il y a du stock, vous serez averti en sortant de la boucle Sinon, Oryokuru jusqu'à 10 heures
LINE s'enregistre en tant que Notify et vous l'envoie Permettez-moi de me référer à ceci - Envoyer une notification à LINE avec Python
python
def line_notify(stores):
line_notify_token = 'Jeton d'accès'
line_notify_api = 'https://notify-api.line.me/api/notify'
if stores:
strings=''
for s in stores:
strings += f'''
Boutique: {s['Boutique']}
Code postal: {s['Code postal']}\n'''
message = f'''
Airpods Pro est en stock.
Magasin cible:{strings}
Panier: https://www.apple.com/jp/shop/bag
'''
payload = {'message': message}
headers = {'Authorization': 'Bearer ' + line_notify_token}
requests.post(line_notify_api, data=payload, headers=headers)
S'il y a une arrivée pour le moment, cela informera LINE Vous pouvez l'acheter tel quel en collant l'URL du panier. (Il est nécessaire de le mettre dans le panier avec le terminal et le navigateur pour acheter à l'avance)
Il y a des airpods alors essayez celui-ci J'ai mis les informations des Airpods dans le dictionnaire plus tôt, donc je vais les utiliser
arrival = get_store_status(parts['Airpods'], location)
Maintenant, cours.
J'ai une notification donc ça va
LINE Notify C'est très pratique, cela semble être très utile à l'avenir.
__ Le plus gros problème est de savoir si je suis réveillé le matin __
Recommended Posts