First commit
This commit is contained in:
commit
5b667d0ea5
26 changed files with 716 additions and 0 deletions
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
*.mp4
|
||||
*.webm
|
||||
*.mkv
|
||||
export
|
3
.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5
Normal file
3
.import/icon.png-487276ed1e3a0c39cad0279d744ee560.md5
Normal file
|
@ -0,0 +1,3 @@
|
|||
source_md5="6c4f0854417e25f28a78a6d5bc6c861b"
|
||||
dest_md5="4a45b895909a5a7ee73376500dcc91cb"
|
||||
|
BIN
.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex
Normal file
BIN
.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex
Normal file
Binary file not shown.
3
.import/logo.png-e2220799298e3631eb0e245316e0501a.md5
Normal file
3
.import/logo.png-e2220799298e3631eb0e245316e0501a.md5
Normal file
|
@ -0,0 +1,3 @@
|
|||
source_md5="dee400f81183c985487fd90658d5d775"
|
||||
dest_md5="235ef106e2c691bdd3fa260662a7fb04"
|
||||
|
BIN
.import/logo.png-e2220799298e3631eb0e245316e0501a.stex
Normal file
BIN
.import/logo.png-e2220799298e3631eb0e245316e0501a.stex
Normal file
Binary file not shown.
127
Main.gd
Normal file
127
Main.gd
Normal file
|
@ -0,0 +1,127 @@
|
|||
extends Control
|
||||
|
||||
signal finished
|
||||
|
||||
var os: String
|
||||
var executable: String
|
||||
|
||||
var video_url: String setget set_url
|
||||
var analyzed: bool = false setget set_analyzed
|
||||
var audio_only: bool = false
|
||||
var format_checked: bool = false setget set_format_checked
|
||||
var ratelimit_checked: bool = false setget set_ratelimit_checked
|
||||
var finished: bool = false
|
||||
var lastLine: String = ""
|
||||
|
||||
onready var analyzeWarning = $Panel/Margin/Main/Settings/General/VBox/Format/Option as HBoxContainer
|
||||
onready var analyzeButton = $Panel/Margin/Main/Settings/General/VBox/Format/Option/Button as Button
|
||||
onready var formatCheckbox = $Panel/Margin/Main/Settings/General/VBox/Format/Checkbox as CheckBox
|
||||
onready var formatMenu = $Panel/Margin/Main/Settings/General/VBox/Format/MenuButton as OptionButton
|
||||
onready var rateLimitValue = $Panel/Margin/Main/Settings/Network/VBox/RateLimit/Value as LineEdit
|
||||
onready var progressText = $ProgressBG/ProgressPanel/TextEdit as TextEdit
|
||||
onready var downloadButton = $Panel/Margin/Main/Actions/Download as Button
|
||||
|
||||
func _analyze():
|
||||
run_youtubedl(["-F", video_url])
|
||||
|
||||
func _download():
|
||||
var output = run_youtubedl_blocking(["--get-filename", video_url])
|
||||
$FileDialog.current_file = output[0].strip_edges()
|
||||
$FileDialog.popup_centered_ratio()
|
||||
|
||||
func _download_with_name(name):
|
||||
run_youtubedl(["-o", name, video_url])
|
||||
|
||||
func set_url(new_val):
|
||||
video_url = new_val
|
||||
set_analyzed(false)
|
||||
downloadButton.disabled = video_url.length() == 0
|
||||
|
||||
func _url_changed(new_text):
|
||||
set_url(new_text)
|
||||
|
||||
func set_analyzed(new_val):
|
||||
analyzed = new_val
|
||||
analyzeWarning.visible = !analyzed
|
||||
analyzeButton.disabled = video_url.length() == 0
|
||||
formatCheckbox.disabled = !analyzed
|
||||
formatMenu.disabled = !analyzed or !format_checked
|
||||
|
||||
func _format_checkbox_changed(button_pressed):
|
||||
set_format_checked(button_pressed)
|
||||
|
||||
func set_format_checked(new_val):
|
||||
format_checked = new_val
|
||||
formatMenu.disabled = !analyzed or !format_checked
|
||||
|
||||
func _audio_checkbox_changed(button_pressed):
|
||||
audio_only = button_pressed
|
||||
|
||||
func _ratelimit_checkbox_changed(button_pressed):
|
||||
set_ratelimit_checked(button_pressed)
|
||||
|
||||
func set_ratelimit_checked(new_val):
|
||||
ratelimit_checked = new_val
|
||||
rateLimitValue.editable = ratelimit_checked
|
||||
|
||||
func _ready():
|
||||
os = OS.get_name()
|
||||
match os:
|
||||
"Windows", "UWP", "OSX", "Server", "X11":
|
||||
pass
|
||||
_:
|
||||
OS.alert("OS not supported")
|
||||
get_tree().quit(1)
|
||||
|
||||
var output = []
|
||||
func run_youtubedl_thread(params: Array):
|
||||
output = []
|
||||
var exit = 0
|
||||
match os:
|
||||
"Windows", "UWP":
|
||||
params.push_front("bin\\youtube-dl.exe")
|
||||
exit = OS.execute("bin\\sorun_win.exe", params, true, output, true)
|
||||
finished = true
|
||||
|
||||
var socketUDP = null
|
||||
|
||||
func run_youtubedl_blocking(params):
|
||||
output = []
|
||||
var exit = 0
|
||||
match os:
|
||||
"Windows", "UWP":
|
||||
exit = OS.execute("bin\\youtube-dl.exe", params, true, output, true)
|
||||
return output
|
||||
|
||||
func run_youtubedl(params):
|
||||
print(params)
|
||||
finished = false
|
||||
var execute_thread = Thread.new()
|
||||
execute_thread.start(self, "run_youtubedl_thread", params)
|
||||
$ProgressBG.visible = true
|
||||
|
||||
yield(get_tree().create_timer(0.5), "timeout")
|
||||
# Start UDP client
|
||||
socketUDP = PacketPeerUDP.new()
|
||||
socketUDP.set_dest_address("127.0.0.1", 8987)
|
||||
socketUDP.put_var(0)
|
||||
progressText.text = ""
|
||||
$Timer.start()
|
||||
|
||||
func _timer_tick():
|
||||
while socketUDP.get_available_packet_count() > 0:
|
||||
var newstr = socketUDP.get_packet().get_string_from_ascii() as String
|
||||
if newstr == "<EOF>\n":
|
||||
emit_signal("finished")
|
||||
return
|
||||
if newstr.ends_with("\n") == false:
|
||||
newstr += "\n"
|
||||
progressText.text += newstr
|
||||
lastLine = newstr.strip_edges()
|
||||
progressText.scroll_vertical = 999
|
||||
|
||||
func _on_finish():
|
||||
$ProgressBG.visible = false
|
||||
|
||||
func _target_selected(path):
|
||||
_download_with_name(path.strip_edges())
|
285
Main.tscn
Normal file
285
Main.tscn
Normal file
|
@ -0,0 +1,285 @@
|
|||
[gd_scene load_steps=7 format=2]
|
||||
|
||||
[ext_resource path="res://theme.tres" type="Theme" id=1]
|
||||
[ext_resource path="res://Main.gd" type="Script" id=2]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id=1]
|
||||
bg_color = Color( 0, 0, 0, 0.392157 )
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id=2]
|
||||
bg_color = Color( 0, 0, 0, 0.784314 )
|
||||
border_width_left = 2
|
||||
border_width_top = 2
|
||||
border_width_right = 2
|
||||
border_width_bottom = 2
|
||||
border_color = Color( 0.392157, 0.392157, 0.392157, 0.784314 )
|
||||
border_blend = true
|
||||
corner_radius_top_left = 5
|
||||
corner_radius_top_right = 5
|
||||
corner_radius_bottom_right = 5
|
||||
corner_radius_bottom_left = 5
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id=3]
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id=4]
|
||||
|
||||
[node name="Control" type="Control"]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
script = ExtResource( 2 )
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="Panel" type="Panel" parent="."]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="Margin" type="MarginContainer" parent="Panel"]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
margin_left = 20.0
|
||||
margin_top = 20.0
|
||||
margin_right = -20.0
|
||||
margin_bottom = -20.0
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="Main" type="VBoxContainer" parent="Panel/Margin"]
|
||||
margin_right = 984.0
|
||||
margin_bottom = 560.0
|
||||
custom_constants/separation = 20
|
||||
|
||||
[node name="URL" type="VBoxContainer" parent="Panel/Margin/Main"]
|
||||
margin_right = 984.0
|
||||
margin_bottom = 60.0
|
||||
custom_constants/separation = 10
|
||||
|
||||
[node name="Label" type="Label" parent="Panel/Margin/Main/URL"]
|
||||
margin_right = 984.0
|
||||
margin_bottom = 20.0
|
||||
theme = ExtResource( 1 )
|
||||
text = "Page URL"
|
||||
|
||||
[node name="Value" type="LineEdit" parent="Panel/Margin/Main/URL"]
|
||||
margin_top = 30.0
|
||||
margin_right = 984.0
|
||||
margin_bottom = 60.0
|
||||
size_flags_horizontal = 3
|
||||
theme = ExtResource( 1 )
|
||||
placeholder_text = "Write your Youtube (or other website) URL here"
|
||||
|
||||
[node name="Settings" type="TabContainer" parent="Panel/Margin/Main"]
|
||||
margin_top = 80.0
|
||||
margin_right = 984.0
|
||||
margin_bottom = 500.0
|
||||
size_flags_vertical = 3
|
||||
theme = ExtResource( 1 )
|
||||
tab_align = 0
|
||||
|
||||
[node name="General" type="MarginContainer" parent="Panel/Margin/Main/Settings"]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
margin_left = 4.0
|
||||
margin_top = 38.0
|
||||
margin_right = -4.0
|
||||
margin_bottom = -4.0
|
||||
custom_constants/margin_right = 5
|
||||
custom_constants/margin_top = 5
|
||||
custom_constants/margin_left = 5
|
||||
custom_constants/margin_bottom = 5
|
||||
|
||||
[node name="VBox" type="VBoxContainer" parent="Panel/Margin/Main/Settings/General"]
|
||||
process_priority = 10
|
||||
margin_left = 5.0
|
||||
margin_top = 5.0
|
||||
margin_right = 971.0
|
||||
margin_bottom = 373.0
|
||||
custom_constants/separation = 20
|
||||
|
||||
[node name="Audio" type="CheckBox" parent="Panel/Margin/Main/Settings/General/VBox"]
|
||||
margin_right = 966.0
|
||||
margin_bottom = 28.0
|
||||
theme = ExtResource( 1 )
|
||||
text = "Audio only"
|
||||
|
||||
[node name="Format" type="VBoxContainer" parent="Panel/Margin/Main/Settings/General/VBox"]
|
||||
margin_top = 48.0
|
||||
margin_right = 966.0
|
||||
margin_bottom = 136.0
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="Option" type="HBoxContainer" parent="Panel/Margin/Main/Settings/General/VBox/Format"]
|
||||
margin_right = 966.0
|
||||
margin_bottom = 26.0
|
||||
|
||||
[node name="Label" type="Label" parent="Panel/Margin/Main/Settings/General/VBox/Format/Option"]
|
||||
margin_right = 340.0
|
||||
margin_bottom = 26.0
|
||||
size_flags_vertical = 7
|
||||
theme = ExtResource( 1 )
|
||||
text = "To choose a format, analyze the video first: "
|
||||
valign = 1
|
||||
|
||||
[node name="Button" type="Button" parent="Panel/Margin/Main/Settings/General/VBox/Format/Option"]
|
||||
margin_left = 344.0
|
||||
margin_right = 417.0
|
||||
margin_bottom = 26.0
|
||||
theme = ExtResource( 1 )
|
||||
disabled = true
|
||||
text = "Analyze"
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="Checkbox" type="CheckBox" parent="Panel/Margin/Main/Settings/General/VBox/Format"]
|
||||
margin_top = 30.0
|
||||
margin_right = 966.0
|
||||
margin_bottom = 58.0
|
||||
theme = ExtResource( 1 )
|
||||
disabled = true
|
||||
text = "Download specific format"
|
||||
|
||||
[node name="MenuButton" type="OptionButton" parent="Panel/Margin/Main/Settings/General/VBox/Format"]
|
||||
margin_top = 62.0
|
||||
margin_right = 966.0
|
||||
margin_bottom = 88.0
|
||||
theme = ExtResource( 1 )
|
||||
disabled = true
|
||||
text = "Video format"
|
||||
|
||||
[node name="Network" type="MarginContainer" parent="Panel/Margin/Main/Settings"]
|
||||
visible = false
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
margin_left = 4.0
|
||||
margin_top = 38.0
|
||||
margin_right = -4.0
|
||||
margin_bottom = -4.0
|
||||
custom_constants/margin_right = 5
|
||||
custom_constants/margin_top = 5
|
||||
custom_constants/margin_left = 5
|
||||
custom_constants/margin_bottom = 5
|
||||
|
||||
[node name="VBox" type="VBoxContainer" parent="Panel/Margin/Main/Settings/Network"]
|
||||
process_priority = 10
|
||||
margin_left = 5.0
|
||||
margin_top = 5.0
|
||||
margin_right = 971.0
|
||||
margin_bottom = 373.0
|
||||
custom_constants/separation = 20
|
||||
|
||||
[node name="RateLimit" type="VBoxContainer" parent="Panel/Margin/Main/Settings/Network/VBox"]
|
||||
process_priority = 10
|
||||
margin_right = 742.0
|
||||
margin_bottom = 62.0
|
||||
|
||||
[node name="Checkbox" type="CheckBox" parent="Panel/Margin/Main/Settings/Network/VBox/RateLimit"]
|
||||
margin_right = 742.0
|
||||
margin_bottom = 28.0
|
||||
theme = ExtResource( 1 )
|
||||
text = "Set maximum download rate (in bytes per second)"
|
||||
|
||||
[node name="Value" type="LineEdit" parent="Panel/Margin/Main/Settings/Network/VBox/RateLimit"]
|
||||
margin_top = 32.0
|
||||
margin_right = 742.0
|
||||
margin_bottom = 62.0
|
||||
theme = ExtResource( 1 )
|
||||
editable = false
|
||||
placeholder_text = "eg. 50K or 4.2M"
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="Geo box" type="CheckBox" parent="Panel/Margin/Main/Settings/Network/VBox"]
|
||||
margin_top = 82.0
|
||||
margin_right = 742.0
|
||||
margin_bottom = 110.0
|
||||
theme = ExtResource( 1 )
|
||||
text = "Bypass geographic restriction via faking X-Forwarded-For HTTP header"
|
||||
|
||||
[node name="Actions" type="HBoxContainer" parent="Panel/Margin/Main"]
|
||||
margin_top = 520.0
|
||||
margin_right = 984.0
|
||||
margin_bottom = 560.0
|
||||
|
||||
[node name="Download" type="Button" parent="Panel/Margin/Main/Actions"]
|
||||
margin_right = 150.0
|
||||
margin_bottom = 40.0
|
||||
rect_min_size = Vector2( 150, 40 )
|
||||
theme = ExtResource( 1 )
|
||||
disabled = true
|
||||
text = "Download"
|
||||
|
||||
[node name="ProgressBG" type="Panel" parent="."]
|
||||
visible = false
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
custom_styles/panel = SubResource( 1 )
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="ProgressPanel" type="Panel" parent="ProgressBG"]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
margin_left = 40.0
|
||||
margin_top = 40.0
|
||||
margin_right = -40.0
|
||||
margin_bottom = -40.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
custom_styles/panel = SubResource( 2 )
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="TextEdit" type="TextEdit" parent="ProgressBG/ProgressPanel"]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
margin_left = 10.0
|
||||
margin_top = 10.0
|
||||
margin_right = -10.0
|
||||
margin_bottom = -10.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
theme = ExtResource( 1 )
|
||||
custom_styles/read_only = SubResource( 3 )
|
||||
custom_styles/normal = SubResource( 4 )
|
||||
custom_colors/font_color = Color( 1, 1, 1, 1 )
|
||||
readonly = true
|
||||
context_menu_enabled = false
|
||||
shortcut_keys_enabled = false
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="Timer" type="Timer" parent="."]
|
||||
wait_time = 0.2
|
||||
|
||||
[node name="FileDialog" type="FileDialog" parent="."]
|
||||
margin_right = 341.0
|
||||
margin_bottom = 154.0
|
||||
window_title = "Save video"
|
||||
resizable = true
|
||||
dialog_hide_on_ok = true
|
||||
access = 2
|
||||
current_dir = "/VC/yodel"
|
||||
current_path = "/VC/yodel/"
|
||||
[connection signal="finished" from="." to="." method="_on_finish"]
|
||||
[connection signal="text_changed" from="Panel/Margin/Main/URL/Value" to="." method="_url_changed"]
|
||||
[connection signal="toggled" from="Panel/Margin/Main/Settings/General/VBox/Audio" to="." method="_audio_checkbox_changed"]
|
||||
[connection signal="pressed" from="Panel/Margin/Main/Settings/General/VBox/Format/Option/Button" to="." method="_analyze"]
|
||||
[connection signal="toggled" from="Panel/Margin/Main/Settings/General/VBox/Format/Checkbox" to="." method="_format_checkbox_changed"]
|
||||
[connection signal="toggled" from="Panel/Margin/Main/Settings/Network/VBox/RateLimit/Checkbox" to="." method="_ratelimit_checkbox_changed"]
|
||||
[connection signal="pressed" from="Panel/Margin/Main/Actions/Download" to="." method="_download"]
|
||||
[connection signal="timeout" from="Timer" to="." method="_timer_tick"]
|
||||
[connection signal="file_selected" from="FileDialog" to="." method="_target_selected"]
|
BIN
assets/Inter-Medium.ttf
Normal file
BIN
assets/Inter-Medium.ttf
Normal file
Binary file not shown.
BIN
assets/logo.afdesign
Normal file
BIN
assets/logo.afdesign
Normal file
Binary file not shown.
BIN
assets/logo.png
Normal file
BIN
assets/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 35 KiB |
34
assets/logo.png.import
Normal file
34
assets/logo.png.import
Normal file
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/logo.png-e2220799298e3631eb0e245316e0501a.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/logo.png"
|
||||
dest_files=[ "res://.import/logo.png-e2220799298e3631eb0e245316e0501a.stex" ]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_mode=0
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
flags/repeat=0
|
||||
flags/filter=true
|
||||
flags/mipmaps=false
|
||||
flags/anisotropic=false
|
||||
flags/srgb=2
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/HDR_as_SRGB=false
|
||||
process/invert_color=false
|
||||
stream=false
|
||||
size_limit=0
|
||||
detect_3d=true
|
||||
svg/scale=1.0
|
BIN
bin/ffmpeg.exe
Normal file
BIN
bin/ffmpeg.exe
Normal file
Binary file not shown.
BIN
bin/sorun_darwin
Normal file
BIN
bin/sorun_darwin
Normal file
Binary file not shown.
BIN
bin/sorun_linux
Normal file
BIN
bin/sorun_linux
Normal file
Binary file not shown.
BIN
bin/sorun_win.exe
Normal file
BIN
bin/sorun_win.exe
Normal file
Binary file not shown.
BIN
bin/youtube-dl
Normal file
BIN
bin/youtube-dl
Normal file
Binary file not shown.
BIN
bin/youtube-dl.exe
Normal file
BIN
bin/youtube-dl.exe
Normal file
Binary file not shown.
7
default_env.tres
Normal file
7
default_env.tres
Normal file
|
@ -0,0 +1,7 @@
|
|||
[gd_resource type="Environment" load_steps=2 format=2]
|
||||
|
||||
[sub_resource type="ProceduralSky" id=1]
|
||||
|
||||
[resource]
|
||||
background_mode = 2
|
||||
background_sky = SubResource( 1 )
|
101
export_presets.cfg
Normal file
101
export_presets.cfg
Normal file
|
@ -0,0 +1,101 @@
|
|||
[preset.0]
|
||||
|
||||
name="Windows Desktop"
|
||||
platform="Windows Desktop"
|
||||
runnable=true
|
||||
custom_features=""
|
||||
export_filter="all_resources"
|
||||
include_filter=""
|
||||
exclude_filter=""
|
||||
export_path="export/yodel.exe"
|
||||
patch_list=PoolStringArray( )
|
||||
script_export_mode=1
|
||||
script_encryption_key=""
|
||||
|
||||
[preset.0.options]
|
||||
|
||||
texture_format/bptc=false
|
||||
texture_format/s3tc=true
|
||||
texture_format/etc=false
|
||||
texture_format/etc2=false
|
||||
texture_format/no_bptc_fallbacks=true
|
||||
binary_format/64_bits=true
|
||||
binary_format/embed_pck=false
|
||||
custom_template/release=""
|
||||
custom_template/debug=""
|
||||
codesign/enable=false
|
||||
codesign/identity_type=0
|
||||
codesign/identity=""
|
||||
codesign/password=""
|
||||
codesign/timestamp=true
|
||||
codesign/timestamp_server_url=""
|
||||
codesign/digest_algorithm=1
|
||||
codesign/description=""
|
||||
codesign/custom_options=PoolStringArray( )
|
||||
application/icon="res://win.ico"
|
||||
application/file_version="0.1.0"
|
||||
application/product_version="0.1.0"
|
||||
application/company_name="Hamcha"
|
||||
application/product_name="YoDeL"
|
||||
application/file_description="Youtube-dl GUI"
|
||||
application/copyright=""
|
||||
application/trademarks=""
|
||||
|
||||
[preset.1]
|
||||
|
||||
name="Linux/X11"
|
||||
platform="Linux/X11"
|
||||
runnable=true
|
||||
custom_features=""
|
||||
export_filter="all_resources"
|
||||
include_filter=""
|
||||
exclude_filter=""
|
||||
export_path=""
|
||||
patch_list=PoolStringArray( )
|
||||
script_export_mode=1
|
||||
script_encryption_key=""
|
||||
|
||||
[preset.1.options]
|
||||
|
||||
texture_format/bptc=false
|
||||
texture_format/s3tc=true
|
||||
texture_format/etc=false
|
||||
texture_format/etc2=false
|
||||
texture_format/no_bptc_fallbacks=true
|
||||
binary_format/64_bits=true
|
||||
binary_format/embed_pck=false
|
||||
custom_template/release=""
|
||||
custom_template/debug=""
|
||||
|
||||
[preset.2]
|
||||
|
||||
name="Mac OSX"
|
||||
platform="Mac OSX"
|
||||
runnable=true
|
||||
custom_features=""
|
||||
export_filter="all_resources"
|
||||
include_filter=""
|
||||
exclude_filter=""
|
||||
export_path="export/yodel.zip"
|
||||
patch_list=PoolStringArray( )
|
||||
script_export_mode=1
|
||||
script_encryption_key=""
|
||||
|
||||
[preset.2.options]
|
||||
|
||||
custom_template/debug=""
|
||||
custom_template/release=""
|
||||
application/name="YoDeL"
|
||||
application/info="youtube-dl GUI wrapper"
|
||||
application/icon="res://icon.png"
|
||||
application/identifier="com.hamcha.yodel"
|
||||
application/signature=""
|
||||
application/short_version="0.1"
|
||||
application/version="0.1"
|
||||
application/copyright=""
|
||||
display/high_res=true
|
||||
privacy/camera_usage_description=""
|
||||
privacy/microphone_usage_description=""
|
||||
texture_format/s3tc=true
|
||||
texture_format/etc=false
|
||||
texture_format/etc2=false
|
6
font.tres
Normal file
6
font.tres
Normal file
|
@ -0,0 +1,6 @@
|
|||
[gd_resource type="DynamicFont" load_steps=2 format=2]
|
||||
|
||||
[ext_resource path="res://assets/Inter-Medium.ttf" type="DynamicFontData" id=1]
|
||||
|
||||
[resource]
|
||||
font_data = ExtResource( 1 )
|
BIN
icon.png
Normal file
BIN
icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 36 KiB |
34
icon.png.import
Normal file
34
icon.png.import
Normal file
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://icon.png"
|
||||
dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_mode=0
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
flags/repeat=0
|
||||
flags/filter=true
|
||||
flags/mipmaps=false
|
||||
flags/anisotropic=false
|
||||
flags/srgb=2
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/HDR_as_SRGB=false
|
||||
process/invert_color=false
|
||||
stream=false
|
||||
size_limit=0
|
||||
detect_3d=true
|
||||
svg/scale=1.0
|
42
project.godot
Normal file
42
project.godot
Normal file
|
@ -0,0 +1,42 @@
|
|||
; Engine configuration file.
|
||||
; It's best edited using the editor UI and not directly,
|
||||
; since the parameters that go here are not all obvious.
|
||||
;
|
||||
; Format:
|
||||
; [section] ; section goes between []
|
||||
; param=value ; assign values to parameters
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_class_icons={
|
||||
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="YoDeL"
|
||||
config/description="youtube-dl GUI wrapper"
|
||||
run/main_scene="res://Main.tscn"
|
||||
run/low_processor_mode=true
|
||||
boot_splash/image="res://assets/logo.png"
|
||||
boot_splash/fullsize=false
|
||||
config/icon="res://icon.png"
|
||||
config/windows_native_icon="res://win.ico"
|
||||
|
||||
[display]
|
||||
|
||||
window/dpi/allow_hidpi=true
|
||||
|
||||
[gui]
|
||||
|
||||
theme/custom="res://theme.tres"
|
||||
theme/custom_font="res://font.tres"
|
||||
|
||||
[rendering]
|
||||
|
||||
quality/driver/driver_name="GLES2"
|
||||
vram_compression/import_etc=true
|
||||
vram_compression/import_etc2=false
|
||||
quality/depth/hdr=false
|
||||
environment/default_environment="res://default_env.tres"
|
6
theme.tres
Normal file
6
theme.tres
Normal file
|
@ -0,0 +1,6 @@
|
|||
[gd_resource type="Theme" load_steps=2 format=2]
|
||||
|
||||
[ext_resource path="res://font.tres" type="DynamicFont" id=1]
|
||||
|
||||
[resource]
|
||||
default_font = ExtResource( 1 )
|
64
tools/sorun.go
Normal file
64
tools/sorun.go
Normal file
|
@ -0,0 +1,64 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"io"
|
||||
"net"
|
||||
"os/exec"
|
||||
)
|
||||
|
||||
func main() {
|
||||
bind := flag.String("bind", "127.0.0.1:8987", "Addr:Port to listen to")
|
||||
flag.Parse()
|
||||
|
||||
args := flag.Args()
|
||||
|
||||
if flag.NArg() < 1 {
|
||||
panic("no arguments provided")
|
||||
}
|
||||
uaddr, err := net.ResolveUDPAddr("udp", *bind)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
lst, err := net.ListenUDP("udp", uaddr)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer lst.Close()
|
||||
|
||||
cmd := exec.Command(args[0], args[1:]...)
|
||||
stdoutIn, _ := cmd.StdoutPipe()
|
||||
stderrIn, _ := cmd.StderrPipe()
|
||||
output := io.MultiReader(stdoutIn, stderrIn)
|
||||
|
||||
buf := make([]byte, 1024)
|
||||
_, addr, err := lst.ReadFromUDP(buf)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
println("Received connection from %v", addr)
|
||||
|
||||
go func() {
|
||||
for {
|
||||
_, err := output.Read(buf)
|
||||
if err != nil {
|
||||
if err == io.EOF {
|
||||
return
|
||||
}
|
||||
panic(err)
|
||||
}
|
||||
lst.WriteTo(buf, addr)
|
||||
}
|
||||
}()
|
||||
|
||||
defer func() {
|
||||
lst.WriteTo([]byte("<EOF>\n"), addr)
|
||||
}()
|
||||
|
||||
cmd.Start()
|
||||
err = cmd.Wait()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
BIN
win.ico
Normal file
BIN
win.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 117 KiB |
Loading…
Reference in a new issue