Commit 99b5098c2cb1555fe13e5ffa48bd1b15a481b3e8

Authored by Adabriand Furtado
1 parent b2719bc3
Exists in master

Adicionado suporte ao Safari.

checkout.py
... ... @@ -4,6 +4,7 @@ import json
4 4 import os
5 5 import subprocess
6 6 import pyutil
  7 +import shutil
7 8  
8 9 getcwd=os.path.dirname(os.path.abspath(__file__))
9 10 bpy_script_action=os.path.join(getcwd, "bpy_checkout.py")
... ... @@ -55,7 +56,7 @@ def check_action(blend_file="", action_name="", action_fake_is_valid=True, min_f
55 56 pyutil.log("Blend file not exists", 4)
56 57 return 3
57 58  
58   -def render_video(upload_dir="", blend_file="", sign_name="", convert_to_webm=True, rm_original_video=True, hide_output=False):
  59 +def render_video(upload_dir="", blend_file="", sign_name="", convert_to_webm=True, rm_original_video=True, hide_output=False, convert_to_mp4_web_format=True):
59 60 if (file_exists(blend_file)):
60 61 if not ((isinstance(upload_dir, str) and isinstance(blend_file, str)) or
61 62 (isinstance(upload_dir, unicode) and isinstance(blend_file, unicode)) or
... ... @@ -63,21 +64,27 @@ def render_video(upload_dir="", blend_file="", sign_name="", convert_to_webm=Tru
63 64 pyutil.log("Args to render_video no match types", 4)
64 65 return 1
65 66 try:
66   - json_object= json.JSONEncoder().encode(
  67 + json_object = json.JSONEncoder().encode(
67 68 {
68 69 "upload_dir": upload_dir,
69 70 "sign_name": sign_name
70 71 }
71 72 )
72 73 if (hide_output):
73   - dev_null=open(os.devnull, 'w')
74   - result_code=subprocess.call(['blender', '-b', blend_file, '-noaudio', '-P', bpy_script_render, "--", json_object], stdout=dev_null, stderr=dev_null)
  74 + dev_null = open(os.devnull, 'w')
  75 + result_code = subprocess.call(['blender', '-b', blend_file, '-noaudio', '-P', bpy_script_render, "--", json_object], stdout=dev_null, stderr=dev_null)
75 76 else:
76 77 result_code=subprocess.call(['blender', '-b', blend_file, '-noaudio', '-P', bpy_script_render, "--", json_object])
77 78 if (convert_to_webm):
78   - video_mp4=os.path.join(upload_dir, sign_name + ".mp4")
79   - video_webm=os.path.join(upload_dir, sign_name + ".webm")
  79 + video_mp4 = os.path.join(upload_dir, sign_name + ".mp4")
  80 + video_webm = os.path.join(upload_dir, sign_name + ".webm")
80 81 subprocess.call(["avconv", "-loglevel", "0", "-y", "-i", video_mp4, "-r", "24", "-vcodec", "libvpx", video_webm])
  82 + if (convert_to_mp4_web_format):
  83 + video_mp4 = os.path.join(upload_dir, sign_name + ".mp4")
  84 + video_mp4_tmp = os.path.join(upload_dir, sign_name + "-tmp.mp4")
  85 + shutil.copy(video_mp4, video_mp4_tmp)
  86 + subprocess.call(["avconv", "-loglevel", "0", "-y", "-i", video_mp4_tmp, "-r", "24", "-vcodec", "libx264", video_mp4])
  87 + video_mp4 = video_mp4_tmp
81 88 if (rm_original_video):
82 89 subprocess.call(["rm", video_mp4])
83 90 if (result_code == 4):
... ...
view/js/corretor.js
... ... @@ -148,10 +148,10 @@
148 148  
149 149 function _createAnswer(task, status) {
150 150 var answer = {};
151   - var last_answer = task.info.last_answer;
152   - var hasLastAnswer = typeof last_answer != 'undefined';
  151 + var lastAnswer = task.info.last_answer;
  152 + var hasLastAnswer = typeof lastAnswer != 'undefined';
153 153 if (hasLastAnswer) {
154   - answer = last_answer;
  154 + answer = lastAnswer;
155 155 } else {
156 156 answer = {
157 157 'number_of_fixes' : 0,
... ... @@ -194,9 +194,9 @@
194 194  
195 195 function _finishTask(task, deferred, answer) {
196 196 _enableLoading();
197   - var last_answer = task.info.last_answer;
198   - var hasLastAnswer = typeof last_answer != 'undefined';
199   - var toSubmitUploadSessionId = hasLastAnswer ? last_answer.upload_session_id
  197 + var lastAnswer = task.info.last_answer;
  198 + var hasLastAnswer = typeof lastAnswer != 'undefined';
  199 + var toSubmitUploadSessionId = hasLastAnswer ? lastAnswer.upload_session_id
200 200 : uploadSessionId;
201 201 $.ajax({
202 202 type : 'POST',
... ... @@ -243,31 +243,35 @@
243 243  
244 244 function _loadTaskInfo(task, deferred) {
245 245 currentTaskId = task.id;
246   - var sign_name = task.info.sign_name;
247   - var blend_link = videosUrl + sign_name + '_AVATAR.blend';
248   - var avatar_vid_link = videosUrl + sign_name + '_AVATAR.webm';
249   - var ref_vid_link = videosUrl + sign_name + '_REF.webm';
250   - $('.sign-label').text(sign_name);
  246 + var signName = task.info.sign_name;
  247 + var blendLink = videosUrl + signName + '_AVATAR.blend';
  248 + var baseAvatarVidUrl = videosUrl + signName + '_AVATAR';
  249 + var avatarVidUrl = baseAvatarVidUrl + '.webm';
  250 + var baseRefVidUrl = videosUrl + signName + '_REF';
  251 + var refVidUrl = baseRefVidUrl + '.webm';
  252 +
  253 + $('.sign-label').text(signName);
251 254 $('#submission-date').text(
252 255 moment(task.info.submission_date).format('DD/MM/YYYY'));
253   - $('#ref-video').attr('src', ref_vid_link);
254   - $('#ref-video-link').attr('href', ref_vid_link);
  256 + $('#ref-video').html(videoHelper.getSource(baseRefVidUrl));
  257 + $('#ref-video-link').attr('href', refVidUrl);
255 258  
256   - var last_answer = task.info.last_answer;
257   - var hasLastAnswer = typeof last_answer != 'undefined';
  259 + var lastAnswer = task.info.last_answer;
  260 + var hasLastAnswer = typeof lastAnswer != 'undefined';
258 261 if (hasLastAnswer
259   - && typeof last_answer.upload_session_id != 'undefined') {
260   - blend_link = uploadsUrl + last_answer.upload_session_id + '/'
261   - + sign_name + '.blend';
262   - avatar_vid_link = uploadsUrl + last_answer.upload_session_id + '/'
263   - + sign_name + '.webm';
  262 + && typeof lastAnswer.upload_session_id != 'undefined') {
  263 + blendLink = uploadsUrl + lastAnswer.upload_session_id + '/'
  264 + + signName + '.blend';
  265 + baseAvatarVidUrl = uploadsUrl + lastAnswer.upload_session_id + '/'
  266 + + signName;
  267 + avatarVidUrl = baseAvatarVidUrl + '.webm';
264 268 $('#last-edit-date').text(
265   - moment(last_answer.last_edit_date).format('DD/MM/YYYY'));
266   - $('#number-of-fixes').text(last_answer.number_of_fixes);
  269 + moment(lastAnswer.last_edit_date).format('DD/MM/YYYY'));
  270 + $('#number-of-fixes').text(lastAnswer.number_of_fixes);
267 271 _showApprovalGUI(task, deferred);
268 272 }
269   - $('#blend-link').attr('href', blend_link);
270   - $('#avatar-video').attr('src', avatar_vid_link);
  273 + $('#blend-link').attr('href', blendLink);
  274 + $('#avatar-video').html(videoHelper.getSource(baseAvatarVidUrl));
271 275 }
272 276  
273 277 function _loadMainComponents() {
... ...
view/js/helpers/video-helper.js 0 → 100644
... ... @@ -0,0 +1,31 @@
  1 +(function(videoHelper, $, undefined) {
  2 +
  3 + function _getSource(videoBaseUrl) {
  4 + return '<source src="' + videoBaseUrl + '.webm" type="video/webm">'
  5 + + '<source src="' + videoBaseUrl
  6 + + '.mp4" type="video/mp4">Sem suporte a vídeos';
  7 + }
  8 +
  9 + function _controlVideo(elId, toPlay) {
  10 + if ($(elId).length === 0)
  11 + return;
  12 + if (toPlay) {
  13 + $(elId).get(0).play();
  14 + } else {
  15 + $(elId).get(0).pause();
  16 + }
  17 + }
  18 +
  19 + videoHelper.play = function(elId) {
  20 + _controlVideo(elId, true);
  21 + };
  22 +
  23 + videoHelper.pause = function(elId) {
  24 + _controlVideo(elId, false);
  25 + };
  26 +
  27 + videoHelper.getSource = function(videoBaseUrl) {
  28 + return _getSource(videoBaseUrl);
  29 + };
  30 +
  31 +}(window.videoHelper = window.videoHelper || {}, jQuery));
... ...
view/templates/index.html
... ... @@ -7,6 +7,7 @@
7 7 <script src="{{ server }}/js/external-libs/js.cookie.js"></script>
8 8 <script src="{{ server }}/js/helpers/pybossa-api-helper.js"></script>
9 9 <script src="{{ server }}/js/helpers/load-html-helper.js"></script>
  10 +<script src="{{ server }}/js/helpers/video-helper.js"></script>
10 11 <script src="{{ server }}/js/ranking.js"></script>
11 12 <script src="{{ server }}/js/corretor.js"></script>
12 13  
... ... @@ -69,10 +70,9 @@
69 70 ANIMAÇÃO ATUAL "<span class="sign-label"></span>":
70 71 </h6>
71 72 </div>
72   - <div class="row video-container">
73   - <video id="avatar-video" src="" preload="metadata"
  73 + <div class="row video-container">
  74 + <video id="avatar-video" preload="metadata"
74 75 class="video-body" autoplay loop controls>
75   - <source type="video/webm">
76 76 </video>
77 77 </div>
78 78 <div class="row link-container">
... ... @@ -111,9 +111,8 @@
111 111 </h6>
112 112 </div>
113 113 <div class="row video-container">
114   - <video id="ref-video" src="" preload="metadata" class="video-body"
  114 + <video id="ref-video" preload="metadata" class="video-body"
115 115 autoplay loop controls>
116   - <source type="video/webm">
117 116 </video>
118 117 </div>
119 118 <div class="row link-container">
... ...