port selection on plugin

This commit is contained in:
Michal Courson
2026-02-28 17:01:59 -05:00
parent ab57d8ef22
commit 7a471041e7
7 changed files with 100 additions and 19 deletions

View File

@ -8,6 +8,18 @@
"name": "Clip 20260226_195932", "name": "Clip 20260226_195932",
"playbackType": "playOverlap", "playbackType": "playOverlap",
"volume": 1 "volume": 1
},
{
"filename": "C:\\Users\\mickl\\Desktop\\cliptrim-ui\\ClipTrimApp\\audio-service\\recordings\\audio_capture_20260228_165611.wav",
"name": "Clip 20260228_165611",
"playbackType": "playStop",
"volume": 1.0
},
{
"filename": "C:\\Users\\mickl\\Desktop\\cliptrim-ui\\ClipTrimApp\\audio-service\\recordings\\audio_capture_20260228_165646.wav",
"name": "Clip 20260228_165646",
"playbackType": "playStop",
"volume": 1.0
} }
] ]
}, },
@ -16,14 +28,14 @@
"id": 1, "id": 1,
"clips": [ "clips": [
{ {
"filename": "C:\\Users\\mickl\\Desktop\\cliptrim-ui\\ClipTrimApp\\audio-service\\recordings\\audio_capture_20260226_183607.wav", "filename": "C:\\Users\\mickl\\Desktop\\cliptrim-ui\\ClipTrimApp\\audio-service\\recordings\\audio_capture_20260226_183812.wav",
"name": "Clip 20260226_183607", "name": "Clip 20260226_183812",
"playbackType": "playStop", "playbackType": "playStop",
"volume": 1 "volume": 1
}, },
{ {
"filename": "C:\\Users\\mickl\\Desktop\\cliptrim-ui\\ClipTrimApp\\audio-service\\recordings\\audio_capture_20260226_183812.wav", "filename": "C:\\Users\\mickl\\Desktop\\cliptrim-ui\\ClipTrimApp\\audio-service\\recordings\\audio_capture_20260226_183607.wav",
"name": "Clip 20260226_183812", "name": "Clip 20260226_183607",
"playbackType": "playStop", "playbackType": "playStop",
"volume": 1 "volume": 1
}, },
@ -79,7 +91,9 @@
"filename": "C:\\Users\\mickl\\Desktop\\cliptrim-ui\\ClipTrimApp\\audio-service\\recordings\\audio_capture_20260228_092721.wav", "filename": "C:\\Users\\mickl\\Desktop\\cliptrim-ui\\ClipTrimApp\\audio-service\\recordings\\audio_capture_20260228_092721.wav",
"name": "Clip 20260228_092721", "name": "Clip 20260228_092721",
"playbackType": "playStop", "playbackType": "playStop",
"volume": 1 "volume": 1,
"startTime": 6.438382145377559,
"endTime": 14.277258292166426
} }
] ]
}, },
@ -108,6 +122,12 @@
"name": "pp", "name": "pp",
"playbackType": "playStop", "playbackType": "playStop",
"volume": 1 "volume": 1
},
{
"filename": "C:\\Users\\mickl\\Desktop\\cliptrim-ui\\ClipTrimApp\\audio-service\\recordings\\audio_capture_20260228_120955.wav",
"name": "nose",
"playbackType": "playStop",
"volume": 1
} }
] ]
} }

View File

@ -30,20 +30,26 @@ namespace ClipTrimDotNet.Client
} }
//private HttpClient httpClient; //private HttpClient httpClient;
private SocketIO socket; private SocketIO? socket;
public int PortNumber { get; set; } = 5010; public string HostName
public ClipTrimClient()
{ {
//httpClient = new HttpClient() get
//{ {
// BaseAddress = new Uri("http://localhost:5010/"), //return $"http://localhost:5010/";
// Timeout = TimeSpan.FromSeconds(10) return $"http://localhost:{GlobalSettings.Instance.PortNumber}/";
//}; }
Logger.Instance.LogMessage(TracingLevel.INFO, $"Starting ClipTrimClient on port {PortNumber}"); }
socket = new SocketIO(new Uri($"http://localhost:5010/"));
private string? currentHostname = null;
void CreateSocket()
{
Logger.Instance.LogMessage(TracingLevel.INFO, $"Starting ClipTrimClient on port {HostName}");
socket = new SocketIO(new Uri(HostName));
currentHostname = HostName;
socket.Options.AutoUpgrade = false; socket.Options.AutoUpgrade = false;
//socket.Options.Path = "/socket.io";
socket.Options.ConnectionTimeout = TimeSpan.FromSeconds(10); socket.Options.ConnectionTimeout = TimeSpan.FromSeconds(10);
socket.Options.Reconnection = true; socket.Options.Reconnection = true;
socket.On("full_data", ctx => socket.On("full_data", ctx =>
@ -85,6 +91,11 @@ namespace ClipTrimDotNet.Client
return Task.CompletedTask; return Task.CompletedTask;
}); });
socket.OnConnected += (sender, e) =>
{
Logger.Instance.LogMessage(TracingLevel.INFO, $"Socket connected: {e}");
};
socket.OnDisconnected += (sender, e) => socket.OnDisconnected += (sender, e) =>
{ {
Logger.Instance.LogMessage(TracingLevel.INFO, $"Socket disconnected: {e}"); Logger.Instance.LogMessage(TracingLevel.INFO, $"Socket disconnected: {e}");
@ -93,8 +104,19 @@ namespace ClipTrimDotNet.Client
Task.Run(async () => await Connect()); Task.Run(async () => await Connect());
} }
public ClipTrimClient()
{
//httpClient = new HttpClient()
//{
// BaseAddress = new Uri("http://localhost:5010/"),
// Timeout = TimeSpan.FromSeconds(10)
//};
CreateSocket();
}
public async Task Connect() public async Task Connect()
{ {
if (socket is null) return;
while (!socket.Connected) while (!socket.Connected)
{ {
try try
@ -180,6 +202,12 @@ namespace ClipTrimDotNet.Client
return Collections.Where(x => x.Name != "Uncategorized").Select(x => x.Name).ToList(); return Collections.Where(x => x.Name != "Uncategorized").Select(x => x.Name).ToList();
} }
public string GetCurrentCollectionName()
{
if (SelectedCollection == -1) return "";
return Collections[SelectedCollection].Name;
}
public string GetPlayerStringByCoordinateIndex(int index) public string GetPlayerStringByCoordinateIndex(int index)
{ {
if (PageMode) if (PageMode)
@ -225,9 +253,10 @@ namespace ClipTrimDotNet.Client
} }
else else
{ {
if (socket is null) return;
var metadata = GetClipByPagedIndex(index); var metadata = GetClipByPagedIndex(index);
if (metadata == null) return; if (metadata == null) return;
Logger.Instance.LogMessage(TracingLevel.INFO, $"playing clip:"); //Logger.Instance.LogMessage(TracingLevel.INFO, $"playing clip:");
await socket.EmitAsync("play_clip", new List<object>() { metadata }); await socket.EmitAsync("play_clip", new List<object>() { metadata });
} }
@ -235,7 +264,24 @@ namespace ClipTrimDotNet.Client
public async void SaveClip() public async void SaveClip()
{ {
if (socket is null) return;
await socket.EmitAsync("record_clip", new List<object>() { }); await socket.EmitAsync("record_clip", new List<object>() { });
} }
public async void CheckPort()
{
if (socket is null) return;
//Logger.Instance.LogMessage(TracingLevel.INFO, $"Checking port {socket}");
if (currentHostname != HostName)
{
//Logger.Instance.LogMessage(TracingLevel.INFO, $"port {socket}");
if (socket.Connected)
{
await socket.DisconnectAsync();
}
socket.Dispose();
CreateSocket();
}
}
} }
} }

View File

@ -29,6 +29,7 @@ namespace ClipTrimDotNet
{ {
GlobalSettings instance = new GlobalSettings(); GlobalSettings instance = new GlobalSettings();
instance.ProfileName = null; instance.ProfileName = null;
instance.PortNumber = 5010;
return instance; return instance;
} }
@ -36,6 +37,9 @@ namespace ClipTrimDotNet
[JsonProperty(PropertyName = "profileName")] [JsonProperty(PropertyName = "profileName")]
public string? ProfileName { get; set; } public string? ProfileName { get; set; }
[JsonProperty(PropertyName = "portNumber")]
public int? PortNumber { get; set; }
public void SetCurrentProfile(string profile) public void SetCurrentProfile(string profile)
{ {

View File

@ -68,7 +68,7 @@ namespace ClipTrimDotNet.Keys
await Connection.SetTitleAsync(ClipTrimClient.Instance.CanPageDown ? "<" : ""); await Connection.SetTitleAsync(ClipTrimClient.Instance.CanPageDown ? "<" : "");
break; break;
case 1: case 1:
await Connection.SetTitleAsync((ClipTrimClient.Instance.PageIndex + 1).ToString()); await Connection.SetTitleAsync(ClipTrimClient.Instance.GetCurrentCollectionName() + "\n" + (ClipTrimClient.Instance.PageIndex + 1).ToString());
break; break;
case 2: case 2:
await Connection.SetTitleAsync(ClipTrimClient.Instance.CanPageUp ? ">" : ""); await Connection.SetTitleAsync(ClipTrimClient.Instance.CanPageUp ? ">" : "");

View File

@ -90,6 +90,8 @@ namespace ClipTrimDotNet.Keys
public override async void KeyPressed(KeyPayload payload) public override async void KeyPressed(KeyPayload payload)
{ {
GlobalSettings.Instance.SetCurrentProfile(settings.ProfileName??""); GlobalSettings.Instance.SetCurrentProfile(settings.ProfileName??"");
ClipTrimClient.Instance.PageMode = false;
PageNavigator.TickAll();
await Connection.SetGlobalSettingsAsync(JObject.FromObject(GlobalSettings.Instance)); await Connection.SetGlobalSettingsAsync(JObject.FromObject(GlobalSettings.Instance));
await Connection.SwitchProfileAsync("ClipTrim"); await Connection.SwitchProfileAsync("ClipTrim");
@ -107,6 +109,7 @@ namespace ClipTrimDotNet.Keys
public override void ReceivedSettings(ReceivedSettingsPayload payload) public override void ReceivedSettings(ReceivedSettingsPayload payload)
{ {
//Logger.Instance.LogMessage(TracingLevel.INFO, $"ProfileSwitcher received settings {JsonConvert.SerializeObject(payload.Settings)}");
Tools.AutoPopulateSettings(settings, payload.Settings); Tools.AutoPopulateSettings(settings, payload.Settings);
SaveSettings(); SaveSettings();
} }
@ -114,6 +117,7 @@ namespace ClipTrimDotNet.Keys
public override void ReceivedGlobalSettings(ReceivedGlobalSettingsPayload payload) public override void ReceivedGlobalSettings(ReceivedGlobalSettingsPayload payload)
{ {
Tools.AutoPopulateSettings(GlobalSettings.Instance, payload.Settings); Tools.AutoPopulateSettings(GlobalSettings.Instance, payload.Settings);
ClipTrimClient.Instance.CheckPort();
//if (payload.Settings == null || payload.Settings.Count == 0) //if (payload.Settings == null || payload.Settings.Count == 0)
//{ //{
// var inst = GlobalSettings.Instance; // var inst = GlobalSettings.Instance;

View File

@ -13,7 +13,7 @@ namespace ClipTrimDotNet
{ {
// Uncomment this line of code to allow for debugging // Uncomment this line of code to allow for debugging
//while (!System.Diagnostics.Debugger.IsAttached) { System.Threading.Thread.Sleep(100); } //while (!System.Diagnostics.Debugger.IsAttached) { System.Threading.Thread.Sleep(100); }
Client.ClipTrimClient.Instance.PortNumber = 5010; //Client.ClipTrimClient.Instance.PortNumber = 5010;
SDWrapper.Run(args); SDWrapper.Run(args);
} }
} }

View File

@ -16,6 +16,13 @@
show-refresh="true" show-refresh="true"
placeholder="Select a ClipTrim page"></sdpi-select> placeholder="Select a ClipTrim page"></sdpi-select>
</sdpi-item> </sdpi-item>
<sdpi-item>
<sdpi-textfield
global="true"
setting="portNumber"
placeholder="Port Number"
pattern="[0-9]+"></sdpi-textfield>
</sdpi-item>
<!--<sdpi-item label="Base Path"> <!--<sdpi-item label="Base Path">
<sdpi-file setting="basePath" <sdpi-file setting="basePath"
global="true" global="true"