112 lines
2.5 KiB
ObjectPascal
112 lines
2.5 KiB
ObjectPascal
unit main;
|
|
|
|
{$mode objfpc}{$H+}
|
|
{$R music.res}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls,
|
|
ComCtrls, ExtendedTabControls, fphttpclient, opensslsockets, fpjson,
|
|
jsonparser, ThreadUnit, uos, uos_portaudio, uos_flat, uos_libxmp, Windows;
|
|
|
|
type
|
|
|
|
{ TForm1 }
|
|
|
|
TForm1 = class(TForm)
|
|
BtnSearch: TButton;
|
|
ExtendedTabControl1: TExtendedTabControl;
|
|
ExtendedTabToolbar1: TExtendedTabToolbar;
|
|
Label1: TLabel;
|
|
Label2: TLabel;
|
|
memoTest: TMemo;
|
|
TxtBoxSearch: TEdit;
|
|
lblSearch: TLabel;
|
|
TabControl1: TTabControl;
|
|
procedure BtnSearchClick(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure TabControl1Change(Sender: TObject);
|
|
procedure TxtBoxSearchChange(Sender: TObject);
|
|
private
|
|
|
|
public
|
|
|
|
end;
|
|
|
|
var
|
|
Form1: TForm1;
|
|
Client: TFPHTTPClient;
|
|
Response: string;
|
|
PackageName: string;
|
|
jData: TJSONData;
|
|
packageData: TJSONObject;
|
|
test1: ThreadClass;
|
|
ResStream: TResourceStream;
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
{ TForm1 }
|
|
function ExtractResourceToTempFile(const ResName: string): string;
|
|
var
|
|
ResStream: TResourceStream;
|
|
TempPath, TempFileName: string;
|
|
begin
|
|
TempPath := GetTempDir;
|
|
TempFileName := TempPath + '5f64126c-1f61-4e65-8250-4a7835d2f155';
|
|
|
|
ResStream := TResourceStream.Create(HInstance, ResName, RT_RCDATA);
|
|
try
|
|
ResStream.SaveToFile(TempFileName);
|
|
finally
|
|
ResStream.Free;
|
|
end;
|
|
|
|
Result := TempFileName;
|
|
end;
|
|
procedure TForm1.FormCreate(Sender: TObject);
|
|
begin
|
|
BtnSearch.Enabled := False;
|
|
//loonie_mifue.xm
|
|
|
|
uos_LoadLib( pchar('LibPortaudio-64.dll'), nil, nil, nil, nil, nil, pchar('libxmp-64.dll'));
|
|
uos_CreatePlayer( 0 );
|
|
uos_AddIntoDevOut( 0 );
|
|
uos_AddFromFile( 0, PChar(ExtractResourceToTempFile('LOONIEMUSIC')));
|
|
uos_Play(0);
|
|
end;
|
|
|
|
procedure TForm1.BtnSearchClick(Sender: TObject);
|
|
begin
|
|
PackageName := TxtBoxSearch.Text;
|
|
Client := TFPHTTPClient.Create(nil);
|
|
try
|
|
test1 := ThreadClass.create();
|
|
Response := Client.Get(Concat('https://registry.npmjs.org/', PackageName));
|
|
jData := GetJSON(Response);
|
|
packageData := jData as TJSONObject;
|
|
|
|
memoTest.Lines.Text := jData.FormatJSON;
|
|
finally
|
|
Client.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TForm1.TabControl1Change(Sender: TObject);
|
|
begin
|
|
|
|
end;
|
|
|
|
procedure TForm1.TxtBoxSearchChange(Sender: TObject);
|
|
begin
|
|
if Length(TxtBoxSearch.Text) > 1 then
|
|
BtnSearch.Enabled := True
|
|
else
|
|
BtnSearch.Enabled := False;
|
|
end;
|
|
end.
|
|
uos_free;
|
|
DeleteFile(ExtractResourceToTempFile('LOONIEMUSIC'));
|