我正在用 Python 在 Flask 和 javascript 上构建一个 Web 应用程序。使用 YouTube 数据 API (python) 和 YouTube 播放器 API(javascript)。
虽然我已经开发了一些 Web 应用程序,但决定某些逻辑应该从服务器还是客户端工作对我来说仍然很模糊。当我从这个例子中学习时,我会对这件事有更深刻的理解。
我正在使用 Python 中的服务器中的 Youtube Data API 来检索与用户搜索查询最相关的视频。
my_app.py(在 Flask 上)
@app.route('/')
def main():
"""finds the most relevant video's id using YouTube Data API"""
search_param = request.args.get('video_search')
video_id = search_video(search_param)
return render_template("index.html", video_id=video_id)
索引.html
<iframe width="560" height="315" src="//www.youtube.com/embed/{{ video_id }}?autoplay=1" frameborder="0" allowfullscreen></iframe>
上面的效果很好。但是,我想要更多地控制 YouTube 播放器。我决定在 javascript 中使用 YouTube Player API,而不是像提供的那样手动嵌入视频。
index.html 与 javascript
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('iframe-player', { //inserts into 'iframe-player'
width: '640',
height: '390',
//videoId: 'M7lc1UVf-VE', <<<<< PAY ATTENTION TO THIS PART
events: {
'onReady': onPlayerReady, //onPlayaerReady will fire when onReady executes
'onStateChange': onPlayerStateChange //onPlayerStateChange will fire when onStateChange executes
}
});
}
这是相关的javascript代码。我需要传递一个 video_id 才能在 javascript 中使用 YouTube Player API。要使当前逻辑正常工作,流程应如下所示:
- 用户搜索视频
- 服务器:找到一个视频并返回
video_id
- 客户端:使用
video_id
从服务器返回,加载播放器并播放视频。
第一个问题: 但是,这不是不可能吗?在服务器返回任何内容之前加载 Javascript 函数。将值从服务器方法传递给 javascript 函数是不可能的。我对么?
第二个问题: 在这种情况下,最好不要使用 Python,而只使用 javascript 从客户端做所有事情?
第三个问题: 这会返回错误吗?
<div id="my_video_id">{{video_id}}</div>
<script>
var video_id = $("#my_video_id")
</script>
谢谢你。我尽力解释问题。我将不胜感激任何帮助。