Skip to content
This repository was archived by the owner on Nov 22, 2021. It is now read-only.

Commit 29274bd

Browse files
committed
add new blocks for youtube
1 parent 2331522 commit 29274bd

File tree

5 files changed

+86
-19
lines changed

5 files changed

+86
-19
lines changed

blocks/msg/en.js

+4
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,10 @@ Blockly.Msg.DEMO_YOUTUBE_LIST_LISTNUM = "video list's";
298298
Blockly.Msg.DEMO_YOUTUBE_LIST_NUM = "video";
299299
Blockly.Msg.DEMO_YOUTUBE_VIDEO_ID = " default video id:";
300300
Blockly.Msg.DEMO_YOUTUBE_CHANGEID_ID = "change id:";
301+
Blockly.Msg.DEMO_YOUTUBE_CURRENTTIME = "current time (sec)";
302+
Blockly.Msg.DEMO_YOUTUBE_SET = "Set";
303+
Blockly.Msg.DEMO_YOUTUBE_SEEKTO = "seek to";
304+
Blockly.Msg.DEMO_YOUTUBE_SEC = "sec";
301305
Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_SET = "Set";
302306
Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_VOLUME = "Volume:";
303307
Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_SPEED = "Speed:";

blocks/msg/zh-hant.js

+9-4
Original file line numberDiff line numberDiff line change
@@ -599,16 +599,21 @@ Blockly.Msg.DEMO_YOUTUBE_DEFAULT_1 = "影片";
599599
Blockly.Msg.DEMO_YOUTUBE_DEFAULT_2 = "影片清單";
600600
Blockly.Msg.DEMO_YOUTUBE_DEFAULT_ID = "的 id 為";
601601
Blockly.Msg.DEMO_YOUTUBE_PLAY = "播放";
602-
Blockly.Msg.DEMO_YOUTUBE_LIST = "影片清單的";
602+
Blockly.Msg.DEMO_YOUTUBE_LIST = "清單的";
603603
Blockly.Msg.DEMO_YOUTUBE_LIST_PRE = "上一段";
604604
Blockly.Msg.DEMO_YOUTUBE_LIST_NEXT = "下一段";
605-
Blockly.Msg.DEMO_YOUTUBE_LIST_LISTNUM = "影片清單的第";
605+
Blockly.Msg.DEMO_YOUTUBE_LIST_LISTNUM = "清單的第";
606606
Blockly.Msg.DEMO_YOUTUBE_LIST_NUM = "段";
607-
Blockly.Msg.DEMO_YOUTUBE_VIDEO_ID = " 預設的影片 id:";
607+
Blockly.Msg.DEMO_YOUTUBE_VIDEO_ID = " 預設的影片 id:";
608608
Blockly.Msg.DEMO_YOUTUBE_CHANGEID_ID = "影片,要更換的影片 id:";
609+
Blockly.Msg.DEMO_YOUTUBE_CURRENTTIME = "當前播放時間 ( 秒 )";
610+
Blockly.Msg.DEMO_YOUTUBE_SET = "設定";
611+
Blockly.Msg.DEMO_YOUTUBE_SEEKTO = "前往第";
612+
Blockly.Msg.DEMO_YOUTUBE_SEC = "秒";
609613
Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_SET = "設定";
610614
Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_VOLUME = "音量";
611-
Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_SPEED = " 的播放速度";
615+
Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_SPEED = "播放速度";
616+
Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_VERYSLOW = "超級慢";
612617
Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_SLOW = "慢";
613618
Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_NORMAL = "正常";
614619
Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_FAST = "快";

blocks/webduino.js

+50-13
Original file line numberDiff line numberDiff line change
@@ -300,10 +300,13 @@ Blockly.Blocks['demo_youtube'] = {
300300
this.appendValueInput("name_")
301301
.appendField(Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE);
302302
this.appendDummyInput()
303-
.appendField(Blockly.Msg.DEMO_YOUTUBE_DEFAULT)
304-
.appendField(new Blockly.FieldDropdown([[Blockly.Msg.DEMO_YOUTUBE_DEFAULT_1, "1"], [Blockly.Msg.DEMO_YOUTUBE_DEFAULT_2, "2"]]), "type_")
305-
.appendField(Blockly.Msg.DEMO_YOUTUBE_DEFAULT_ID)
306-
.appendField(new Blockly.FieldTextInput("..."), "id_");
303+
.appendField(Blockly.Msg.DEMO_YOUTUBE_DEFAULT)
304+
.appendField(new Blockly.FieldDropdown([
305+
[Blockly.Msg.DEMO_YOUTUBE_DEFAULT_1, "1"],
306+
[Blockly.Msg.DEMO_YOUTUBE_DEFAULT_2, "2"]
307+
]), "type_")
308+
.appendField(Blockly.Msg.DEMO_YOUTUBE_DEFAULT_ID)
309+
.appendField(new Blockly.FieldTextInput("..."), "id_");
307310
this.setPreviousStatement(true);
308311
this.setNextStatement(true);
309312
this.setTooltip('');
@@ -335,10 +338,10 @@ Blockly.Blocks['demo_youtube_speed'] = {
335338
.appendField(new Blockly.FieldVariable("youtube"), "name_")
336339
.appendField(Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_SPEED)
337340
.appendField(new Blockly.FieldDropdown([
341+
[Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_VERYSLOW, "0.25"],
338342
[Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_SLOW, "0.5"],
339343
[Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_NORMAL, "1"],
340-
[Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_FAST, "1.25"],
341-
[Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_VERYFAST, "1.5"],
344+
[Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_FAST, "1.5"],
342345
[Blockly.Msg.WEBDUINO_ULTRASONIC_YOUTUBE_SUPERFAST, "2"]
343346
]), "speed_");
344347
this.setPreviousStatement(true);
@@ -384,7 +387,7 @@ Blockly.Blocks['demo_youtube_status'] = {
384387
]), "status_");
385388
this.setOutput(true);
386389
this.setTooltip('');
387-
this.setColour(Blockly.Blocks.colour.HUE);
390+
this.setColour(80);
388391
this.setHelpUrl('https://webduino.io');
389392
}
390393
};
@@ -411,7 +414,10 @@ Blockly.Blocks['demo_youtube_listcontrol'] = {
411414
.appendField(Blockly.Msg.DEMO_YOUTUBE_PLAY)
412415
.appendField(new Blockly.FieldVariable("youtube"), "name_")
413416
.appendField(Blockly.Msg.DEMO_YOUTUBE_LIST)
414-
.appendField(new Blockly.FieldDropdown([[Blockly.Msg.DEMO_YOUTUBE_LIST_PRE, ".previousVideo()"], [Blockly.Msg.DEMO_YOUTUBE_LIST_NEXT, ".nextVideo()"]]), "preOrNext_");
417+
.appendField(new Blockly.FieldDropdown([
418+
[Blockly.Msg.DEMO_YOUTUBE_LIST_PRE, ".previousVideo()"],
419+
[Blockly.Msg.DEMO_YOUTUBE_LIST_NEXT, ".nextVideo()"]
420+
]), "preOrNext_");
415421
this.setPreviousStatement(true);
416422
this.setNextStatement(true);
417423
this.setTooltip('');
@@ -422,14 +428,45 @@ Blockly.Blocks['demo_youtube_listcontrol'] = {
422428

423429
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#wnw8t9
424430
Blockly.Blocks['demo_youtube_listnum'] = {
425-
init: function() {
431+
init: function () {
426432
this.appendValueInput("num_")
427-
.setCheck("Number")
428-
.appendField(Blockly.Msg.DEMO_YOUTUBE_PLAY)
433+
.setCheck("Number")
434+
.appendField(Blockly.Msg.DEMO_YOUTUBE_PLAY)
435+
.appendField(new Blockly.FieldVariable("youtube"), "name_")
436+
.appendField(Blockly.Msg.DEMO_YOUTUBE_LIST_LISTNUM);
437+
this.appendDummyInput()
438+
.appendField(Blockly.Msg.DEMO_YOUTUBE_LIST_NUM);
439+
this.setPreviousStatement(true, null);
440+
this.setNextStatement(true, null);
441+
this.setTooltip('');
442+
this.setColour(Blockly.Blocks.colour.HUE);
443+
this.setHelpUrl('http://www.example.com/');
444+
}
445+
};
446+
447+
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#who4oo
448+
Blockly.Blocks['demo_youtube_currenttime'] = {
449+
init: function () {
450+
this.appendDummyInput()
451+
.appendField(new Blockly.FieldVariable("youtube"), "name_")
452+
.appendField(Blockly.Msg.DEMO_YOUTUBE_CURRENTTIME);
453+
this.setOutput(true, null);
454+
this.setTooltip('');
455+
this.setColour(80);
456+
this.setHelpUrl('http://www.example.com/');
457+
}
458+
};
459+
460+
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#fg9c8k
461+
Blockly.Blocks['demo_youtube_seekto'] = {
462+
init: function () {
463+
this.appendValueInput("sec_")
464+
.setCheck("Number")
465+
.appendField(Blockly.Msg.DEMO_YOUTUBE_SET)
429466
.appendField(new Blockly.FieldVariable("youtube"), "name_")
430-
.appendField(Blockly.Msg.DEMO_YOUTUBE_LIST_LISTNUM);
467+
.appendField(Blockly.Msg.DEMO_YOUTUBE_SEEKTO);
431468
this.appendDummyInput()
432-
.appendField(Blockly.Msg.DEMO_YOUTUBE_LIST_NUM);
469+
.appendField(Blockly.Msg.DEMO_YOUTUBE_SEC);
433470
this.setPreviousStatement(true, null);
434471
this.setNextStatement(true, null);
435472
this.setTooltip('');

generators/webduino.js

+14
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,20 @@ Blockly.JavaScript['demo_youtube_listnum'] = function(block) {
315315
return code;
316316
};
317317

318+
319+
Blockly.JavaScript['demo_youtube_currenttime'] = function(block) {
320+
var variable_name_ = Blockly.JavaScript.variableDB_.getName(block.getFieldValue('name_'), Blockly.Variables.NAME_TYPE);
321+
var code = 'Math.round(' + variable_name_ + '.getCurrentTime()*10)/10';
322+
return [code, Blockly.JavaScript.ORDER_NONE];
323+
};
324+
325+
Blockly.JavaScript['demo_youtube_seekto'] = function(block) {
326+
var variable_name_ = Blockly.JavaScript.variableDB_.getName(block.getFieldValue('name_'), Blockly.Variables.NAME_TYPE);
327+
var value_sec_ = Blockly.JavaScript.valueToCode(block, 'sec_', Blockly.JavaScript.ORDER_ATOMIC);
328+
var code = variable_name_ + '.seekTo(' + value_sec_ + ');\n';
329+
return code;
330+
};
331+
318332
//controller
319333
Blockly.JavaScript['demo_controller'] = function (block) {
320334
var dropdown_event_ = block.getFieldValue('event_');

toolbox/index.xml

+9-2
Original file line numberDiff line numberDiff line change
@@ -1013,7 +1013,6 @@
10131013
</value>
10141014
</block>
10151015
<block type="demo_youtube_control"></block>
1016-
<block type="demo_youtube_status"></block>
10171016
<block type="demo_youtube_volume">
10181017
<value name="volume_">
10191018
<block type="math_number">
@@ -1029,8 +1028,16 @@
10291028
<field name="NUM">1</field>
10301029
</block>
10311030
</value>
1032-
10331031
</block>
1032+
<block type="demo_youtube_seekto">
1033+
<value name="sec_">
1034+
<block type="math_number">
1035+
<field name="NUM">30</field>
1036+
</block>
1037+
</value>
1038+
</block>
1039+
<block type="demo_youtube_status"></block>
1040+
<block type="demo_youtube_currenttime"></block>
10341041
</category>
10351042
<category id="catDemoTracking">
10361043
<block type="demo_tracking">

0 commit comments

Comments
 (0)