Skip to content

Commit 588e1e6

Browse files
committed
1 parent 06e0eae commit 588e1e6

File tree

5 files changed

+455
-3
lines changed

5 files changed

+455
-3
lines changed
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
# -*- coding: utf-8 -*-
2+
import logging
3+
from linebot import LineBotApi as LineBotApi_ori
4+
5+
logging.basicConfig(
6+
level=logging.DEBUG,
7+
format='%(asctime)s %(levelname)s %(message)s',
8+
datefmt='%Y-%m-%d %H:%M',
9+
handlers=[logging.FileHandler('my.log', 'w', 'utf-8'), ]
10+
)
11+
12+
channel_access_token = 'xxxxxxx'
13+
14+
tester = [
15+
"Utesttestesttesttesttestestest18",
16+
"Utesttestesttesttesttestestest61",
17+
"Utesttestesttesttesttestestest59",
18+
"Utesttestesttesttesttestestest89",
19+
"Utesttestesttesttesttestestest79",
20+
"Utesttestesttesttesttestestest8c",
21+
"Utesttestesttesttesttestestestc3",
22+
"Utesttestesttesttesttestestest29",
23+
"Utesttestesttesttesttestestest03",
24+
]
25+
26+
line_ids = {
27+
"tester": tester,
28+
"tester1": tester[:5],
29+
"測試": tester[:4],
30+
"tester2": tester[:3],
31+
"tester3": tester[:2],
32+
"tester john": tester[:1],
33+
}
34+
35+
request_id = "xxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx"
36+
37+
38+
class LineBotApi(LineBotApi_ori):
39+
def create_audience_group(self, audience_group_name, audiences, is_ifa=False, mode="normal", timeout=None):
40+
if mode in ["force", "append"]:
41+
audience_group_id = self.get_audience_gid_by_name(audience_group_name)
42+
if audience_group_id is not None and mode == "force":
43+
self.delete_audience_group(audience_group_id)
44+
elif audience_group_id is not None and mode == "append":
45+
self.add_audiences_to_audience_group(audience_group_id, audiences)
46+
return audience_group_id
47+
48+
return super(LineBotApi, self).create_audience_group(audience_group_name, audiences, is_ifa, timeout)
49+
50+
def get_audience_gid_by_name(self, description, timeout=None):
51+
audience_groups = super(LineBotApi, self).get_audience_group_list(description=description, timeout=timeout)
52+
for audience_group in audience_groups:
53+
if audience_group.description.encode('utf-8') == description:
54+
return audience_group.audience_group_id
55+
else:
56+
return None
57+
58+
def delete_audience_groups(self, audienceGroupIds):
59+
for audienceGroupId in audienceGroupIds:
60+
if audienceGroupId is not None:
61+
self.delete_audience_group(audienceGroupId)
62+
63+
64+
def initialize_env():
65+
_audience_group_id = [line_bot_api.get_audience_gid_by_name(gn) for gn in line_ids.keys()]
66+
_audience_group_id += [line_bot_api.get_audience_gid_by_name(gn + "_new") for gn in line_ids.keys()]
67+
_audience_group_id += [line_bot_api.get_audience_gid_by_name(gn) for gn in
68+
['test_impression_based', 'test_click_based']]
69+
line_bot_api.delete_audience_groups(_audience_group_id)
70+
71+
72+
def add_audience_groups_cust(mode="normal"):
73+
_audience_group_ids = []
74+
for audience_name, line_id in line_ids.items():
75+
if len(line_id) > 0:
76+
new_gid = line_bot_api.create_audience_group(audience_name, line_id, mode=mode)
77+
_audience_group_ids.append(new_gid)
78+
return _audience_group_ids
79+
80+
81+
def main():
82+
initialize_env()
83+
to_be_delete = []
84+
85+
# Test create_impression_based_audience_group
86+
_audience_group_id = line_bot_api.create_impression_based_audience_group('test_impression_based', request_id)
87+
to_be_delete.append()
88+
print("create_impression_based_audience_group result :\n{}".format(_audience_group_id))
89+
90+
# Test create_click_based_audience_group
91+
_audience_group_id = line_bot_api.create_click_based_audience_group('test_click_based', request_id)
92+
to_be_delete.append()
93+
print("create_click_based_audience_group result :\n{}".format(_audience_group_id))
94+
95+
# Test create_audience_group (normal)
96+
_audience_group_ids = add_audience_groups_cust()
97+
logging.info("create_audience_group(normal) result :\n{}".format(_audience_group_ids))
98+
99+
# Test create_audience_group (force)
100+
_audience_group_ids = add_audience_groups_cust("force")
101+
logging.info("create_audience_group(force) result :\n{}".format(_audience_group_ids))
102+
103+
# Test create_audience_group (append)
104+
_audience_group_ids = add_audience_groups_cust("append")
105+
logging.info("create_audience_group(append) result :\n{}".format(_audience_group_ids))
106+
107+
# Test get_audience_group_list
108+
_audience_group_ids = [line_bot_api.get_audience_gid_by_name(gn) for gn in line_ids.keys()]
109+
logging.info("get_audience_group_list result :\n{}".format(_audience_group_ids))
110+
111+
# Test rename_audience_group
112+
[line_bot_api.rename_audience_group(gid, gn + "_new") for gn, gid in zip(line_ids.keys(), _audience_group_ids)]
113+
114+
# Test add_audiences_to_audience_group
115+
[line_bot_api.add_audiences_to_audience_group(gid, tester[-3:]) for gid in _audience_group_ids]
116+
117+
# Test get_audience_group
118+
_audience_groups = [line_bot_api.get_audience_group(gid) for gid in _audience_group_ids]
119+
logging.info("get_audience_group result :\n{}".format(_audience_groups))
120+
121+
# Test delete_audience_group
122+
[line_bot_api.delete_audience_group(gid) for gid in _audience_group_ids]
123+
124+
# Test delete_audience_groups
125+
line_bot_api.delete_audience_groups(to_be_delete)
126+
127+
# Test change_audience_group_authority_level
128+
line_bot_api.change_audience_group_authority_level('PUBLIC')
129+
130+
# Test get_audience_group_authority_level
131+
_result = line_bot_api.get_audience_group_authority_level()
132+
logging.info("change_audience_group_authority_level result :\n{}".format(_result))
133+
134+
135+
if __name__ == '__main__':
136+
line_bot_api = LineBotApi(channel_access_token)
137+
main()

0 commit comments

Comments
 (0)