-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathline-release.py
168 lines (129 loc) · 4.87 KB
/
line-release.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
import os
import json
import codecs
from datetime import datetime as dt
import calendar
from selenium import webdriver
from selenium.webdriver.common.keys import Keys as keys
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver import FirefoxProfile
import time
import argparse
"""ドライバ生成"""
def create_driver():
#driver = webdriver.Chrome("chromedriver.exe")
custom_profile = FirefoxProfile()
custom_profile.set_preference("dom.disable_beforeunload", True);
driver = webdriver.Firefox(firefox_profile=custom_profile, executable_path="geckodriver.exe")
driver.implicitly_wait(10)
return driver
def find_element_by_css_selector_With_wait(driver, str, retry_count=10):
for i in range(retry_count):
try:
elem = driver.find_element_by_css_selector(str)
return elem
except:
time.sleep(2)
pass
return None
def find_elements_by_css_selector_With_wait(driver, str, retry_count=10):
for i in range(retry_count):
try:
elem = driver.find_elements_by_css_selector(str)
return elem
except:
time.sleep(2)
pass
return None
def line_login(driver, CONFIG):
url = "https://creator.line.me/ja/"
driver.get(url)
# ラインアワード用
#close_btn = driver.find_element_by_css_selector(".mdAwardPop2017BtnClose")
#close_btn.click()
# ログイン
#time.sleep(2)
#login_btn = driver.find_element_by_css_selector(".mdGHD02Manager > a")
#login_btn.click()
#何故か機能しないので一旦手動
#time.sleep(3)
#addr = driver.find_element_by_css_selector(".MdInputTxt01.mdInputTxt01Mail > input")
##addr.send_keys(CONFIG["mail"])
#passwd = driver.find_elements_by_css_selector(".MdInputTxt01")[1].find_element_by_css_selector("input")
#passwd.send_keys(CONFIG["password"])
#passwd.send_keys(keys.ENTER)
#time.sleep(2)
# 着せ替え用
time.sleep(6)
#time.sleep(2)
#close_btn = driver.find_elements_by_css_selector(".FnCloseDialogBtn.mdBtn")[1]
#print(close_btn)
#close_btn.click()
'''
# 許可承認
time.sleep(2)
yes_btn = driver.find_element_by_css_selector(".button-type-a.yes")
yes_btn.click()
# クリエータースタジオ
time.sleep(2)
close_btn = driver.find_element_by_css_selector(".FnCloseDialogBtn.mdBtn")
close_btn.click()
'''
def check_sticker_status(driver, url):
driver.get(url)
if driver.current_url != url:
print(driver.current_url,url)
return False
status_list=[]
tr_list = driver.find_elements_by_css_selector("tr.mdCMN11Row")[1:]
#print(len(tr_list))
for tr in tr_list:
name = tr.find_elements_by_css_selector("td")[1].get_attribute('innerHTML')
sid = tr.find_elements_by_css_selector("td")[2].get_attribute('innerHTML')
status = tr.find_elements_by_css_selector("td")[5].find_element_by_css_selector("span").get_attribute('innerHTML')
status_list.append({"name" : name, "sid" : sid, "status" :status})
return status_list
def crawl_site(driver):
pass
def load_param(path):
f = codecs.open(path,"r","utf-8")
param = json.load(f)
f.close()
return param
def exec_line_release(CONFIG):
driver = create_driver()
line_login(driver, CONFIG)
# bVxrmBVLUSqOE1iG りさ
# V3zWWv129tihG9ax 修平
page = 1
base_url = "https://creator.line.me/my/{}/sticker/?page={}"
cur_sticker_list = check_sticker_status(driver, base_url.format(page))
sticker_list = []
while(cur_sticker_list):
sticker_list.extend(cur_sticker_list)
page += 1
cur_sticker_list = check_sticker_status(driver, base_url.format(CONFIG["id"], page))
if page > 20:
break
print(sticker_list)
for sticker in sticker_list:
if sticker["status"] == "承認":
url = "https://creator.line.me/my/{}/sticker/{}".format(CONFIG["id"], sticker["sid"])
driver.get(url)
time.sleep(5)
driver.find_element_by_css_selector(".MdBtn01.mdBtn01Cr01 > label").click()
time.sleep(5)
driver.find_elements_by_css_selector(".MdBtn01.mdBtn01Cr01 > a")[2].click()
elif sticker["status"] == "編集中":
print("編集中:" + sticker["name"] + ", " + sticker["sid"])
driver.close()
return
def main():
psr = argparse.ArgumentParser()
psr.add_argument('-c', '--config', default='config.json')
args = psr.parse_args()
CONFIG = load_param(args.config)
#print(CONFIG)
exec_line_release(CONFIG)
if __name__ == '__main__': main()