【はてなブログ】Seleniumを使って、アイキャッチ画像を自動で更新

はてなブログで、たくさんの記事のアイキャッチ画像を自動で更新できるように、pythonSelenium を使ってみました。

流れ

アーカイブ1ページ目、http://【ブログのドメイン】/archiveで、uuid 一覧を取得する

http://blog.hatena.ne.jp/はてなのID】/【ブログのドメイン】/edit?entry=【uuid】の管理画面を開く

「編集オプション」ボタンを押す

アイキャッチ画像のURLが、

・設定したい画像をアップしているドメインの場合、何もしない。
・設定したい画像をアップしているドメインと違う場合、【設定したい画像のURL】を入力して記事を更新する。

1ページ目が全部終わったら、次のページを開く・・・の繰り返し。

コード

# coding:utf-8
import time

from selenium import webdriver

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
WAIT_TIME = 60

def login():

url = "https://www.hatena.ne.jp/login"
driver.get(url)

WebDriverWait(driver, WAIT_TIME).until(
EC.presence_of_element_located*1
)

driver.find_element_by_name("name").send_keys("【はてなのID】")
driver.find_element_by_name("password").send_keys("【パスワード】")
driver.find_element_by_class_name("submit-button").click()

def main():
url = "http://【ブログのドメイン】/archive"
next(url)

def next(url):

driver.get(url)

WebDriverWait(driver, WAIT_TIME).until(
EC.presence_of_element_located*2
)

next_href = ""
eles = driver.find_elements_by_tag_name("a")
for ele in eles:
rel = ele.get_attribute("rel")
if rel is not None:
if rel == "next":
next_href = ele.get_attribute("href")

eles = driver.find_elements_by_class_name("autopagerize_page_element")
list = []
for ele in eles:
uuid = ele.get_attribute("data-uuid")
list.append(uuid)

for uuid in list:
update_thumbnail(uuid)

if next_href != "":
print("next_href = " + next_href)
next(next_href)

def update_thumbnail(uuid):

print("uuid = " + uuid)

url = "http://blog.hatena.ne.jp/はてなのID】/【ブログのドメイン】/edit?entry=" + uuid
driver.get(url)

eles = driver.find_elements_by_tag_name("div")

for ele in eles:
item = ele.get_attribute("data-track-name")
if item is not None:
if item.find("curation-option-button") > -1:
ele_option = ele
break

if ele_option is not None:
ele_option.click()

WebDriverWait(driver, WAIT_TIME).until(
EC.presence_of_element_located*3
)

WebDriverWait(driver, WAIT_TIME).until(
EC.presence_of_element_located*4
)

time.sleep(1)

thumbnail = driver.find_element_by_id("ogimage-input")

if thumbnail.get_attribute("value").find("【画像をアップしているドメイン】") == -1:
thumbnail.clear()
thumbnail.send_keys("【画像をアップしているドメイン+画像のパス】")
driver.find_element_by_id("submit-button").click()

WebDriverWait(driver, WAIT_TIME).until(
EC.presence_of_element_located*5
)

login()
main()

print("finish !!")

*1:By.NAME, "name"

*2:By.ID, "header-container"

*3:By.ID, "ogimage-input"

*4:By.CLASS_NAME, "image-src-container"

*5:By.CLASS_NAME, "message-box"

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA