Skip to content

Commit 010719c

Browse files
committed
1 parent 5fb3d27 commit 010719c

File tree

6 files changed

+524
-6
lines changed

6 files changed

+524
-6
lines changed
Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
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+
return super(LineBotApi, self).create_audience_group(audience_group_name, audiences, is_ifa, timeout)
48+
49+
def get_audience_gid_by_name(self, description, timeout=None):
50+
audience_groups = super(LineBotApi, self).get_audience_group_list(description=description, timeout=timeout)
51+
for audience_group in audience_groups:
52+
if audience_group.description.encode('utf-8') == description:
53+
return audience_group.audience_group_id
54+
else:
55+
return None
56+
57+
def delete_audience_groups(self, audienceGroupIds):
58+
for audienceGroupId in audienceGroupIds:
59+
if audienceGroupId is not None:
60+
self.delete_audience_group(audienceGroupId)
61+
62+
63+
def initialize_env():
64+
_audience_group_id = [line_bot_api.get_audience_gid_by_name(gn) for gn in line_ids.keys()]
65+
_audience_group_id += [line_bot_api.get_audience_gid_by_name(gn + "_new") for gn in line_ids.keys()]
66+
_audience_group_id += [line_bot_api.get_audience_gid_by_name(gn) for gn in
67+
['test_impression_based', 'test_click_based']]
68+
line_bot_api.delete_audience_groups(_audience_group_id)
69+
70+
71+
def add_audience_groups_cust(mode="normal"):
72+
_audience_group_ids = []
73+
for audience_name, line_id in line_ids.items():
74+
if len(line_id) > 0:
75+
new_gid = line_bot_api.create_audience_group(audience_name, line_id, mode=mode)
76+
_audience_group_ids.append(new_gid)
77+
return _audience_group_ids
78+
79+
80+
def main():
81+
initialize_env()
82+
to_be_delete = []
83+
84+
# Test create_impression_based_audience_group
85+
_audience_group_id = line_bot_api.create_impression_based_audience_group('test_impression_based', request_id)
86+
to_be_delete.append(_audience_group_id)
87+
logging.info("create_impression_based_audience_group result :\n{}".format(_audience_group_id))
88+
89+
# Test create_click_based_audience_group
90+
_audience_group_id = line_bot_api.create_click_based_audience_group('test_click_based', request_id)
91+
to_be_delete.append(_audience_group_id)
92+
logging.info("create_click_based_audience_group result :\n{}".format(_audience_group_id))
93+
94+
# Test create_audience_group (normal)
95+
_audience_group_ids = add_audience_groups_cust()
96+
logging.info("create_audience_group(normal) result :\n{}".format(_audience_group_ids))
97+
98+
# Test create_audience_group (force)
99+
_audience_group_ids = add_audience_groups_cust("force")
100+
logging.info("create_audience_group(force) result :\n{}".format(_audience_group_ids))
101+
102+
# Test create_audience_group (append)
103+
_audience_group_ids = add_audience_groups_cust("append")
104+
logging.info("create_audience_group(append) result :\n{}".format(_audience_group_ids))
105+
106+
# Test get_audience_group_list
107+
_audience_group_ids = [line_bot_api.get_audience_gid_by_name(gn) for gn in line_ids.keys()]
108+
logging.info("get_audience_group_list result :\n{}".format(_audience_group_ids))
109+
110+
# Test rename_audience_group
111+
[line_bot_api.rename_audience_group(gid, gn + "_new") for gn, gid in zip(line_ids.keys(), _audience_group_ids)]
112+
113+
# Test add_audiences_to_audience_group
114+
[line_bot_api.add_audiences_to_audience_group(gid, tester[-3:], upload_description='test_{}'.format(gid))
115+
for gid in _audience_group_ids]
116+
117+
# Test list all audience groups
118+
_audience_groups = line_bot_api.get_audience_group(_audience_group_ids[1])
119+
logging.info("Get audience group by 1st id :\n{}".format(_audience_groups))
120+
121+
# Test get_audience_group
122+
_audience_groups = [line_bot_api.get_audience_group(gid) for gid in _audience_group_ids]
123+
logging.info("get_audience_group result :\n{}".format(_audience_groups))
124+
125+
# Test delete_audience_group
126+
[line_bot_api.delete_audience_group(gid) for gid in _audience_group_ids]
127+
128+
# Test delete_audience_groups
129+
line_bot_api.delete_audience_groups(to_be_delete)
130+
131+
# Test change_audience_group_authority_level
132+
line_bot_api.change_audience_group_authority_level('PUBLIC')
133+
134+
# Test get_audience_group_authority_level
135+
_result = line_bot_api.get_audience_group_authority_level()
136+
logging.info("change_audience_group_authority_level result :\n{}".format(_result))
137+
138+
# Test list all audience groups
139+
_audience_groups = line_bot_api.get_audience_group_list()
140+
logging.info("All audience groups :\n{}".format(_audience_groups))
141+
142+
143+
if __name__ == '__main__':
144+
line_bot_api = LineBotApi(channel_access_token)
145+
main()

0 commit comments

Comments
 (0)