はてなブログのstarを自動で押しまくる

#はじめに
この記事は [LOCAL students Advent Calendar 2020](https://adventar.org/calendars/5137)の19日の記事です。
よろしくおねがいします。
#まえおき
どうもこんにちは、今日から冬期休暇で毎週のレポートや辛い授業から開放されて喜びの舞を舞っているげんしです。
この時期は Advent Calendarが賑わっていて普段ブログを書かない人も書いたり書かなかったりする人が多くなると思います。

###この人の記事、、良い、、
先程言ったように、qiitaの記事やはてなブログの記事を見る機会がこの時期は増えると思います。そして人はブログを見ていく中で面白いブログやためになったブログにはLGTMや星をつけたりすると思います。

この星ですがなんと、はてなブログでは何度でも星をつけることができます！！！！

###星を無限につけていけ
すごくいい記事に出会ったとき、人は無限に星をつけたくなります。
ですが、無限に星をつけるには無限に星をクリックしないといけません。
これは少し面倒です。

#作ったもの
はてなブログで星を任意の数自動でつけるものを作りました。

以下実行環境 

| ソフト | バージョン |
|-----------|------------|
| python| 3.9.0|
| pip| 20.2.4|
| selenium| 3.141.0|
| chromedriver-binary| 87.0.4280.88.0|

##Seleniumのインストール

```
$ pip3 install selenium
```

##Google Chromeをインストールしておいてください。
お願いします。

##Chrome Driverのインストール
```
$ pip3 install chromedriver-binary==あなたのchromeのバージョン
```
chromeの右上のメニュー/設定/chromeについて
から確認することができます。
僕の場合87.0.4280.88だったので
pip3 install chromedriver-binary==87.0.4280.88
でインストールしました。

#実際に無限に星をつけていく
スクレイピングする際にはてなブログにログインする必要があるので事前にユーザーネーム or メールアドレスとパスワードをkey.pyに入力しておきます。

```python:key.py
EMAIL = "ご自身のはてなブログのメールアドレスかユーザー名を入れてください"
PASSWORD = "ご自身のはてなブログのパスワードを入れてください"
```


```python:main.py
# coding:utf-8
from key import EMAIL,PASSWORD
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from time import sleep
import chromedriver_binary

url = input("starをつける記事のurlを入力 : ")
starNum = int(input("starをつける個数を入力 : "))
username = EMAIL
password = PASSWORD

driver = webdriver.Chrome()

#ログインページを開く
loginUrl= "https://www.hatena.ne.jp/login"
driver.get(loginUrl)

#ログイン
loginUserName = driver.find_element_by_xpath("//*[@id='login-name']")
loginUserName.send_keys(username)

loginPassword = driver.find_element_by_xpath("//*[@id='container']/div/form/div/div[2]/div/input")
loginPassword.send_keys(password)

submitButton = driver.find_element_by_class_name("submit-button")
submitButton.click()
sleep(5)

#入力されたはてなブログのページにとぶ
driver.get(url)
starButton = driver.find_element_by_class_name("hatena-star-add-button")

#入力された回数クリック
for i in range(starNum):
  starButton.click()

sleep(5)
driver.close()
```


###DEMO
実際にこの[LOCAL学生部のAdvent Calendar](https://adventar.org/calendars/5137)の1日目の記事の[北海道の技術系学生コミュニティ LOCAL学生部のご紹介](https://haibara-works.hatenablog.com/entry/2020/12/01/143358)を30個starをつけたいと思います。

プログラムを実行し、記事のurlとstarの数を入力すると
![スクリーンショット 2020-12-16 22.21.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307792/91155fa0-2a0a-f0ef-0c53-e9532fa12d9e.png)

ログイン画面が出たあと自動で入力、ログインをし、
![スクリーンショット 2020-12-16 22.22.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307792/c59316c6-2fd8-0de3-4fec-6eea04087c8d.png)

このようにちゃんと30starをつけてくれました。
![スクリーンショット 2020-12-16 22.28.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307792/31771a78-b24b-caf0-86a1-4fcd65fcc1ca.png)


#まとめ
星をたくさんつけたい記事があるときにぜひ使ってください。
自動でつけたような心のこもってない星をつけるのは心が痛むという人はクリックを頑張ってください。

すごく単純で簡単なコードですが、Githubで公開しているのでurlを貼っておきます。
https://github.com/Genshi0916/auto-add-hatena-blog-star

#参考記事
- [Selenium ChromeDriver & PythonをMacで動かす準備メモ](https://qiita.com/yueda256/items/7b6f2a95ea45667e1029)
- [Seleniumクイックリファレンス](https://www.seleniumqref.com)
- [Markdown記法 チートシート](https://qiita.com/Qiita/items/c686397e4a0f4f11683d)