2020/01/11
Bot d'arrivée Ringfit Adventure a été gelé et a été renouvelé. Nous nous réjouissons de votre soutien continu de Price Arrival Dolphin @ Ringfit Adventure.
Avertir quand Ringfit Adventure arrive sur Amazon à un prix fixe Bot d'arrivée Ringfit Adventure J'ai fait. Je vais vous présenter l'arrière de ce bot. Éradiquez les revendeurs.
Ring Fit Adventure est très populaire. Il est rare depuis sa sortie. Cette pénurie est due aux achats en gros destinés à la revente par les revendeurs. En fait, il existe des centaines de reventes sur Amazon à des prix (environ 12000 yens) qui dépassent largement le prix catalogue (8778 yens).
Afin d'acheter à un prix fixe sans perdre face aux revendeurs, il est nécessaire de se présenter le plus tôt possible après l'arrivée. J'ai donc décidé de créer une fonction pour notifier l'arrivée des ajustements de bague à un prix fixe. Tout d'abord, je l'ai fait dans le but d'obtenir un ajustement de bague.
Par contre, je pensais aussi qu'en exposant cette fonction, il serait possible d'éradiquer les revendeurs. Il est difficile d'éliminer l'existence de revendeurs. Cependant, avec cette fonctionnalité, vous pouvez surmonter la situation où vous devez acheter auprès d'un revendeur. En offrant un lieu où les acheteurs généraux peuvent se battre au même titre que les revendeurs, nous avons pensé qu'il ne serait pas nécessaire d'acheter auprès de revendeurs, et par conséquent, cela conduirait à l'éradication des revendeurs.
Père Noël qui veut donner une bague digne des cadeaux de Noël Les enfants qui veulent attraper un bal du nouvel an et acheter un anneau. Je me bats avec la puissance de l'informatique.
Éradiquez les revendeurs.
--J'achète une aventure en forme de bague
Je vais expliquer la configuration du système pour éradiquer les revendeurs.
Le programme bot s'exécute sur AWS EC2. EC2 a un script python et un fichier de configuration crontab déployés.
Je vais expliquer le flux pour éradiquer les revendeurs.
Présentation du code source pour éradiquer les revendeurs.
python & selenium & chrome
amazon.py
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import json
import urllib.request
import datetime
import pytz
#URL de la page produit Ringfit
url = 'https://www.amazon.co.jp/%E4%BB%BB%E5%A4%A9%E5%A0%82-%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%95%E3%82%A3%E3%83%83%E3%83%88-%E3%82%A2%E3%83%89%E3%83%99%E3%83%B3%E3%83%81%E3%83%A3%E3%83%BC-Switch/dp/B07XV8VSZT/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%95%E3%82%A3%E3%83%83%E3%83%88&qid=1575977457&sr=8-1'
#Lancez Chrome à partir du sélénium et accédez à la page du produit Ring Fit
options = webdriver.ChromeOptions()
options.add_argument('--headless')
driver = webdriver.Chrome(options=options)
driver.get(url)
#Fonction pour tweeter
def tweet(message):
#compte Twitter
account = 'ringfit_hoshii'
password = 'hogehoge'
#démarrer le sélénium
options = webdriver.ChromeOptions()
options.add_argument('--headless')
driver = webdriver.Chrome(options=options)
driver.set_window_size(height=877, width=1440)
#Ouvrir la page de connexion
driver.get('https://twitter.com/login/')
time.sleep(3) #Arrête de travailler
#Entrez votre compte
element_account = driver.find_element_by_class_name("js-username-field")
element_account.send_keys(account)
#Entrer le mot de passe
element_pass = driver.find_element_by_class_name("js-password-field")
element_pass.send_keys(password)
#Cliquez sur le bouton de connexion
element_login = driver.find_element_by_xpath('//*[@id="page-container"]/div/div[1]/form/div[2]/button')
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
element_login.click()
#Tweet
time.sleep(3)
driver.find_element_by_xpath('//*[@id="react-root"]/div/div/div/main/div/div/div/div[1]/div/div[2]/div[2]/div[1]/div/div/div[2]/div[1]/div/div/div/div/div/div/div/div[1]/div[1]/div/div/div/div[2]/div/div/div/div').send_keys(message)
# time.sleep(1)
driver.find_element_by_xpath('//*[@id="react-root"]/div/div/div/main/div/div/div/div[1]/div/div[2]/div[2]/div[1]/div/div/div[2]/div[2]/div/div/div[2]/div[3]').click()
#Dormez pour attendre la fin du tweet
time.sleep(2)
driver.quit()
return
#Fonction permettant d'obtenir un jugement sur le prix et le prix à partir de la page de produit Ring Fit d'Amazon
def get_price(xpath):
price1 = driver.find_element_by_xpath(xpath)
p1str = price1.text[1:]
p1int = int(p1str.replace(',',''))
now = datetime.datetime.now(pytz.timezone('Asia/Tokyo'))
message2 = "[En stock] Ring Fit Adventure" + str(p1int) + "Vendu en yens!" + " Amazon URL: " + url + " datetime: " + str(now)
#Jugement de prix de liste
if p1int > 9000 or p1int < 5000:
return
tweet(message2)
return
#Il existe plusieurs modèles d'apparence xpath sur la page du produit Ringfit, alors essayez d'obtenir le prix de ces modèles.
xpaths = [
'//*[@id="unqualifiedBuyBox"]/div/div[1]/span',
'//*[@id="priceblock_ourprice"]'
]
for xpath in xpaths:
get_price(xpath)
driver.quit()
Pour exécuter des tweets sur le sélénium, je me suis référé à ici. L'élément a été acquis par xpath par la même méthode que ici.
crontab
cron.conf
#Le driver chrome référencé par le sélénium/home/ec2-user/Puisqu'il est dans la corbeille, ajoutez-le au chemin
PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2-user/bin
#Exécutez un script python toutes les minutes
* * * * * python3 /home/ec2-user/ringfit/amazon.py
Décrit les paramètres du serveur et les déploiements pour éradiquer les revendeurs.
#Téléchargez et installez les ressources requises
sudo yum -y update
sudo yum -y install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
#Téléchargez le pilote de la version Chrome.
#Commande de confirmation de version
# yum info google-chrome-stable
wget https://chromedriver.storage.googleapis.com/78.0.3904.105/chromedriver_linux64.zip
unzip chromedriver_linux64.zip -d bin/
sudo yum -y install python3
sudo pip3 install Selenium
sudo pip3 install pytz
sudo yum -y install ipa-gothic-fonts ipa-mincho-fonts ipa-pgothic-fonts ipa-pmincho-fonts
Déployez ʻamazon.pyet
cron.conf(omis). Ici, on suppose que vous avez déployé sur
/ home / ec2-user / ringfit`.
#Destination de déploiement
deploy_dir="/home/ec2-user/ringfit"
#paramètres crontab (après la réinitialisation de cron.conf est en cours de lecture)
crontab -r
crontab -u ec2-user ${deploy_dir}/cron.conf
Vous recevrez un tweet comme celui-ci toutes les minutes lors de votre arrivée.
Q&A
Amazon Puisqu'il est joué lors de l'accès à partir de la commande curl ou de python, j'ai commencé chrome avec du sélénium et j'ai pris la méthode d'accès avec la même procédure qu'un utilisateur général.
twitter J'ai un compte de développeur Twitter, mais pour une raison quelconque, je n'avais pas l'autorisation de créer une application. Il y avait une description que je pouvais enregistrer un numéro de téléphone dans mon compte Twitter, mais pour une raison quelconque, je n'ai pas pu enregistrer mon numéro de téléphone ... Abandonnez et lancez le chrome avec du sélénium, ce qui suit est abrégé.
C'est vrai. Cependant, je pense que les revendeurs ont une telle fonction à eux seuls. L'importance de ce bot est de permettre aux acheteurs généraux de se tenir au même titre que les revendeurs.
―― L'acquisition de prix d'Amazon est vraiment adaptée à xpath, alors j'aimerais penser à une méthode plus robuste. ――Le coût d'EC2 étant élevé, je voudrais passer à Lambda, qui peut être exploité dans le cadre du niveau gratuit.
――Je souhaite gagner un revenu en faisant du lien attaché au tweet un lien d'affiliation. Au moins à propos des frais AWS ... «Je pensais que j'irais environ 1000 abonnés en un rien de temps. Annoncé sur plusieurs comptes et facebook. J'ai cherché "Ring fit not for sale" et "I want ring fit" et je l'ai ouvert avec des likes manuels tous les jours. En conséquence, il n'augmente pas. Je ne vais pas 50. Cela n'augmente pas du tout. Pourquoi? Si vous pouvez acheter un ajustement de bague, vous ne serez plus suivi car le bot est déjà obsolète. L'ennui de la notification une fois par minute augmente. D'un autre côté, je suis heureux que les utilisateurs achètent correctement RingFit, mais je suis loin de l'objectif de fournir cette fonctionnalité à de nombreuses personnes et d'éradiquer les revendeurs. Afin d'augmenter les abonnés, nous avons également pris en compte les annonces de produits autres que l'ajustement de la bague, mais par exemple, ce n'est pas parce que vous voulez un ajustement de bague que vous voulez des AirPods, et je pense que les annonces de produits qui ne vous intéressent pas ne seront que du bruit. J'ai fait.
Jusqu'à la fin Merci d'avoir lu. C'était le premier message Qiita. Je vais continuer à écrire des articles (un peu plus sérieusement), donc j'ai hâte de travailler avec vous.
Si vous n'avez pas encore le Ringfit Adventure, veuillez l'utiliser si vous le souhaitez ↓ Bot d'arrivée Ringfit Adventure
Aventure en forme d'anneau que vous pourriez acheter à prix fixe ↓
Voix de gratitude ↓