Skip to content

Commit a10647b

Browse files
clsungbe-hase
authored andcommitted
Implement play videos in imagemap messages (#130) (#134)
* Implement play videos in imagemap messages
1 parent 1989bfb commit a10647b

File tree

4 files changed

+97
-3
lines changed

4 files changed

+97
-3
lines changed

README.rst

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -451,6 +451,17 @@ ImagemapSendMessage
451451
base_url='https://example.com/base',
452452
alt_text='this is an imagemap',
453453
base_size=BaseSize(height=1040, width=1040),
454+
video=Video(
455+
original_content_url='https://example.com/video.mp4',
456+
preview_image_url='https://example.com/video_preview.jpg',
457+
area=ImagemapArea(
458+
x=0, y=0, width=1040, height=585
459+
),
460+
external_link=ExternalLink(
461+
link_uri='https://example.com/see_more.html',
462+
label='See More',
463+
),
464+
),
454465
actions=[
455466
URIImagemapAction(
456467
link_uri='https://example.com/',

linebot/models/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@
7676
URIImagemapAction,
7777
MessageImagemapAction,
7878
ImagemapArea,
79+
Video,
80+
ExternalLink,
7981
)
8082
from .messages import ( # noqa
8183
Message,

linebot/models/imagemap.py

Lines changed: 57 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,20 +27,23 @@
2727
class ImagemapSendMessage(SendMessage):
2828
"""ImagemapSendMessage.
2929
30-
https://devdocs.line.me/en/#imagemap-message
30+
https://developers.line.biz/en/reference/messaging-api/#imagemap-message
3131
3232
Imagemaps are images with one or more links. You can assign one link for the entire image
3333
or multiple links which correspond to different regions of the image.
3434
"""
3535

36-
def __init__(self, base_url=None, alt_text=None, base_size=None, actions=None, **kwargs):
36+
def __init__(self, base_url=None, alt_text=None, base_size=None,
37+
video=None, actions=None, **kwargs):
3738
"""__init__ method.
3839
3940
:param str base_url: Base URL of image.
4041
HTTPS
4142
:param str alt_text: Alternative text
4243
:param base_size: Width and height of base image
4344
:type base_size: :py:class:`linebot.models.imagemap.BaseSize`
45+
:param video: Video in imagemap message
46+
:type video: :py:class:`linebot.models.imagemap.Video`
4447
:param actions: Action when tapped
4548
:type actions: list[T <= :py:class:`linebot.models.imagemap.ImagemapAction`]
4649
:param kwargs:
@@ -53,6 +56,9 @@ def __init__(self, base_url=None, alt_text=None, base_size=None, actions=None, *
5356
self.base_size = self.get_or_new_from_json_dict(
5457
base_size, BaseSize
5558
)
59+
self.video = self.get_or_new_from_json_dict(
60+
video, Video
61+
)
5662

5763
new_actions = []
5864
if actions:
@@ -172,3 +178,52 @@ def __init__(self, x=None, y=None, width=None, height=None, **kwargs):
172178
self.y = y
173179
self.width = width
174180
self.height = height
181+
182+
183+
class Video(Base):
184+
"""Video.
185+
186+
https://developers.line.biz/en/reference/messaging-api/#imagemap-message
187+
188+
Defines the properties of the video object in imagemap.
189+
"""
190+
191+
def __init__(self, original_content_url=None, preview_image_url=None,
192+
area=None, external_link=None, **kwargs):
193+
"""__init__ method.
194+
195+
:param str original_content_url: URL of the video file
196+
:param str preview_image_url: URL of the preview image
197+
:param area: Defined video area
198+
:type area: :py:class:`linebot.models.imagemap.ImagemapArea`
199+
:param external_link: Defined video external link
200+
:type external_link: :py:class:`linebot.models.imagemap.ExternalLink`
201+
:param kwargs:
202+
"""
203+
super(Video, self).__init__(**kwargs)
204+
205+
self.original_content_url = original_content_url
206+
self.preview_image_url = preview_image_url
207+
self.area = self.get_or_new_from_json_dict(area, ImagemapArea)
208+
self.external_link = self.get_or_new_from_json_dict(external_link, ExternalLink)
209+
210+
211+
class ExternalLink(Base):
212+
"""ExternalLink.
213+
214+
https://developers.line.biz/en/reference/messaging-api/#imagemap-message
215+
216+
Defines URL and label of external link in video.
217+
"""
218+
219+
def __init__(self, link_uri=None, label=None, **kwargs):
220+
"""__init__ method.
221+
222+
:param str link_uri: Webpage URL
223+
:param str label: Label
224+
:param kwargs:
225+
"""
226+
super(ExternalLink, self).__init__(**kwargs)
227+
228+
self.link_uri = link_uri
229+
self.label = label

tests/api/test_send_imagemap_message.py

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@
2424
)
2525
from linebot.models import (
2626
ImagemapSendMessage, BaseSize, URIImagemapAction,
27-
ImagemapArea, MessageImagemapAction
27+
ImagemapArea, MessageImagemapAction,
28+
Video, ExternalLink
2829
)
2930

3031

@@ -36,6 +37,17 @@ def setUp(self):
3637
base_url='https://example.com/base',
3738
alt_text='this is an imagemap',
3839
base_size=BaseSize(height=1040, width=1040),
40+
video=Video(
41+
original_content_url='https://example.com/video.mp4',
42+
preview_image_url='https://example.com/video_preview.jpg',
43+
area=ImagemapArea(
44+
x=0, y=0, width=1040, height=585
45+
),
46+
external_link=ExternalLink(
47+
link_uri='https://example.com/see_more.html',
48+
label='See More',
49+
),
50+
),
3951
actions=[
4052
URIImagemapAction(
4153
link_uri='https://example.com/',
@@ -60,6 +72,20 @@ def setUp(self):
6072
"height": 1040,
6173
"width": 1040
6274
},
75+
"video": {
76+
"originalContentUrl": "https://example.com/video.mp4",
77+
"previewImageUrl": "https://example.com/video_preview.jpg",
78+
"area": {
79+
"x": 0,
80+
"y": 0,
81+
"width": 1040,
82+
"height": 585
83+
},
84+
"externalLink": {
85+
"linkUri": "https://example.com/see_more.html",
86+
"label": "See More"
87+
}
88+
},
6389
"actions": [
6490
{
6591
"type": "uri",

0 commit comments

Comments
 (0)