Show More
@@ -0,0 +1,37 b'' | |||||
|
1 | Enable to add extra attributes to iframe | |||
|
2 | ======================================== | |||
|
3 | ||||
|
4 | You can add any extra attributes to the ``<iframe>`` tag | |||
|
5 | since the argument ``extras`` has been added to the ``IFrame`` class. | |||
|
6 | for example:: | |||
|
7 | ||||
|
8 | In [1]: from IPython.display import IFrame | |||
|
9 | ||||
|
10 | In [2]: print(IFrame(src="src", width=300, height=300, extras=["hello", "world"])._repr_html_()) | |||
|
11 | ||||
|
12 | <iframe | |||
|
13 | width="300" | |||
|
14 | height="300" | |||
|
15 | src="src" | |||
|
16 | frameborder="0" | |||
|
17 | allowfullscreen | |||
|
18 | hello world | |||
|
19 | ></iframe> | |||
|
20 | ||||
|
21 | Using it, you can autoplay ``YouTubeVideo`` by adding ``'allow="autoplay"'``, | |||
|
22 | even in browsers that disable it by default, such as Google Chrome. | |||
|
23 | And, you can write it more briefly by using the argument ``allow_autoplay``. | |||
|
24 | :: | |||
|
25 | ||||
|
26 | In [1]: from IPython.display import YouTubeVideo | |||
|
27 | ||||
|
28 | In [2]: print(YouTubeVideo("video-id", allow_autoplay=True)._repr_html_()) | |||
|
29 | ||||
|
30 | <iframe | |||
|
31 | width="400" | |||
|
32 | height="300" | |||
|
33 | src="https://www.youtube.com/embed/video-id?autoplay=1" | |||
|
34 | frameborder="0" | |||
|
35 | allowfullscreen | |||
|
36 | allow="autoplay" | |||
|
37 | ></iframe> |
@@ -8,7 +8,7 b' from os import walk, sep, fsdecode' | |||||
8 |
|
8 | |||
9 | from IPython.core.display import DisplayObject, TextDisplayObject |
|
9 | from IPython.core.display import DisplayObject, TextDisplayObject | |
10 |
|
10 | |||
11 | from typing import Tuple |
|
11 | from typing import Tuple, Iterable | |
12 |
|
12 | |||
13 | __all__ = ['Audio', 'IFrame', 'YouTubeVideo', 'VimeoVideo', 'ScribdDocument', |
|
13 | __all__ = ['Audio', 'IFrame', 'YouTubeVideo', 'VimeoVideo', 'ScribdDocument', | |
14 | 'FileLink', 'FileLinks', 'Code'] |
|
14 | 'FileLink', 'FileLinks', 'Code'] | |
@@ -263,13 +263,18 b' class IFrame(object):' | |||||
263 | src="{src}{params}" |
|
263 | src="{src}{params}" | |
264 | frameborder="0" |
|
264 | frameborder="0" | |
265 | allowfullscreen |
|
265 | allowfullscreen | |
|
266 | {extras} | |||
266 | ></iframe> |
|
267 | ></iframe> | |
267 | """ |
|
268 | """ | |
268 |
|
269 | |||
269 | def __init__(self, src, width, height, **kwargs): |
|
270 | def __init__(self, src, width, height, extras: Iterable[str] = None, **kwargs): | |
|
271 | if extras is None: | |||
|
272 | extras = [] | |||
|
273 | ||||
270 | self.src = src |
|
274 | self.src = src | |
271 | self.width = width |
|
275 | self.width = width | |
272 | self.height = height |
|
276 | self.height = height | |
|
277 | self.extras = extras | |||
273 | self.params = kwargs |
|
278 | self.params = kwargs | |
274 |
|
279 | |||
275 | def _repr_html_(self): |
|
280 | def _repr_html_(self): | |
@@ -279,10 +284,14 b' class IFrame(object):' | |||||
279 | params = "?" + urlencode(self.params) |
|
284 | params = "?" + urlencode(self.params) | |
280 | else: |
|
285 | else: | |
281 | params = "" |
|
286 | params = "" | |
282 |
return self.iframe.format( |
|
287 | return self.iframe.format( | |
283 | width=self.width, |
|
288 | src=self.src, | |
284 | height=self.height, |
|
289 | width=self.width, | |
285 | params=params) |
|
290 | height=self.height, | |
|
291 | params=params, | |||
|
292 | extras=" ".join(self.extras), | |||
|
293 | ) | |||
|
294 | ||||
286 |
|
295 | |||
287 | class YouTubeVideo(IFrame): |
|
296 | class YouTubeVideo(IFrame): | |
288 | """Class for embedding a YouTube Video in an IPython session, based on its video id. |
|
297 | """Class for embedding a YouTube Video in an IPython session, based on its video id. | |
@@ -310,11 +319,14 b' class YouTubeVideo(IFrame):' | |||||
310 | will be inserted in the document. |
|
319 | will be inserted in the document. | |
311 | """ |
|
320 | """ | |
312 |
|
321 | |||
313 | def __init__(self, id, width=400, height=300, **kwargs): |
|
322 | def __init__(self, id, width=400, height=300, allow_autoplay=False, **kwargs): | |
314 | self.id=id |
|
323 | self.id=id | |
315 | src = "https://www.youtube.com/embed/{0}".format(id) |
|
324 | src = "https://www.youtube.com/embed/{0}".format(id) | |
|
325 | if allow_autoplay: | |||
|
326 | extras = list(kwargs.get("extras", [])) + ['allow="autoplay"'] | |||
|
327 | kwargs.update(autoplay=1, extras=extras) | |||
316 | super(YouTubeVideo, self).__init__(src, width, height, **kwargs) |
|
328 | super(YouTubeVideo, self).__init__(src, width, height, **kwargs) | |
317 |
|
329 | |||
318 | def _repr_jpeg_(self): |
|
330 | def _repr_jpeg_(self): | |
319 | # Deferred import |
|
331 | # Deferred import | |
320 | from urllib.request import urlopen |
|
332 | from urllib.request import urlopen |
General Comments 0
You need to be logged in to leave comments.
Login now