[PYTHON] Hinter dem Ringfit Adventure Ankunftsbot, um Wiederverkäufer auszurotten

2020/01/11

Ringfit Adventure Ankunftsbot wurde eingefroren und erneuert. Wir freuen uns auf Ihre weitere Unterstützung von Price Arrival Dolphin @ Ringfit Adventure.

Überblick

Benachrichtigen Sie, wenn Ringfit Adventure zu einem festen Preis bei Amazon ankommt Ringfit Adventure Ankunftsbot Ich machte. Ich werde die Rückseite dieses Bots vorstellen. Wiederverkäufer ausrotten.

Image from iOS.jpeg

Hintergrund

Ring Fit Adventure ist sehr beliebt. Es ist seit seiner Veröffentlichung Mangelware. Dieser Mangel ist auf Großeinkäufe zurückzuführen, die von Wiederverkäufern weiterverkauft werden sollen. Tatsächlich gibt es bei Amazon Hunderte von Wiederverkäufen zu Preisen (ca. 12000 Yen), die den Listenpreis (8778 Yen) deutlich übersteigen.

Um zu einem festen Preis zu kaufen, ohne an Wiederverkäufer zu verlieren, ist es notwendig, so bald wie möglich nach der Ankunft vorbeizuschauen. Aus diesem Grund habe ich beschlossen, eine Funktion zu erstellen, um das Eintreffen von Ringanpassungen zu einem festen Preis zu melden. Zuerst habe ich es gemacht, um einen Ring fit zu machen.

Andererseits dachte ich auch, dass es durch die Bereitstellung dieser Funktion möglich sein würde, Wiederverkäufer auszurotten. Es ist schwierig, die Existenz von Wiederverkäufern zu beseitigen. Mit dieser Funktion können Sie jedoch die Situation überwinden, in der Sie bei einem Wiederverkäufer kaufen müssen. Durch die Bereitstellung eines Ortes, an dem allgemeine Käufer auf dem gleichen Boden wie Wiederverkäufer kämpfen können, hielten wir es für unnötig, bei Wiederverkäufern einzukaufen, und dies würde zur Ausrottung von Wiederverkäufern führen.

Weihnachtsmann, der einen Ring passend zu Weihnachtsgeschenken geben möchte. Kinder, die sich einen Neujahrsball schnappen und einen Ring kaufen wollen, passen. Ich kämpfe mit der Kraft der IT.

Wiederverkäufer ausrotten.

Zweck

Systemkonfiguration

Ich werde die Systemkonfiguration erklären, um Wiederverkäufer auszurotten.

リングフィットqiita.png

Das Bot-Programm läuft auf AWS EC2. EC2 verfügt über ein Python-Skript und eine Crontab-Konfigurationsdatei.

fließen

Ich werde den Ablauf erklären, um Wiederverkäufer auszurotten.

Systemjobablauf

  1. Cron führt jede Minute ein Python-Skript aus, das Folgendes ausführt:
  2. Selen → Chrom | Rufen Sie die Produktseite von Amazon Ringfit Adventure auf.
  3. Selen | Analysieren Sie das Get HTML und ermitteln Sie den Preis für den Ring Fit.
  4. Python | Bestimmen Sie, ob der Ring-Fit-Preis der Listenpreis ist.
  5. Selen → Chrom | Wenn der Preis festgelegt ist, melden Sie sich bei Twitter an und twittern Sie.

Benutzer-Nutzungsfluss

  1. Folgen Sie dem Ankunftsbot von Ringfit Adventure.
  2. Aktivieren Sie Benachrichtigungen.
  3. Sie erhalten eine Tweet-Benachrichtigung über die Ankunft.
  4. Greifen Sie so schnell wie möglich auf amazon zu und klicken Sie auf den Ring mit einem Listenpreis von 8778 Yen.
  5. Sie erhalten in wenigen Tagen einen Ring Fit.

Quellcode

Einführung des Quellcodes zur Beseitigung von Wiederverkäufern.

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 der Ringfit-Produktseite
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'

#Starten Sie Chrom aus Selen und rufen Sie die Produktseite für Ring Fit auf
options = webdriver.ChromeOptions()
options.add_argument('--headless')
driver = webdriver.Chrome(options=options)
driver.get(url)

#Funktion zum Twittern
def tweet(message):
    #Twitter-Account
    account = 'ringfit_hoshii'
    password = 'hogehoge'
    #Selen starten
    options = webdriver.ChromeOptions()
    options.add_argument('--headless')
    driver = webdriver.Chrome(options=options)
    driver.set_window_size(height=877, width=1440)
    #Anmeldeseite öffnen
    driver.get('https://twitter.com/login/')
    time.sleep(3)  #Aufhören zu arbeiten
    #Konto eingeben
    element_account = driver.find_element_by_class_name("js-username-field")
    element_account.send_keys(account)
    #Passwort eingeben
    element_pass = driver.find_element_by_class_name("js-password-field")
    element_pass.send_keys(password)
    #Klicken Sie auf die Schaltfläche Anmelden
    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()
    #Schlaf, um zu warten, bis der Tweet fertig ist
    time.sleep(2)
    driver.quit()
    return

#Funktion zum Abrufen von Preis- und Preisurteilen auf der Ring Fit-Produktseite von 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 = "[Auf Lager] Ring Fit Adventure" + str(p1int) + "Verkauft in Yen!" + " Amazon URL: " + url + " datetime: " + str(now)
    #Listenpreisbeurteilung
    if p1int > 9000 or p1int < 5000:
        return
    tweet(message2)
    return

#Auf der Ringfit-Produktseite befinden sich mehrere xpath-Erscheinungsmuster. Versuchen Sie daher, den Preis für diese Muster zu ermitteln.
xpaths = [
'//*[@id="unqualifiedBuyBox"]/div/div[1]/span',
'//*[@id="priceblock_ourprice"]'
]
for xpath in xpaths:
    get_price(xpath)

driver.quit()

Für die Ausführung von Tweets auf Selen habe ich auf [hier] verwiesen (https://qiita.com/sugusan/items/3cf6c30d07ae0dc28e1f). Das Element wurde von xpath mit derselben Methode wie [hier] erfasst (https://www.hacky.xyz/entry/2017/04/15/164049).

crontab

cron.conf


#Der Chromtreiber, auf den Selen verweist/home/ec2-user/Da es sich in bin befindet, fügen Sie es dem Pfad hinzu
PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2-user/bin
#Führen Sie jede Minute ein Python-Skript aus
* * * * * python3 /home/ec2-user/ringfit/amazon.py

Ersteinrichtung und Bereitstellung

Beschreibt Servereinstellungen und Bereitstellungen zum Löschen von Wiederverkäufern.

Grundeinstellungen des Servers (EC2)


#Laden Sie die erforderlichen Ressourcen herunter und installieren Sie sie
sudo yum -y update
sudo yum -y install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
#Laden Sie den Treiber für die Chrome-Version herunter.
#Versionsbestätigungsbefehl
# 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

Bereitstellen

Stellen Sie amazon.py und cron.conf bereit (weggelassen). Hier wird davon ausgegangen, dass Sie für "/ home / ec2-user / ringfit" bereitgestellt haben.

Cron-Einstellungen


#Bereitstellungsziel
deploy_dir="/home/ec2-user/ringfit"

#crontab-Einstellungen (nach dem Zurücksetzen von cron.conf wird gelesen)
crontab -r
crontab -u ec2-user ${deploy_dir}/cron.conf

Bewegung

Bei Ihrer Ankunft erhalten Sie jede Minute einen solchen Tweet.

スクリーンショット 2019-12-24 0.24.27.png

Q&A

Warum über Selen?

Amazon Da es beim Zugriff über den Befehl curl oder Python abgespielt wird, habe ich Chrome mit Selen gestartet und die Methode des Zugriffs mit der gleichen Vorgehensweise wie ein allgemeiner Benutzer angewendet.

twitter Ich habe ein Twitter-Entwicklerkonto, aber aus irgendeinem Grund hatte ich keine Berechtigung zum Erstellen einer App. Es gab eine Beschreibung, dass ich eine Telefonnummer in meinem Twitter-Konto registrieren konnte, aber aus irgendeinem Grund konnte ich meine Telefonnummer nicht registrieren ... Geben Sie auf und starten Sie Chrom mit Selen. Das Folgende wird abgekürzt.

Ist es eine nützliche Funktion für Wiederverkäufer?

Korrekt. Ich denke jedoch, dass Wiederverkäufer eine solche Funktion für sich haben. Die Bedeutung dieses Bots besteht darin, dass allgemeine Käufer auf dem gleichen Boden wie Wiederverkäufer stehen können.

Verbesserungspunkte

Wirkliche Absicht

――Ich möchte etwas Geld verdienen, indem ich den an den Tweet angehängten Link zu einem Affiliate-Link mache. Zumindest über die AWS-Gebühr ... ――Ich dachte, ich würde in kürzester Zeit ungefähr 1000 Follower erreichen. Auf mehreren Konten und Facebook beworben. Ich suchte nach "Ring Fit nicht zum Verkauf" und "Ich möchte Ring Fit" und öffnete es jeden Tag mit manuellen Likes. Infolgedessen nimmt es nicht zu. Ich gehe nicht 50. Es nimmt überhaupt nicht zu. Warum? Wenn Sie einen Ring Fit kaufen können, werden Sie nicht mehr verfolgt, da der Bot bereits veraltet ist. Der Ärger über die einmalige Benachrichtigung nimmt zu. Auf der anderen Seite bin ich froh, dass Benutzer RingFit richtig kaufen, aber ich bin weit davon entfernt, diese Funktion vielen Menschen zur Verfügung zu stellen und Wiederverkäufer auszurotten. ――Um die Anzahl der Follower zu erhöhen, haben wir auch Ankündigungen von anderen Produkten als Ring Fit in Betracht gezogen. Nur weil Sie beispielsweise Ring Fit wünschen, bedeutet dies nicht, dass Sie AirPods möchten, und ich denke, dass Ankündigungen von Produkten, an denen Sie nicht interessiert sind, nur Lärm sind Ich tat.

abschließend

Bis zum Ende Danke fürs Lesen. Es war der erste Qiita-Beitrag. Ich werde weiterhin Artikel schreiben (etwas ernster), daher freue ich mich darauf, mit Ihnen zusammenzuarbeiten.

Wenn Sie das Ringfit-Abenteuer noch nicht haben, verwenden Sie es bitte, wenn Sie ↓ mögen Ringfit Adventure Ankunftsbot

Ring Fit Abenteuer, das Sie zum Festpreis kaufen können ↓ EL6HPVZVAAAN7zX.jpeg

Stimme der Dankbarkeit ↓ Image from iOS (1).jpeg

Recommended Posts

Hinter dem Ringfit Adventure Ankunftsbot, um Wiederverkäufer auszurotten
Die Geschichte, ein Ring-Fit-Abenteuer kaufen zu wollen
Nehmen Sie Ihr Ringfit-Abenteuer mit OCR auf