def default_movie(m): """ Replace a movie entry by a proper URL with text. The idea is to link to an HTML file with the media element. """ # Note: essentially same code as html_movie, but # the HTML code is embedded in a file. global _counter_for_html_movie_player filename = m.group('filename') caption = m.group('caption').strip() from html import html_movie text = html_movie(m) # Make an HTML file where the movie file can be played # (alternative to launching a player manually). _counter_for_html_movie_player += 1 moviehtml = 'movie_player%d' % \ _counter_for_html_movie_player + '.html' f = open(moviehtml, 'w') f.write(""" <html> <head> </head> <body> <title>Embedding media in HTML</title> %s </body> </html> """ % text) print '*** made link to new HTML file %s\n with code to display the movie \n %s' % (moviehtml, filename) text = '%s `%s`: load "`%s`": "%s" into a browser' % \ (caption, filename, moviehtml, moviehtml) return text
def rst_movie(m): html_text = html_movie(m) html_text = indent_lines(html_text, 'sphinx') rst_text = '.. raw:: html\n' + html_text + '\n' filename = m.group('filename') if not filename.startswith('http') and not filename.startswith('mov'): errwarn('*** warning: movie file %s' % filename) errwarn(' is not in mov* subdirectory - this will give problems with sphinx') return rst_text
def rst_movie(m): html_text = html_movie(m) html_text = indent_lines(html_text, "sphinx") rst_text = ".. raw:: html\n" + html_text + "\n" filename = m.group("filename") if not filename.startswith("http") and not filename.startswith("mov"): print "*** warning: movie file %s" % filename print " is not in mov* subdirectory - this will give problems with sphinx" return rst_text
def rst_movie(m): html_text = html_movie(m) html_text = indent_lines(html_text, 'sphinx') rst_text = '.. raw:: html\n' + html_text + '\n' filename = m.group('filename') if not filename.startswith('http') and not filename.startswith('mov'): print '*** warning: movie file %s' % filename print ' is not in mov* subdirectory - this will give problems with sphinx' return rst_text
def ipynb_movie(m): # m.group() must be called before m.group('name') text = '<!-- dom:%s -->' % m.group() global html_encountered, movie_encountered, movie_files filename = m.group('filename') caption = m.group('caption').strip() youtube = False if 'youtu.be' in filename or 'youtube.com' in filename: youtube = True if '*' in filename or '->' in filename: errwarn('*** warning: * or -> in movie filenames is not supported in ipynb') return text def YouTubeVideo(filename): # Use YouTubeVideo object if 'watch?v=' in filename: name = filename.split('watch?v=')[1] elif 'youtu.be/' in filename: name = filename.split('youtu.be/')[1] else: errwarn('*** error: youtube movie name "%s" could not be interpreted' % filename) _abort() text = '' global movie_encountered if not movie_encountered: text += 'from IPython.display import YouTubeVideo\n' movie_encountered = True text += 'YouTubeVideo("%s")\n' % name return text text += '\n<!-- begin movie -->\n' display_method = option('ipynb_movie=', 'HTML') if display_method == 'md': text += html_movie(m) elif display_method.startswith('HTML'): text += '\n!bc pycod\n' if youtube and 'YouTube' in display_method: text += YouTubeVideo(filename) if caption: text += '\nprint "%s"' % caption else: # Use HTML formatting if not html_encountered: text += 'from IPython.display import HTML\n' html_encountered = True text += '_s = """' + html_movie(m) + '"""\n' text += 'HTML(_s)\n' if not filename.startswith('http'): movie_files.append(filename) text += '!ec\n' elif display_method == 'ipynb': text += '!bc pycod\n' if youtube: text += YouTubeVideo(filename) if caption: text += '\nprint "%s"' % caption else: # see http://nbviewer.ipython.org/github/ipython/ipython/blob/1.x/examples/notebooks/Part%205%20-%20Rich%20Display%20System.ipynb # http://stackoverflow.com/questions/18019477/how-can-i-play-a-local-video-in-my-ipython-notebook # http://python.6.x6.nabble.com/IPython-User-embedding-non-YouTube-movies-in-the-IPython-notebook-td5024035.html # Just support .mp4, .ogg, and.webm stem, ext = os.path.splitext(filename) if ext not in ('.mp4', '.ogg', '.webm'): errwarn('*** error: movie "%s" in format %s is not supported for --ipynb_movie=%s' % (filename, ext, display_method)) errwarn(' use --ipynb_movie=HTML instead') _abort() height = 365 width = 640 if filename.startswith('http'): file_open = 'import urllib\nvideo = urllib.urlopen("%s").read()' % filename else: file_open = 'video = open("%s", "rb").read()' % filename text += """ %s from base64 import b64encode video_encoded = b64encode(video) video_tag = '<video controls loop alt="%s" height="%s" width="%s" src="data:video/%s;base64,{0}">'.format(video_encoded) """ % (file_open, filename, height, width, ext[1:]) if not filename.startswith('http'): movie_files.append(filename) if not html_encountered: text += 'from IPython.display import HTML\n' html_encountered = True text += 'HTML(data=video_tag)\n' if caption: text += '\nprint "%s"' % caption text += '!ec\n' else: errwarn('*** error: --ipynb_movie=%s is not supported' % display_method) _abort() text += '<!-- end movie -->\n' return text
def ipynb_movie(m): # m.group() must be called before m.group('name') text = '<!-- dom:%s -->' % m.group() global html_encountered, movie_encountered, movie_files filename = m.group('filename') caption = m.group('caption').strip() youtube = False if 'youtu.be' in filename or 'youtube.com' in filename: youtube = True if '*' in filename or '->' in filename: print '*** warning: * or -> in movie filenames is not supported in ipynb' return text def YouTubeVideo(filename): # Use YouTubeVideo object if 'watch?v=' in filename: name = filename.split('watch?v=')[1] elif 'youtu.be/' in filename: name = filename.split('youtu.be/')[1] else: print '*** error: youtube movie name "%s" could not be interpreted' % filename _abort() text = '' global movie_encountered if not movie_encountered: text += 'from IPython.display import YouTubeVideo\n' movie_encountered = True text += 'YouTubeVideo("%s")\n' % name return text text += '\n<!-- begin movie -->\n' display_method = option('ipynb_movie=', 'HTML') if display_method == 'md': text += html_movie(m) elif display_method.startswith('HTML'): text += '\n!bc pycod\n' if youtube and 'YouTube' in display_method: text += YouTubeVideo(filename) if caption: text += '\nprint "%s"' % caption else: # Use HTML formatting if not html_encountered: text += 'from IPython.display import HTML\n' html_encountered = True text += '_s = """' + html_movie(m) + '"""\n' text += 'HTML(_s)\n' if not filename.startswith('http'): movie_files.append(filename) text += '!ec\n' elif display_method == 'ipynb': text += '!bc pycod\n' if youtube: text += YouTubeVideo(filename) if caption: text += '\nprint "%s"' % caption else: # see http://nbviewer.ipython.org/github/ipython/ipython/blob/1.x/examples/notebooks/Part%205%20-%20Rich%20Display%20System.ipynb # http://stackoverflow.com/questions/18019477/how-can-i-play-a-local-video-in-my-ipython-notebook # http://python.6.x6.nabble.com/IPython-User-embedding-non-YouTube-movies-in-the-IPython-notebook-td5024035.html # Just support .mp4, .ogg, and.webm stem, ext = os.path.splitext(filename) if ext not in ('.mp4', '.ogg', '.webm'): print '*** error: movie "%s" in format %s is not supported for --ipynb_movie=%s' % ( filename, ext, display_method) print ' use --ipynb_movie=HTML instead' _abort() height = 365 width = 640 if filename.startswith('http'): file_open = 'import urllib\nvideo = urllib.urlopen("%s").read()' % filename else: file_open = 'video = open("%s", "rb").read()' % filename text += """ %s from base64 import b64encode video_encoded = b64encode(video) video_tag = '<video controls loop alt="%s" height="%s" width="%s" src="data:video/%s;base64,{0}">'.format(video_encoded) """ % (file_open, filename, height, width, ext[1:]) if not filename.startswith('http'): movie_files.append(filename) if not html_encountered: text += 'from IPython.display import HTML\n' html_encountered = True text += 'HTML(data=video_tag)\n' if caption: text += '\nprint "%s"' % caption text += '!ec\n' else: print '*** error: --ipynb_movie=%s is not supported' % display_method _abort() text += '<!-- end movie -->\n' return text
def rst_movie(m): html_text = html_movie(m) html_text = indent_lines(html_text, 'sphinx') rst_text = '.. raw:: html\n' + html_text + '\n' return rst_text