initial commit

develop
root 2023-05-31 09:20:37 +09:00
commit 94d7e75215
4 changed files with 153 additions and 0 deletions

1
.gitignore vendored 100644
View File

@ -0,0 +1 @@
app/ss/

122
app/main.py 100644
View File

@ -0,0 +1,122 @@
# main.py
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
from selenium.webdriver.common.keys import Keys
import time,os
# 変数初期化 ********************************************************************
profile_dir = "/tmp/profile"
username = os.environ["RAKUTENID"]
password = os.environ["RAKUTENPW"]
waittime = 10
target_url = "https://channel.rakuten.co.jp/"
welcome_btn_css = 'button[data-ratid="welcome_pg1_ok"]'
login_btn_css = 'button[data-ratid="login_button"]'
user_textarea_css = 'input[aria-label="ユーザIDまたはメールアドレス"]'
passwd_textarea_css = 'input[type="password"]'
channel_btn_css = 'button[data-ratid="select_program_now_playing"]'
# ******************************************************************************
def gen_driver():
"""
WebDriver 生成
"""
options = webdriver.ChromeOptions()
options.add_argument("--window-size=1920,1080")
options.add_argument("--user-data-dir=" + profile_dir )
driver = webdriver.Remote(
command_executor="http://selenium:4444/wd/hub",
options=options
)
return driver
def init_profiles():
"""
初回ログイン等
"""
driver = gen_driver()
# Begin
driver.get(target_url)
# ロード待ち
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.TAG_NAME, 'body')))
driver.save_screenshot('./ss/ss.png')
# Welcomeメッセージを閉じる
try:
welcom_button = driver.find_element(By.CSS_SELECTOR, welcome_btn_css)
welcom_button.click()
except Exception as e:
pass
# ログイン試行
try:
# ログインボタン押下
login_button = driver.find_element(By.CSS_SELECTOR, login_btn_css)
login_button.click()
time.sleep(10)
# ユーザID入力
user = driver.find_element(By.CSS_SELECTOR, user_textarea_css)
user.send_keys(username)
driver.save_screenshot('./ss/ss_usrname.png')
user.send_keys(Keys.ENTER)
time.sleep(10)
# パスワード入力
passwd = driver.find_element(By.CSS_SELECTOR, passwd_textarea_css)
passwd.send_keys(password)
driver.save_screenshot('./ss/ss_password.png')
passwd.send_keys(Keys.ENTER)
time.sleep(10)
driver.save_screenshot('./ss/ss_password2.png')
except Exception as e:
print(e)
driver.save_screenshot('./ss/ss2.png')
# Coockie 取得
cookies = driver.get_cookies()
# End
driver.quit()
def watching_rch():
# Rch アクセス
driver = gen_driver()
driver.get(target_url)
# ロード待ち
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.TAG_NAME, 'body')))
# 10秒待機
time.sleep(10)
for i in range(0,8):
channel_btns = driver.find_elements(By.CSS_SELECTOR, channel_btn_css)
channel_btn = channel_btns[i]
channel_btn.click()
time.sleep(10)
driver.save_screenshot('./ss/channel_' + str(i) + '.png')
time.sleep(waittime)
driver.quit()
def main():
init_profiles()
watching_rch()
if __name__ == '__main__':
main()

25
docker-compose.yml 100644
View File

@ -0,0 +1,25 @@
version: '3'
services:
selenium:
restart: always
image: selenium/standalone-chrome:latest
container_name: 'selenium'
volumes:
- /dev/shm:/dev/shm
python3:
restart: always
build: ./python3
container_name: 'rpoint-getter'
working_dir: '/var/app'
tty: true
environment:
- RAKUTENID=${RAKUTENID}
- RAKUTENPW=${RAKUTENPW}
volumes:
- ./app:/var/app
depends_on:
- selenium
entrypoint:
- python3
command:
- /var/app/main.py

View File

@ -0,0 +1,5 @@
FROM python:3.11
RUN pip3 install --upgrade pip
RUN pip3 install selenium