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).
Das Bild stammt von https://www.iijmio.jp/thissite/version
-Download von hier.
--Das heruntergeladene Format ist im ZIP-Format. Bitte legen Sie das extrahierte Format im ausführbaren Format in Ihrem Verzeichnis ab.
pip install beautifulsoup4
pip install requests
pip install selenium
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)
urls.txt
https://latlonglab.yahoo.co.jp/route/hoge1
https://latlonglab.yahoo.co.jp/route/hoge2
https://latlonglab.yahoo.co.jp/route/hoge3
...
python gpx.py
Recommended Posts