[PYTHON] Automatische Datenmigration vom Yahoo Root Lab nach Strava

Automatische Datenmigration vom Yahoo Root Lab nach Strava

Das Route Lab von Yahoo endet im März 2020. Laden Sie am Ende des Dienstes die GPX-Datei von Root Lab herunter, laden Sie sie auf Strava hoch und speichern Sie die Route, die Sie nach Strava genommen haben! Das manuelle Hochladen auf Strava ist jedoch mühsam. Lassen Sie uns daher automatisch mit der folgenden Methode hochladen.

Nachtrag 2020 / 04.01 Das Root-Labor ist beendet. Wenn Sie also nur die GPX-Datei auf Strava hochladen möchten, lesen Sie hier (https://qiita.com/memento10/items/fe1a74ab0f4f284167fe).

1. Finden Sie heraus, welche Version von Google Chrome Sie verwenden

chrome Das Bild stammt von https://www.iijmio.jp/thissite/version

2. Laden Sie die Software "chromedriver" für Google Chrome herunter

-Download von hier.

chromedriver

--Das heruntergeladene Format ist im ZIP-Format. Bitte legen Sie das extrahierte Format im ausführbaren Format in Ihrem Verzeichnis ab.

3. Öffnen Sie ein Terminal und gehen Sie im Terminal wie folgt vor

pip install beautifulsoup4
pip install requests
pip install selenium

4. Schreiben Sie die "E-Mail-Adresse" und das "Passwort" im folgenden Quellcode neu, um sie an Ihr strava-Konto anzupassen

gpx.py


import os
import re
import sys
import time
from bs4 import BeautifulSoup
import requests
from selenium import webdriver
from selenium.webdriver.chrome.options import Options



options = Options()
options.binary_location = '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'
driver = webdriver.Chrome(os.path.join(os.getcwd(), "chromedriver"))



def read_urls():
    with open("./urls.txt", "r") as f:
        for row in f:
            yield row.replace("\n", "")

def download_gpx(urls):
    
    for url in urls:
        response = requests.get(url)
        
        html = response.text
        
        soup = BeautifulSoup(html, "html.parser")

        gpx_tag = soup.find_all("a", href=re.compile("gpx"))
        
        route_name = soup.find(id="subtitle").string

        download_url = gpx_tag[0].get('href')
        
        res = requests.get("https://latlonglab.yahoo.co.jp/route/" + download_url.lstrip("."))

        save_name = route_name + ".gpx"

        with open(save_name, "wb") as f:
            f.write(res.content)
    
        yield save_name
        
        


def upload_gpx_to_strava(gpx_names):
    
    for i, gpx_name in enumerate(gpx_names):
        driver.get('https://labs.strava.com/gpx-to-route/#12/-122.44503/37.73651')

        driver.find_element_by_id("gpxFile").send_keys(os.path.join(os.getcwd(), gpx_name))

        time.sleep(15)

        if i == 0:
            driver.find_element_by_id("oauthButton").click()

            driver.switch_to.window(driver.window_handles[-1])

            driver.find_element_by_id("email").send_keys("Mail Adresse")

            driver.find_element_by_id("password").send_keys("Passwort")

            login_button = driver.find_element_by_id("login-button")
            driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
            login_button.click()

            time.sleep(5)

            driver.switch_to.window(driver.window_handles[-1])

        driver.find_element_by_id("saveButton").click()
        time.sleep(5)

        driver.find_element_by_class_name("save-route").click()

        driver.find_element_by_id("name").send_keys("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b"+os.path.splitext(os.path.basename(gpx_name))[0])

        driver.find_element_by_class_name("reverse").click()

        time.sleep(5)
        
if __name__ == "__main__":
    urls = list(read_urls())
    gpx_names = download_gpx(urls)
    upload_gpx_to_strava(gpx_names)

5. Platzieren Sie urls.txt mit dem folgenden Link zum Stammlabor im selben Verzeichnis wie gpx.py

urls.txt


https://latlonglab.yahoo.co.jp/route/hoge1
https://latlonglab.yahoo.co.jp/route/hoge2
https://latlonglab.yahoo.co.jp/route/hoge3
...

6. Gehen Sie wie folgt vor

python gpx.py



  

  


Recommended Posts

Automatische Datenmigration vom Yahoo Root Lab nach Strava
Abrufen von Daten von MacNote3 und Migrieren zu Write
Von der Installation von Elasticsearch bis zur Dateneingabe
SIGNATE Quest ① Vom Lesen der Daten bis zur Vorverarbeitung
[Python] Lesen von Daten aus CIFAR-10 und CIFAR-100
Datenvorverarbeitung (2) Ändern Sie die Daten von "Kategorisch" in "Numerisch".
[Python] Fluss vom Web-Scraping zur Datenanalyse
Wie man GSR von Jupyter Lab of GCP git
[AWS] Migrieren Sie Daten von DynamoDB nach Aurora MySQL