Switch to CMake
This commit is contained in:
parent
47a8b61af0
commit
1f673f8620
|
@ -0,0 +1,42 @@
|
||||||
|
/*
|
||||||
|
Nintendo Wii Example For TLang
|
||||||
|
Copyright (C) 2023 Tesses
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU General Public License
|
||||||
|
as published by the Free Software Foundation; either version 2
|
||||||
|
of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
*/
|
||||||
|
func main()
|
||||||
|
{
|
||||||
|
console.writeln("App running");
|
||||||
|
console.writeln("Press A to get message, Press HOME to Exit");
|
||||||
|
|
||||||
|
wpad.init();
|
||||||
|
isRunning=true;
|
||||||
|
|
||||||
|
while(isRunning)
|
||||||
|
{
|
||||||
|
buttons = 0;
|
||||||
|
wpad.scanpads();
|
||||||
|
buttons = wpad.buttonsdown(0);
|
||||||
|
|
||||||
|
if(buttons & wpad.BUTTON_HOME)
|
||||||
|
{
|
||||||
|
isRunning = false;
|
||||||
|
}
|
||||||
|
if(buttons & wpad.BUTTON_A)
|
||||||
|
{
|
||||||
|
console.writeln("A Pressed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,70 @@
|
||||||
|
#!/usr/local/bin/tlang
|
||||||
|
//this is not finished
|
||||||
|
func relto(appfile,path)
|
||||||
|
{
|
||||||
|
f=fs.parent(getabs(appfile));
|
||||||
|
while(path.startsWith("../"))
|
||||||
|
{
|
||||||
|
path = path.substring(3);
|
||||||
|
|
||||||
|
f = fs.parent(f);
|
||||||
|
}
|
||||||
|
ret fs.combine(f,path);
|
||||||
|
}
|
||||||
|
|
||||||
|
func getabs(path)
|
||||||
|
{
|
||||||
|
d = path.split(":",false);
|
||||||
|
if(d.length == 2 && d[0].length == 1)
|
||||||
|
{
|
||||||
|
if(d[1].startsWith('\\') || d[1].startsWith('/'))
|
||||||
|
{
|
||||||
|
ret path;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(path.startsWith('\\') || path.startsWith('/'))
|
||||||
|
{
|
||||||
|
ret path;
|
||||||
|
}else{
|
||||||
|
ret fs.combine(fs.working,path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
filesRead = create.array();
|
||||||
|
func contains(f)
|
||||||
|
{
|
||||||
|
each(filesRead)
|
||||||
|
{
|
||||||
|
if(item == f) ret true;
|
||||||
|
}
|
||||||
|
ret false;
|
||||||
|
}
|
||||||
|
__includeStr = "#include ";
|
||||||
|
func readFile(file)
|
||||||
|
{
|
||||||
|
if(contains(file)) ret "";
|
||||||
|
filesRead.add(file);
|
||||||
|
f = fs.readalltext(file).replace("\r","").split("\n",false);
|
||||||
|
myText = "";
|
||||||
|
each(f)
|
||||||
|
{
|
||||||
|
if(item.startsWith(__includeStr))
|
||||||
|
{
|
||||||
|
myText += readFile(relto(file,item.substring(__includeStr.length))) + "\n";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
myText += item + "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ret myText;
|
||||||
|
}
|
||||||
|
func main(src,$$args)
|
||||||
|
{
|
||||||
|
code=reflection.parse_code(readFile(src));
|
||||||
|
each(args) code.add(item);
|
||||||
|
code.run();
|
||||||
|
}
|
|
@ -0,0 +1,109 @@
|
||||||
|
func stream_yt_json(id)
|
||||||
|
{
|
||||||
|
ret "{\"videoId\": \""+ id + "\",\"context\": {\"client\": {\"clientName\": \"ANDROID\",\"clientVersion\": \"17.10.35\",\"androidSdkVersion\": 30,\"hl\": \"en\",\"gl\": \"US\",\"utcOffsetMinutes\": 0}}}";
|
||||||
|
}
|
||||||
|
|
||||||
|
func tytd_streams_get(id)
|
||||||
|
{
|
||||||
|
streams = create.dict();
|
||||||
|
streams.success = false;
|
||||||
|
|
||||||
|
str = stream_yt_json(id);
|
||||||
|
curl = net.curl();
|
||||||
|
curl.method = "POST";
|
||||||
|
//curl.url = "http://127.0.0.1:9999/";
|
||||||
|
curl.url = "https://www.youtube.com/youtubei/v1/player?key=AIzaSyA8eiZmM1FaDVjRy-df2KTyQ_vz_yYM39w";
|
||||||
|
jsonStr="";
|
||||||
|
curl.followlocation = true;
|
||||||
|
headers = create.array();
|
||||||
|
headers.add("Connection: close");
|
||||||
|
headers.add("Content-Type: application/json");
|
||||||
|
headers.add("User-Agent: com.google.android.youtube/17.10.35 (Linux; U; Android 12; GB) gzip");
|
||||||
|
headers.add("Cookie: CONSENT=YES+cb; YSC=DwKYllHNwuw");
|
||||||
|
curl.requestheaders = headers;
|
||||||
|
curl.postfields = str;
|
||||||
|
console.writeln(str);
|
||||||
|
curl.writefunction = func(buffer,length) {
|
||||||
|
for(i = 0;i<length;i++)
|
||||||
|
{
|
||||||
|
c=buffer[i].toChar();
|
||||||
|
d=c;
|
||||||
|
|
||||||
|
if(typeof(d) == "char")
|
||||||
|
{
|
||||||
|
jsonStr += d;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if(curl.perform() == 0)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
streams.data = json.decode(jsonStr);
|
||||||
|
|
||||||
|
streams.success =true;
|
||||||
|
}
|
||||||
|
ret streams;
|
||||||
|
}
|
||||||
|
func tytd_title(id)
|
||||||
|
{
|
||||||
|
|
||||||
|
curl = net.curl();
|
||||||
|
|
||||||
|
curl.url = "https://www.youtube.com/watch?v=" + id;
|
||||||
|
htmlStr = "";
|
||||||
|
curl.followlocation = true;
|
||||||
|
|
||||||
|
curl.writefunction = func(buffer,length) {
|
||||||
|
for(i = 0;i<length;i++)
|
||||||
|
{
|
||||||
|
byte=buffer[i];
|
||||||
|
htmlStr += byte.toChar();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if(curl.perform() == 0)
|
||||||
|
{
|
||||||
|
|
||||||
|
a= htmlStr.split("<title>",false,2);
|
||||||
|
a2 = a[1];
|
||||||
|
a3 = a2.split("</title>",false,2);
|
||||||
|
ret a3[0];
|
||||||
|
}
|
||||||
|
ret "Unknown";
|
||||||
|
}
|
||||||
|
func download_video(id)
|
||||||
|
{
|
||||||
|
title = tytd_title(id);
|
||||||
|
console.writeln("Downloading: " + title);
|
||||||
|
strms=tytd_streams_get(id);
|
||||||
|
if(strms.success && strms.data)
|
||||||
|
{
|
||||||
|
each(strms.data.streamingData.formats)
|
||||||
|
{
|
||||||
|
|
||||||
|
if(item.itag == 22)
|
||||||
|
{
|
||||||
|
fileName = title + "-" + id + ".mp4";
|
||||||
|
curl = net.curl();
|
||||||
|
curl.url = item.url;
|
||||||
|
|
||||||
|
f = fs.create(fileName);
|
||||||
|
curl.writefunction = f.write;
|
||||||
|
curl.perform();
|
||||||
|
f.close();
|
||||||
|
console.writeln("Downloaded: " + title);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
func main($$args)
|
||||||
|
{
|
||||||
|
each(args)
|
||||||
|
{
|
||||||
|
download_video(item);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue