Skip to content

Commit 764c1b4

Browse files
authored
1 parent 318c81b commit 764c1b4

File tree

5 files changed

+654
-3
lines changed

5 files changed

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

0 commit comments

Comments
 (0)