Holger Frey
7 years ago
1 changed files with 149 additions and 0 deletions
@ -0,0 +1,149 @@ |
|||||||
|
# -*- coding: iso-8859-1 -*- |
||||||
|
u""" |
||||||
|
MoinMoin - YouTube macro Version 0.6 |
||||||
|
Displays an embedded object with the wanted video or |
||||||
|
displays a list of videos (videobar). |
||||||
|
|
||||||
|
<<YouTube(id="YouTubeID", keyword="keyword")>> |
||||||
|
Default is to use the current pagename as keyword. |
||||||
|
|
||||||
|
Examples: |
||||||
|
* <<YouTube>> |
||||||
|
* <<YouTube(id=2SXKM-dLJV8)>> |
||||||
|
* <<YouTube(keyword="iron maiden")>> |
||||||
|
|
||||||
|
@copyright: 2008 by MarcelHäfner (http://moinmo.in/MarcelHäfner), |
||||||
|
2010 by ThomasWaldmann (http://moinmo.in/ThomasWaldmann) |
||||||
|
@license: GNU GPL, see COPYING for details. |
||||||
|
|
||||||
|
Attention! The "keyword" part is created with the "Google AJAX Search API Tools". |
||||||
|
Licence Information can be viewed under: http://code.google.com/intl/de-DE/apis/ajaxsearch/terms.html |
||||||
|
|
||||||
|
@TODO: |
||||||
|
* Change the hardcoded https string into http/https depending on the requested url. |
||||||
|
* Don't use the google ajax stuff. |
||||||
|
* Check if youtube videos are disabled (mimetypes_xss). |
||||||
|
|
||||||
|
""" |
||||||
|
|
||||||
|
from MoinMoin import wikiutil |
||||||
|
|
||||||
|
|
||||||
|
def macro_YouTube(macro, id, keyword): |
||||||
|
request = macro.request |
||||||
|
_ = request.getText |
||||||
|
html = u"" |
||||||
|
|
||||||
|
if id is None and keyword is None: |
||||||
|
# default: keyword will be used and default to current page name |
||||||
|
keyword = macro.formatter.page.page_name |
||||||
|
|
||||||
|
if keyword is not None: |
||||||
|
# for the videobar to display the flash videos (keyword) |
||||||
|
parameters = { |
||||||
|
"keyword": wikiutil.escape(keyword), |
||||||
|
"msg_youtubelink": _("View the related videos on YouTube."), |
||||||
|
} |
||||||
|
html = u""" |
||||||
|
<div class="youtube youtube_keyword"> |
||||||
|
<!-- ++Begin Video Bar Wizard Generated Code++ --> |
||||||
|
<!-- |
||||||
|
// Created with a Google AJAX Search Wizard |
||||||
|
// http://code.google.com/apis/ajaxsearch/wizards.html |
||||||
|
--> |
||||||
|
|
||||||
|
<!-- |
||||||
|
// The Following div element will end up holding the actual videobar. |
||||||
|
// You can place this anywhere on your page. |
||||||
|
--> |
||||||
|
<div id="videoBar-bar"> |
||||||
|
<span style="color:#676767;font-size:11px;margin:10px;padding:4px;">Loading...</span> |
||||||
|
</div> |
||||||
|
|
||||||
|
<!-- Ajax Search Api and Stylesheet |
||||||
|
// Note: If you are already using the AJAX Search API, then do not include it |
||||||
|
// or its stylesheet again. |
||||||
|
--> |
||||||
|
<script src="https://www.google.com/uds/api?file=uds.js&v=1.0&source=uds-vbw" |
||||||
|
type="text/javascript"></script> |
||||||
|
<style type="text/css"> |
||||||
|
@import url("https://www.google.com/uds/css/gsearch.css"); |
||||||
|
</style> |
||||||
|
|
||||||
|
<!-- Video Bar Code and Stylesheet --> |
||||||
|
<script type="text/javascript"> |
||||||
|
window._uds_vbw_donotrepair = true; |
||||||
|
</script> |
||||||
|
<script src="https://www.google.com/uds/solutions/videobar/gsvideobar.js?mode=new" |
||||||
|
type="text/javascript"></script> |
||||||
|
<style type="text/css"> |
||||||
|
@import url("https://www.google.com/uds/solutions/videobar/gsvideobar.css"); |
||||||
|
</style> |
||||||
|
|
||||||
|
<style type="text/css"> |
||||||
|
.playerInnerBox_gsvb .player_gsvb { |
||||||
|
width : 320px; |
||||||
|
height : 260px; |
||||||
|
} |
||||||
|
</style> |
||||||
|
<script type="text/javascript"> |
||||||
|
function LoadVideoBar() { |
||||||
|
|
||||||
|
var videoBar; |
||||||
|
var options = { |
||||||
|
largeResultSet : !true, |
||||||
|
horizontal : true, |
||||||
|
autoExecuteList : { |
||||||
|
cycleTime : GSvideoBar.CYCLE_TIME_MEDIUM, |
||||||
|
cycleMode : GSvideoBar.CYCLE_MODE_LINEAR, |
||||||
|
executeList : ["%(keyword)s"] |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
videoBar = new GSvideoBar(document.getElementById("videoBar-bar"), |
||||||
|
GSvideoBar.PLAYER_ROOT_FLOATING, |
||||||
|
options); |
||||||
|
} |
||||||
|
// arrange for this function to be called during body.onload |
||||||
|
// event processing |
||||||
|
GSearch.setOnLoadCallback(LoadVideoBar); |
||||||
|
</script> |
||||||
|
<!-- ++End Video Bar Wizard Generated Code++ --> |
||||||
|
<p class="youtube_link" style="display:none;"> |
||||||
|
<a href="http://www.youtube.com/results?search_query=%(keyword)s">%(msg_youtubelink)s</a> |
||||||
|
</p> |
||||||
|
</div> |
||||||
|
""" % parameters |
||||||
|
|
||||||
|
if id is not None: |
||||||
|
# for the embedded flashplayer to play a single video (id) |
||||||
|
parameters = { |
||||||
|
"id": wikiutil.escape(id), |
||||||
|
"msg_youtubelink": _("View the video on YouTube."), |
||||||
|
} |
||||||
|
html = u""" |
||||||
|
<div class="youtube %(id)s"> |
||||||
|
|
||||||
|
<object width="425" height="344"> |
||||||
|
<param name="movie" value="http://www.youtube.com/v/%(id)s&rel=0&fs=1"></param> |
||||||
|
<param name="rel" value="0"></param> |
||||||
|
<param name="wmode" value="transparent"> |
||||||
|
<param name="allowFullScreen" value="true"></param> |
||||||
|
<embed src="http://www.youtube.com/v/%(id)s&fs=1&rel=0" |
||||||
|
wmode="transparent" |
||||||
|
type="application/x-shockwave-flash" |
||||||
|
allowfullscreen="true" |
||||||
|
rel="false" |
||||||
|
width="425" height="344"> |
||||||
|
</embed> |
||||||
|
</object> |
||||||
|
|
||||||
|
<p class="youtube_link" style="display:none;"> |
||||||
|
<a href="http://www.youtube.com/v/%(id)s&fs=1&rel=0">%(msg_youtubelink)s</a> |
||||||
|
</p> |
||||||
|
|
||||||
|
</div> |
||||||
|
""" % parameters |
||||||
|
|
||||||
|
return macro.formatter.rawHTML(html) |
||||||
|
|
Loading…
Reference in new issue