remove client test app
This commit is contained in:
140
.github/upgrades/dotnet-upgrade-plan.md
vendored
140
.github/upgrades/dotnet-upgrade-plan.md
vendored
@ -1,70 +1,70 @@
|
|||||||
# .NET 8.0 Upgrade Plan
|
# .NET 8.0 Upgrade Plan
|
||||||
|
|
||||||
## Execution Steps
|
## Execution Steps
|
||||||
|
|
||||||
Execute steps below sequentially one by one in the order they are listed.
|
Execute steps below sequentially one by one in the order they are listed.
|
||||||
|
|
||||||
1. Validate that an .NET 8.0 SDK required for this upgrade is installed on the machine and if not, help to get it installed.
|
1. Validate that an .NET 8.0 SDK required for this upgrade is installed on the machine and if not, help to get it installed.
|
||||||
2. Ensure that the SDK version specified in global.json files is compatible with the .NET 8.0 upgrade.
|
2. Ensure that the SDK version specified in global.json files is compatible with the .NET 8.0 upgrade.
|
||||||
3. Upgrade ClipTrimDotNet\ClipTrimDotNet.csproj
|
3. Upgrade ClipTrimDotNet\ClipTrimDotNet.csproj
|
||||||
4. Run unit tests to validate upgrade in the projects listed below:
|
4. Run unit tests to validate upgrade in the projects listed below:
|
||||||
- ClientTest\ClientTest.csproj
|
- ClientTest\ClientTest.csproj
|
||||||
|
|
||||||
## Settings
|
## Settings
|
||||||
|
|
||||||
This section contains settings and data used by execution steps.
|
This section contains settings and data used by execution steps.
|
||||||
|
|
||||||
### Excluded projects
|
### Excluded projects
|
||||||
|
|
||||||
| Project name | Description |
|
| Project name | Description |
|
||||||
|:-----------------------------------------------|:---------------------------:|
|
|:-----------------------------------------------|:---------------------------:|
|
||||||
|
|
||||||
### Aggregate NuGet packages modifications across all projects
|
### Aggregate NuGet packages modifications across all projects
|
||||||
|
|
||||||
NuGet packages used across all selected projects or their dependencies that need version update in projects that reference them.
|
NuGet packages used across all selected projects or their dependencies that need version update in projects that reference them.
|
||||||
|
|
||||||
| Package Name | Current Version | New Version | Description |
|
| Package Name | Current Version | New Version | Description |
|
||||||
|:------------------------------------|:---------------:|:-----------:|:----------------------------------------------|
|
|:------------------------------------|:---------------:|:-----------:|:----------------------------------------------|
|
||||||
| Microsoft.Bcl.AsyncInterfaces | 10.0.2 | 8.0.0 | Recommended for .NET 8.0 |
|
| Microsoft.Bcl.AsyncInterfaces | 10.0.2 | 8.0.0 | Recommended for .NET 8.0 |
|
||||||
| Microsoft.Extensions.DependencyInjection | 10.0.2 | 8.0.1 | Recommended for .NET 8.0 |
|
| Microsoft.Extensions.DependencyInjection | 10.0.2 | 8.0.1 | Recommended for .NET 8.0 |
|
||||||
| Microsoft.Extensions.DependencyInjection.Abstractions | 10.0.2 | 8.0.2 | Recommended for .NET 8.0 |
|
| Microsoft.Extensions.DependencyInjection.Abstractions | 10.0.2 | 8.0.2 | Recommended for .NET 8.0 |
|
||||||
| Microsoft.Extensions.Logging | 10.0.2 | 8.0.1 | Recommended for .NET 8.0 |
|
| Microsoft.Extensions.Logging | 10.0.2 | 8.0.1 | Recommended for .NET 8.0 |
|
||||||
| Microsoft.Extensions.Logging.Abstractions | 10.0.2 | 8.0.3 | Recommended for .NET 8.0 |
|
| Microsoft.Extensions.Logging.Abstractions | 10.0.2 | 8.0.3 | Recommended for .NET 8.0 |
|
||||||
| Microsoft.Extensions.Options | 10.0.2 | 8.0.2 | Recommended for .NET 8.0 |
|
| Microsoft.Extensions.Options | 10.0.2 | 8.0.2 | Recommended for .NET 8.0 |
|
||||||
| Microsoft.Extensions.Primitives | 10.0.2 | 8.0.0 | Recommended for .NET 8.0 |
|
| Microsoft.Extensions.Primitives | 10.0.2 | 8.0.0 | Recommended for .NET 8.0 |
|
||||||
| System.Diagnostics.DiagnosticSource | 10.0.2 | 8.0.1 | Recommended for .NET 8.0 |
|
| System.Diagnostics.DiagnosticSource | 10.0.2 | 8.0.1 | Recommended for .NET 8.0 |
|
||||||
| System.Drawing.Common | 9.0.10 | 8.0.24 | Recommended for .NET 8.0 |
|
| System.Drawing.Common | 9.0.10 | 8.0.24 | Recommended for .NET 8.0 |
|
||||||
| System.IO.Pipelines | 10.0.2 | 8.0.0 | Recommended for .NET 8.0 |
|
| System.IO.Pipelines | 10.0.2 | 8.0.0 | Recommended for .NET 8.0 |
|
||||||
| System.Security.AccessControl | 4.7.0 | 6.0.1 | Recommended for .NET 8.0 |
|
| System.Security.AccessControl | 4.7.0 | 6.0.1 | Recommended for .NET 8.0 |
|
||||||
| System.Text.Encodings.Web | 10.0.2 | 8.0.0 | Recommended for .NET 8.0 |
|
| System.Text.Encodings.Web | 10.0.2 | 8.0.0 | Recommended for .NET 8.0 |
|
||||||
| System.Text.Json | 10.0.2 | 8.0.6 | Recommended for .NET 8.0 |
|
| System.Text.Json | 10.0.2 | 8.0.6 | Recommended for .NET 8.0 |
|
||||||
| Microsoft.Win32.Registry | 4.7.0 | | Functionality included with framework |
|
| Microsoft.Win32.Registry | 4.7.0 | | Functionality included with framework |
|
||||||
| System.Buffers | 4.6.1 | | Functionality included with framework |
|
| System.Buffers | 4.6.1 | | Functionality included with framework |
|
||||||
| System.IO | 4.3.0 | | Functionality included with framework |
|
| System.IO | 4.3.0 | | Functionality included with framework |
|
||||||
| System.Memory | 4.6.3 | | Functionality included with framework |
|
| System.Memory | 4.6.3 | | Functionality included with framework |
|
||||||
| System.Net.Http | 4.3.4 | | Functionality included with framework |
|
| System.Net.Http | 4.3.4 | | Functionality included with framework |
|
||||||
| System.Numerics.Vectors | 4.6.1 | | Functionality included with framework |
|
| System.Numerics.Vectors | 4.6.1 | | Functionality included with framework |
|
||||||
| System.Runtime | 4.3.0 | | Functionality included with framework |
|
| System.Runtime | 4.3.0 | | Functionality included with framework |
|
||||||
| System.Security.Cryptography.Algorithms | 4.3.0 | | Functionality included with framework |
|
| System.Security.Cryptography.Algorithms | 4.3.0 | | Functionality included with framework |
|
||||||
| System.Security.Cryptography.Encoding | 4.3.0 | | Functionality included with framework |
|
| System.Security.Cryptography.Encoding | 4.3.0 | | Functionality included with framework |
|
||||||
| System.Security.Cryptography.Primitives | 4.3.0 | | Functionality included with framework |
|
| System.Security.Cryptography.Primitives | 4.3.0 | | Functionality included with framework |
|
||||||
| System.Security.Cryptography.X509Certificates | 4.3.0 | | Functionality included with framework |
|
| System.Security.Cryptography.X509Certificates | 4.3.0 | | Functionality included with framework |
|
||||||
| System.Security.Principal.Windows | 4.7.0 | | Functionality included with framework |
|
| System.Security.Principal.Windows | 4.7.0 | | Functionality included with framework |
|
||||||
| System.Threading.Tasks.Extensions | 4.6.3 | | Functionality included with framework |
|
| System.Threading.Tasks.Extensions | 4.6.3 | | Functionality included with framework |
|
||||||
| System.ValueTuple | 4.6.1 | | Functionality included with framework |
|
| System.ValueTuple | 4.6.1 | | Functionality included with framework |
|
||||||
|
|
||||||
### Project upgrade details
|
### Project upgrade details
|
||||||
|
|
||||||
#### ClipTrimDotNet\ClipTrimDotNet.csproj modifications
|
#### ClipTrimDotNet\ClipTrimDotNet.csproj modifications
|
||||||
|
|
||||||
Project properties changes:
|
Project properties changes:
|
||||||
- Target framework should be changed from `.NETFramework,Version=v4.8` to `net8.0`
|
- Target framework should be changed from `.NETFramework,Version=v4.8` to `net8.0`
|
||||||
- Project file should be converted to SDK-style
|
- Project file should be converted to SDK-style
|
||||||
|
|
||||||
NuGet packages changes:
|
NuGet packages changes:
|
||||||
- Update all packages listed in the NuGet packages table above as recommended
|
- Update all packages listed in the NuGet packages table above as recommended
|
||||||
- Remove packages whose functionality is now included with the framework
|
- Remove packages whose functionality is now included with the framework
|
||||||
|
|
||||||
Other changes:
|
Other changes:
|
||||||
- Ensure compatibility with .NET 8.0 APIs and features
|
- Ensure compatibility with .NET 8.0 APIs and features
|
||||||
- Update code as needed for breaking changes
|
- Update code as needed for breaking changes
|
||||||
|
|||||||
4
.vscode/settings.json
vendored
4
.vscode/settings.json
vendored
@ -1,3 +1,3 @@
|
|||||||
{
|
{
|
||||||
"idf.pythonInstallPath": "C:\\Users\\mickl\\.espressif\\tools\\idf-python\\3.11.2\\python.exe"
|
"idf.pythonInstallPath": "C:\\Users\\mickl\\.espressif\\tools\\idf-python\\3.11.2\\python.exe"
|
||||||
}
|
}
|
||||||
@ -1,34 +1,34 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"name": "Uncategorized",
|
"name": "Uncategorized",
|
||||||
"id": 0,
|
"id": 0,
|
||||||
"clips": []
|
"clips": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Test",
|
"name": "Test",
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"clips": []
|
"clips": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "New",
|
"name": "New",
|
||||||
"id": 2,
|
"id": 2,
|
||||||
"clips": [
|
"clips": [
|
||||||
{
|
{
|
||||||
"endTime": 30,
|
"endTime": 30,
|
||||||
"filename": "C:\\Users\\mickl\\Desktop\\cliptrim-ui\\ClipTrimApp\\audio-service\\recordings\\audio_capture_20260220_193822.wav",
|
"filename": "C:\\Users\\mickl\\Desktop\\cliptrim-ui\\ClipTrimApp\\audio-service\\recordings\\audio_capture_20260220_193822.wav",
|
||||||
"name": "Pee pee\npoo poo",
|
"name": "Pee pee\npoo poo",
|
||||||
"playbackType": "playOverlap",
|
"playbackType": "playOverlap",
|
||||||
"startTime": 27.76674010920584,
|
"startTime": 27.76674010920584,
|
||||||
"volume": 0.25
|
"volume": 0.25
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"endTime": 27.516843118383072,
|
"endTime": 27.516843118383072,
|
||||||
"filename": "C:\\Users\\mickl\\Desktop\\cliptrim-ui\\ClipTrimApp\\audio-service\\recordings\\audio_capture_20260220_200442.wav",
|
"filename": "C:\\Users\\mickl\\Desktop\\cliptrim-ui\\ClipTrimApp\\audio-service\\recordings\\audio_capture_20260220_200442.wav",
|
||||||
"name": "Clip 20260220_200442",
|
"name": "Clip 20260220_200442",
|
||||||
"playbackType": "playOverlap",
|
"playbackType": "playOverlap",
|
||||||
"startTime": 25.120307988450435,
|
"startTime": 25.120307988450435,
|
||||||
"volume": 0.64
|
"volume": 0.64
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -1,7 +1,7 @@
|
|||||||
sounddevice==0.5.1
|
sounddevice==0.5.1
|
||||||
numpy==1.22.3
|
numpy==1.22.3
|
||||||
python-osc==1.9.3
|
python-osc==1.9.3
|
||||||
scipy==1.10.1
|
scipy==1.10.1
|
||||||
comtypes==1.4.8
|
comtypes==1.4.8
|
||||||
pycaw==20240210
|
pycaw==20240210
|
||||||
Flask==3.1.2
|
Flask==3.1.2
|
||||||
@ -1,17 +1,17 @@
|
|||||||
{
|
{
|
||||||
"input_device": {
|
"input_device": {
|
||||||
"channels": 2,
|
"channels": 2,
|
||||||
"default_samplerate": 48000,
|
"default_samplerate": 48000,
|
||||||
"index": 55,
|
"index": 55,
|
||||||
"name": "VM Mic mix (VB-Audio Voicemeeter VAIO)"
|
"name": "VM Mic mix (VB-Audio Voicemeeter VAIO)"
|
||||||
},
|
},
|
||||||
"save_path": "C:\\Users\\mickl\\Desktop\\cliptrim-ui\\ClipTrimApp\\audio-service\\recordings",
|
"save_path": "C:\\Users\\mickl\\Desktop\\cliptrim-ui\\ClipTrimApp\\audio-service\\recordings",
|
||||||
"recording_length": 30,
|
"recording_length": 30,
|
||||||
"output_device": {
|
"output_device": {
|
||||||
"channels": 2,
|
"channels": 2,
|
||||||
"default_samplerate": 48000,
|
"default_samplerate": 48000,
|
||||||
"index": 44,
|
"index": 44,
|
||||||
"name": "VM to Headset (VB-Audio Voicemeeter VAIO)"
|
"name": "VM to Headset (VB-Audio Voicemeeter VAIO)"
|
||||||
},
|
},
|
||||||
"http_port": 5010
|
"http_port": 5010
|
||||||
}
|
}
|
||||||
@ -1,168 +1,168 @@
|
|||||||
import sounddevice as sd
|
import sounddevice as sd
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import os
|
import os
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
import scipy.io.wavfile as wavfile
|
import scipy.io.wavfile as wavfile
|
||||||
from metadata_manager import MetaDataManager
|
from metadata_manager import MetaDataManager
|
||||||
from audio_clip import AudioClip
|
from audio_clip import AudioClip
|
||||||
|
|
||||||
|
|
||||||
# AudioClip class for clip playback
|
# AudioClip class for clip playback
|
||||||
|
|
||||||
|
|
||||||
class AudioIO:
|
class AudioIO:
|
||||||
_instance = None
|
_instance = None
|
||||||
|
|
||||||
def __new__(cls, *args, **kwargs):
|
def __new__(cls, *args, **kwargs):
|
||||||
if cls._instance is None:
|
if cls._instance is None:
|
||||||
# print("Creating new AudioRecorder instance")
|
# print("Creating new AudioRecorder instance")
|
||||||
cls._instance = super().__new__(cls)
|
cls._instance = super().__new__(cls)
|
||||||
cls._instance.init()
|
cls._instance.init()
|
||||||
return cls._instance
|
return cls._instance
|
||||||
def init(self):
|
def init(self):
|
||||||
self.duration = 30
|
self.duration = 30
|
||||||
self.channels = 2
|
self.channels = 2
|
||||||
self.input_sample_rate = 44100
|
self.input_sample_rate = 44100
|
||||||
self.output_sample_rate = 44100
|
self.output_sample_rate = 44100
|
||||||
self.buffer = np.zeros((int(self.duration * self.input_sample_rate), self.channels), dtype=np.float32)
|
self.buffer = np.zeros((int(self.duration * self.input_sample_rate), self.channels), dtype=np.float32)
|
||||||
self.recordings_dir = "recordings"
|
self.recordings_dir = "recordings"
|
||||||
|
|
||||||
sd.default.latency = 'low'
|
sd.default.latency = 'low'
|
||||||
|
|
||||||
self.socket = None
|
self.socket = None
|
||||||
|
|
||||||
self.in_stream = sd.InputStream(
|
self.in_stream = sd.InputStream(
|
||||||
callback=self.record_callback
|
callback=self.record_callback
|
||||||
)
|
)
|
||||||
|
|
||||||
self.out_stream = sd.OutputStream(
|
self.out_stream = sd.OutputStream(
|
||||||
callback=self.playback_callback,
|
callback=self.playback_callback,
|
||||||
latency=3
|
latency=3
|
||||||
)
|
)
|
||||||
|
|
||||||
self.clip_map = {}
|
self.clip_map = {}
|
||||||
|
|
||||||
|
|
||||||
def refresh_streams(self):
|
def refresh_streams(self):
|
||||||
was_active = self.in_stream.active
|
was_active = self.in_stream.active
|
||||||
if was_active:
|
if was_active:
|
||||||
self.in_stream.stop()
|
self.in_stream.stop()
|
||||||
self.out_stream.stop()
|
self.out_stream.stop()
|
||||||
|
|
||||||
self.buffer = np.zeros((int(self.duration * self.input_sample_rate), self.channels), dtype=np.float32)
|
self.buffer = np.zeros((int(self.duration * self.input_sample_rate), self.channels), dtype=np.float32)
|
||||||
# print(f"AudioRecorder initialized with duration={self.duration}s, sample_rate={self.sample_rate}Hz, channels={self.channels}")
|
# print(f"AudioRecorder initialized with duration={self.duration}s, sample_rate={self.sample_rate}Hz, channels={self.channels}")
|
||||||
self.in_stream = sd.InputStream(
|
self.in_stream = sd.InputStream(
|
||||||
callback=self.record_callback
|
callback=self.record_callback
|
||||||
)
|
)
|
||||||
|
|
||||||
self.out_stream = sd.OutputStream(
|
self.out_stream = sd.OutputStream(
|
||||||
callback=self.playback_callback
|
callback=self.playback_callback
|
||||||
)
|
)
|
||||||
|
|
||||||
if was_active:
|
if was_active:
|
||||||
self.in_stream.start()
|
self.in_stream.start()
|
||||||
self.out_stream.start()
|
self.out_stream.start()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def record_callback(self, indata, frames, time, status):
|
def record_callback(self, indata, frames, time, status):
|
||||||
if status:
|
if status:
|
||||||
# print(f"Recording status: {status}")
|
# print(f"Recording status: {status}")
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# Circular buffer implementation
|
# Circular buffer implementation
|
||||||
self.buffer = np.roll(self.buffer, -frames, axis=0)
|
self.buffer = np.roll(self.buffer, -frames, axis=0)
|
||||||
self.buffer[-frames:] = indata
|
self.buffer[-frames:] = indata
|
||||||
|
|
||||||
def playback_callback(self, outdata, frames, time, status):
|
def playback_callback(self, outdata, frames, time, status):
|
||||||
if status:
|
if status:
|
||||||
# print(f"Playback status: {status}")
|
# print(f"Playback status: {status}")
|
||||||
pass
|
pass
|
||||||
|
|
||||||
outdata.fill(0)
|
outdata.fill(0)
|
||||||
|
|
||||||
# Iterate over a copy of the items to avoid modifying the dictionary during iteration
|
# Iterate over a copy of the items to avoid modifying the dictionary during iteration
|
||||||
for clip_id, clip_list in list(self.clip_map.items()):
|
for clip_id, clip_list in list(self.clip_map.items()):
|
||||||
for clip in clip_list[:]: # Iterate over a copy of the list
|
for clip in clip_list[:]: # Iterate over a copy of the list
|
||||||
if not clip.is_finished():
|
if not clip.is_finished():
|
||||||
samples = clip.get_samples(frames)
|
samples = clip.get_samples(frames)
|
||||||
outdata[:] += samples.reshape(-1, 1) # Mix into output
|
outdata[:] += samples.reshape(-1, 1) # Mix into output
|
||||||
if clip.is_finished():
|
if clip.is_finished():
|
||||||
self.clip_map[clip_id].remove(clip)
|
self.clip_map[clip_id].remove(clip)
|
||||||
if len(self.clip_map[clip_id]) == 0:
|
if len(self.clip_map[clip_id]) == 0:
|
||||||
del self.clip_map[clip_id]
|
del self.clip_map[clip_id]
|
||||||
break # Exit inner loop since the key is deleted
|
break # Exit inner loop since the key is deleted
|
||||||
|
|
||||||
|
|
||||||
def save_last_n_seconds(self):
|
def save_last_n_seconds(self):
|
||||||
# Create output directory if it doesn't exist
|
# Create output directory if it doesn't exist
|
||||||
os.makedirs(self.recordings_dir, exist_ok=True)
|
os.makedirs(self.recordings_dir, exist_ok=True)
|
||||||
|
|
||||||
# Generate filename with timestamp
|
# Generate filename with timestamp
|
||||||
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
||||||
filename = os.path.join(self.recordings_dir, f"audio_capture_{timestamp}.wav")
|
filename = os.path.join(self.recordings_dir, f"audio_capture_{timestamp}.wav")
|
||||||
|
|
||||||
# Normalize audio to prevent clipping
|
# Normalize audio to prevent clipping
|
||||||
audio_data = self.buffer / np.max(np.abs(self.buffer)) * .5
|
audio_data = self.buffer / np.max(np.abs(self.buffer)) * .5
|
||||||
|
|
||||||
# Convert float32 to int16 for WAV file
|
# Convert float32 to int16 for WAV file
|
||||||
audio_data_int16 = (audio_data * 32767).astype(np.int16)
|
audio_data_int16 = (audio_data * 32767).astype(np.int16)
|
||||||
|
|
||||||
# Write buffer to file
|
# Write buffer to file
|
||||||
wavfile.write(filename, int(self.input_sample_rate), audio_data_int16)
|
wavfile.write(filename, int(self.input_sample_rate), audio_data_int16)
|
||||||
|
|
||||||
meta = MetaDataManager()
|
meta = MetaDataManager()
|
||||||
|
|
||||||
clip_metadata = {
|
clip_metadata = {
|
||||||
"filename": filename,
|
"filename": filename,
|
||||||
"name": f"Clip {timestamp}",
|
"name": f"Clip {timestamp}",
|
||||||
"playbackType":"playStop",
|
"playbackType":"playStop",
|
||||||
"volume": 1.0,
|
"volume": 1.0,
|
||||||
}
|
}
|
||||||
|
|
||||||
meta.add_clip_to_collection("Uncategorized", clip_metadata )
|
meta.add_clip_to_collection("Uncategorized", clip_metadata )
|
||||||
|
|
||||||
|
|
||||||
return clip_metadata
|
return clip_metadata
|
||||||
|
|
||||||
def set_buffer_duration(self, duration):
|
def set_buffer_duration(self, duration):
|
||||||
self.duration = duration
|
self.duration = duration
|
||||||
self.buffer = np.zeros((int(duration * self.input_sample_rate), self.channels), dtype=np.float32)
|
self.buffer = np.zeros((int(duration * self.input_sample_rate), self.channels), dtype=np.float32)
|
||||||
|
|
||||||
def set_recording_directory(self, directory):
|
def set_recording_directory(self, directory):
|
||||||
self.recordings_dir = directory
|
self.recordings_dir = directory
|
||||||
|
|
||||||
def start_recording(self):
|
def start_recording(self):
|
||||||
if(self.in_stream.active):
|
if(self.in_stream.active):
|
||||||
# print("Already recording")
|
# print("Already recording")
|
||||||
return
|
return
|
||||||
# print('number of channels', self.channels)
|
# print('number of channels', self.channels)
|
||||||
|
|
||||||
self.in_stream.start()
|
self.in_stream.start()
|
||||||
self.out_stream.start()
|
self.out_stream.start()
|
||||||
self.output_sample_rate = self.out_stream.samplerate
|
self.output_sample_rate = self.out_stream.samplerate
|
||||||
self.input_sample_rate = self.in_stream.samplerate
|
self.input_sample_rate = self.in_stream.samplerate
|
||||||
|
|
||||||
def stop_recording(self):
|
def stop_recording(self):
|
||||||
if(not self.in_stream.active):
|
if(not self.in_stream.active):
|
||||||
# print("Already stopped")
|
# print("Already stopped")
|
||||||
return
|
return
|
||||||
|
|
||||||
self.in_stream.stop()
|
self.in_stream.stop()
|
||||||
self.out_stream.stop()
|
self.out_stream.stop()
|
||||||
|
|
||||||
def is_recording(self):
|
def is_recording(self):
|
||||||
return self.in_stream.active
|
return self.in_stream.active
|
||||||
|
|
||||||
def play_clip(self, clip_metadata):
|
def play_clip(self, clip_metadata):
|
||||||
print(f"Playing clip: {clip_metadata}")
|
print(f"Playing clip: {clip_metadata}")
|
||||||
clip_id = clip_metadata.get("filename")
|
clip_id = clip_metadata.get("filename")
|
||||||
if clip_metadata.get("playbackType") == "playStop":
|
if clip_metadata.get("playbackType") == "playStop":
|
||||||
if clip_id in self.clip_map:
|
if clip_id in self.clip_map:
|
||||||
del self.clip_map[clip_id]
|
del self.clip_map[clip_id]
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
self.clip_map[clip_id] = []
|
self.clip_map[clip_id] = []
|
||||||
if clip_id not in self.clip_map:
|
if clip_id not in self.clip_map:
|
||||||
self.clip_map[clip_id] = []
|
self.clip_map[clip_id] = []
|
||||||
self.clip_map[clip_id].append(AudioClip(clip_metadata, target_sample_rate=self.output_sample_rate))
|
self.clip_map[clip_id].append(AudioClip(clip_metadata, target_sample_rate=self.output_sample_rate))
|
||||||
@ -1,85 +1,85 @@
|
|||||||
import argparse
|
import argparse
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
from audio_io import AudioIO
|
from audio_io import AudioIO
|
||||||
from windows_audio import WindowsAudioManager
|
from windows_audio import WindowsAudioManager
|
||||||
import sounddevice as sd
|
import sounddevice as sd
|
||||||
from metadata_manager import MetaDataManager
|
from metadata_manager import MetaDataManager
|
||||||
from settings import SettingsManager
|
from settings import SettingsManager
|
||||||
|
|
||||||
from flask import Flask
|
from flask import Flask
|
||||||
from flask_cors import CORS
|
from flask_cors import CORS
|
||||||
|
|
||||||
from routes.recording import recording_bp
|
from routes.recording import recording_bp
|
||||||
from routes.device import device_bp
|
from routes.device import device_bp
|
||||||
from routes.metadata import metadata_bp
|
from routes.metadata import metadata_bp
|
||||||
from routes.settings import settings_bp
|
from routes.settings import settings_bp
|
||||||
from flask_socketio import SocketIO, emit
|
from flask_socketio import SocketIO, emit
|
||||||
import threading
|
import threading
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
CORS(app)
|
CORS(app)
|
||||||
socketio = SocketIO(app, cors_allowed_origins="*")
|
socketio = SocketIO(app, cors_allowed_origins="*")
|
||||||
|
|
||||||
@socketio.on('connect')
|
@socketio.on('connect')
|
||||||
def handle_connect():
|
def handle_connect():
|
||||||
print("Client connected")
|
print("Client connected")
|
||||||
emit('full_data', MetaDataManager().collections)
|
emit('full_data', MetaDataManager().collections)
|
||||||
|
|
||||||
@socketio.on('record_clip')
|
@socketio.on('record_clip')
|
||||||
def record_clip(data):
|
def record_clip(data):
|
||||||
io = AudioIO()
|
io = AudioIO()
|
||||||
io.save_last_n_seconds();
|
io.save_last_n_seconds();
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
# Create argument parser
|
# Create argument parser
|
||||||
parser = argparse.ArgumentParser(description='Audio Recording Service')
|
parser = argparse.ArgumentParser(description='Audio Recording Service')
|
||||||
|
|
||||||
# OSC port argument
|
# OSC port argument
|
||||||
parser.add_argument('--osc-port',
|
parser.add_argument('--osc-port',
|
||||||
type=int,
|
type=int,
|
||||||
help='OSC server port number',
|
help='OSC server port number',
|
||||||
default=5010)
|
default=5010)
|
||||||
|
|
||||||
# Parse arguments
|
# Parse arguments
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
audio_manager = WindowsAudioManager()
|
audio_manager = WindowsAudioManager()
|
||||||
settings = SettingsManager()
|
settings = SettingsManager()
|
||||||
meta = MetaDataManager()
|
meta = MetaDataManager()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Ensure save path exists
|
# Ensure save path exists
|
||||||
os.makedirs(settings.get_settings('save_path'), exist_ok=True)
|
os.makedirs(settings.get_settings('save_path'), exist_ok=True)
|
||||||
|
|
||||||
|
|
||||||
io = AudioIO()
|
io = AudioIO()
|
||||||
io.start_recording()
|
io.start_recording()
|
||||||
|
|
||||||
# settings.socket = socketio
|
# settings.socket = socketio
|
||||||
io.socket = socketio
|
io.socket = socketio
|
||||||
meta.socket = socketio
|
meta.socket = socketio
|
||||||
|
|
||||||
# Register blueprints
|
# Register blueprints
|
||||||
app.register_blueprint(recording_bp)
|
app.register_blueprint(recording_bp)
|
||||||
app.register_blueprint(device_bp)
|
app.register_blueprint(device_bp)
|
||||||
app.register_blueprint(metadata_bp)
|
app.register_blueprint(metadata_bp)
|
||||||
app.register_blueprint(settings_bp)
|
app.register_blueprint(settings_bp)
|
||||||
# app.run(host='127.0.0.1', port=settings.get_settings('http_port'), debug=False, use_reloader=True)
|
# app.run(host='127.0.0.1', port=settings.get_settings('http_port'), debug=False, use_reloader=True)
|
||||||
socketio.run(app, host='127.0.0.1', port=settings.get_settings('http_port'), debug=False, use_reloader=True)
|
socketio.run(app, host='127.0.0.1', port=settings.get_settings('http_port'), debug=False, use_reloader=True)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Run the OSC server
|
# Run the OSC server
|
||||||
# try:
|
# try:
|
||||||
# print(f"Starting OSC Recording Server on port {args.osc_port}")
|
# print(f"Starting OSC Recording Server on port {args.osc_port}")
|
||||||
# # osc_server.run_server()
|
# # osc_server.run_server()
|
||||||
# except KeyboardInterrupt:
|
# except KeyboardInterrupt:
|
||||||
# print("\nServer stopped by user.")
|
# print("\nServer stopped by user.")
|
||||||
# except Exception as e:
|
# except Exception as e:
|
||||||
# print(f"Error starting server: {e}")
|
# print(f"Error starting server: {e}")
|
||||||
# sys.exit(1)
|
# sys.exit(1)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
@ -1,20 +1,20 @@
|
|||||||
{
|
{
|
||||||
"Uncategorized": [
|
"Uncategorized": [
|
||||||
{
|
{
|
||||||
"endTime": 12.489270386266055,
|
"endTime": 12.489270386266055,
|
||||||
"filename": "C:\\Users\\mickl\\Desktop\\cliptrim-ui\\ClipTrimApp\\audio-service\\src\\recordings\\audio_capture_20260214_133540.wav",
|
"filename": "C:\\Users\\mickl\\Desktop\\cliptrim-ui\\ClipTrimApp\\audio-service\\src\\recordings\\audio_capture_20260214_133540.wav",
|
||||||
"name": "Clip 20260214_133540",
|
"name": "Clip 20260214_133540",
|
||||||
"playbackType": "playStop",
|
"playbackType": "playStop",
|
||||||
"startTime": 10.622317596566523,
|
"startTime": 10.622317596566523,
|
||||||
"volume": 1
|
"volume": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"endTime": 6.824034334763957,
|
"endTime": 6.824034334763957,
|
||||||
"filename": "C:\\Users\\mickl\\Desktop\\cliptrim-ui\\ClipTrimApp\\audio-service\\src\\recordings\\audio_capture_20260214_133137.wav",
|
"filename": "C:\\Users\\mickl\\Desktop\\cliptrim-ui\\ClipTrimApp\\audio-service\\src\\recordings\\audio_capture_20260214_133137.wav",
|
||||||
"name": "Clip 20260214_133137",
|
"name": "Clip 20260214_133137",
|
||||||
"playbackType": "playStop",
|
"playbackType": "playStop",
|
||||||
"startTime": 3.7982832618025753,
|
"startTime": 3.7982832618025753,
|
||||||
"volume": 1
|
"volume": 1
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -1,103 +1,103 @@
|
|||||||
import os
|
import os
|
||||||
import json
|
import json
|
||||||
|
|
||||||
class MetaDataManager:
|
class MetaDataManager:
|
||||||
_instance = None
|
_instance = None
|
||||||
|
|
||||||
def __new__(cls, *args, **kwargs):
|
def __new__(cls, *args, **kwargs):
|
||||||
if cls._instance is None:
|
if cls._instance is None:
|
||||||
cls._instance = super().__new__(cls)
|
cls._instance = super().__new__(cls)
|
||||||
cls._instance.init()
|
cls._instance.init()
|
||||||
return cls._instance
|
return cls._instance
|
||||||
def init(self):
|
def init(self):
|
||||||
self.socket = None
|
self.socket = None
|
||||||
# read metadata file from executing directory
|
# read metadata file from executing directory
|
||||||
self.metadata_file = os.path.join(os.getcwd(), "metadata.json")
|
self.metadata_file = os.path.join(os.getcwd(), "metadata.json")
|
||||||
if os.path.exists(self.metadata_file):
|
if os.path.exists(self.metadata_file):
|
||||||
with open(self.metadata_file, "r") as f:
|
with open(self.metadata_file, "r") as f:
|
||||||
self.collections = json.load(f)
|
self.collections = json.load(f)
|
||||||
else:
|
else:
|
||||||
self.collections = {}
|
self.collections = {}
|
||||||
if(collections := next((c for c in self.collections if c.get("name") == "Uncategorized"), None)) is None:
|
if(collections := next((c for c in self.collections if c.get("name") == "Uncategorized"), None)) is None:
|
||||||
self.collections.append({"name": "Uncategorized", "id": 0, "clips": []})
|
self.collections.append({"name": "Uncategorized", "id": 0, "clips": []})
|
||||||
self.save_metadata()
|
self.save_metadata()
|
||||||
|
|
||||||
def create_collection(self, name):
|
def create_collection(self, name):
|
||||||
if any(c.get("name") == name for c in self.collections):
|
if any(c.get("name") == name for c in self.collections):
|
||||||
raise ValueError(f"Collection '{name}' already exists.")
|
raise ValueError(f"Collection '{name}' already exists.")
|
||||||
new_id = max((c.get("id", 0) for c in self.collections), default=0) + 1
|
new_id = max((c.get("id", 0) for c in self.collections), default=0) + 1
|
||||||
self.collections.append({"name": name, "id": new_id, "clips": []})
|
self.collections.append({"name": name, "id": new_id, "clips": []})
|
||||||
self.save_metadata()
|
self.save_metadata()
|
||||||
|
|
||||||
def delete_collection(self, name):
|
def delete_collection(self, name):
|
||||||
collection = next((c for c in self.collections if c.get("name") == name), None)
|
collection = next((c for c in self.collections if c.get("name") == name), None)
|
||||||
if collection is None:
|
if collection is None:
|
||||||
raise ValueError(f"Collection '{name}' does not exist.")
|
raise ValueError(f"Collection '{name}' does not exist.")
|
||||||
self.collections.remove(collection)
|
self.collections.remove(collection)
|
||||||
self.save_metadata()
|
self.save_metadata()
|
||||||
|
|
||||||
def add_clip_to_collection(self, collection_name, clip_metadata):
|
def add_clip_to_collection(self, collection_name, clip_metadata):
|
||||||
collection = next((c for c in self.collections if c.get("name") == collection_name), None)
|
collection = next((c for c in self.collections if c.get("name") == collection_name), None)
|
||||||
if collection is None:
|
if collection is None:
|
||||||
raise ValueError(f"Collection '{collection_name}' does not exist.")
|
raise ValueError(f"Collection '{collection_name}' does not exist.")
|
||||||
collection["clips"].append(clip_metadata)
|
collection["clips"].append(clip_metadata)
|
||||||
self.save_metadata()
|
self.save_metadata()
|
||||||
|
|
||||||
def remove_clip_from_collection(self, collection_name, clip_metadata):
|
def remove_clip_from_collection(self, collection_name, clip_metadata):
|
||||||
collection = next((c for c in self.collections if c.get("name") == collection_name), None)
|
collection = next((c for c in self.collections if c.get("name") == collection_name), None)
|
||||||
if collection is None:
|
if collection is None:
|
||||||
raise ValueError(f"Collection '{collection_name}' does not exist.")
|
raise ValueError(f"Collection '{collection_name}' does not exist.")
|
||||||
# Remove all clips with the same file name as clip_metadata["file_name"]
|
# Remove all clips with the same file name as clip_metadata["file_name"]
|
||||||
in_list = any(clip.get("filename") == clip_metadata.get("filename") for clip in collection["clips"])
|
in_list = any(clip.get("filename") == clip_metadata.get("filename") for clip in collection["clips"])
|
||||||
if not in_list:
|
if not in_list:
|
||||||
raise ValueError(f"Clip with filename '{clip_metadata.get('filename')}' not found in collection '{collection_name}'.")
|
raise ValueError(f"Clip with filename '{clip_metadata.get('filename')}' not found in collection '{collection_name}'.")
|
||||||
|
|
||||||
collection["clips"] = [
|
collection["clips"] = [
|
||||||
clip for clip in collection["clips"]
|
clip for clip in collection["clips"]
|
||||||
if clip.get("filename") != clip_metadata.get("filename")
|
if clip.get("filename") != clip_metadata.get("filename")
|
||||||
]
|
]
|
||||||
self.save_metadata()
|
self.save_metadata()
|
||||||
|
|
||||||
def move_clip_to_collection(self, source_collection, target_collection, clip_metadata):
|
def move_clip_to_collection(self, source_collection, target_collection, clip_metadata):
|
||||||
self.remove_clip_from_collection(source_collection, clip_metadata)
|
self.remove_clip_from_collection(source_collection, clip_metadata)
|
||||||
self.add_clip_to_collection(target_collection, clip_metadata)
|
self.add_clip_to_collection(target_collection, clip_metadata)
|
||||||
|
|
||||||
def edit_clip_in_collection(self, collection_name, new_clip_metadata):
|
def edit_clip_in_collection(self, collection_name, new_clip_metadata):
|
||||||
collection = next((c for c in self.collections if c.get("name") == collection_name), None)
|
collection = next((c for c in self.collections if c.get("name") == collection_name), None)
|
||||||
if collection is None:
|
if collection is None:
|
||||||
raise ValueError(f"Collection '{collection_name}' does not exist.")
|
raise ValueError(f"Collection '{collection_name}' does not exist.")
|
||||||
# Find the index of the clip with the same file name as old_clip_metadata["file_name"]
|
# Find the index of the clip with the same file name as old_clip_metadata["file_name"]
|
||||||
index = next((i for i, clip in enumerate(collection["clips"]) if clip.get("filename") == new_clip_metadata.get("filename")), None)
|
index = next((i for i, clip in enumerate(collection["clips"]) if clip.get("filename") == new_clip_metadata.get("filename")), None)
|
||||||
if index is None:
|
if index is None:
|
||||||
raise ValueError(f"Clip with filename '{new_clip_metadata.get('filename')}' not found in collection '{collection_name}'.")
|
raise ValueError(f"Clip with filename '{new_clip_metadata.get('filename')}' not found in collection '{collection_name}'.")
|
||||||
|
|
||||||
collection["clips"][index] = new_clip_metadata
|
collection["clips"][index] = new_clip_metadata
|
||||||
self.save_metadata()
|
self.save_metadata()
|
||||||
|
|
||||||
def get_collections(self):
|
def get_collections(self):
|
||||||
return list(map(lambda c: {"name": c.get("name"), "id": c.get("id")}, self.collections))
|
return list(map(lambda c: {"name": c.get("name"), "id": c.get("id")}, self.collections))
|
||||||
|
|
||||||
def get_clips_in_collection(self, collection_name):
|
def get_clips_in_collection(self, collection_name):
|
||||||
collection = next((c for c in self.collections if c.get("name") == collection_name), None)
|
collection = next((c for c in self.collections if c.get("name") == collection_name), None)
|
||||||
if collection is None:
|
if collection is None:
|
||||||
raise ValueError(f"Collection '{collection_name}' does not exist.")
|
raise ValueError(f"Collection '{collection_name}' does not exist.")
|
||||||
return collection["clips"]
|
return collection["clips"]
|
||||||
|
|
||||||
def reorder_clips_in_collection(self, collection_name, new_order):
|
def reorder_clips_in_collection(self, collection_name, new_order):
|
||||||
collection = next((c for c in self.collections if c.get("name") == collection_name), None)
|
collection = next((c for c in self.collections if c.get("name") == collection_name), None)
|
||||||
if collection is None:
|
if collection is None:
|
||||||
raise ValueError(f"Collection '{collection_name}' does not exist.")
|
raise ValueError(f"Collection '{collection_name}' does not exist.")
|
||||||
existing_filenames = {clip.get("filename") for clip in collection["clips"]}
|
existing_filenames = {clip.get("filename") for clip in collection["clips"]}
|
||||||
new_filenames = {clip.get("filename") for clip in new_order}
|
new_filenames = {clip.get("filename") for clip in new_order}
|
||||||
|
|
||||||
if not new_filenames.issubset(existing_filenames):
|
if not new_filenames.issubset(existing_filenames):
|
||||||
raise ValueError("New order contains clips that do not exist in the collection.")
|
raise ValueError("New order contains clips that do not exist in the collection.")
|
||||||
|
|
||||||
collection["clips"] = new_order
|
collection["clips"] = new_order
|
||||||
if not self.socket is None:
|
if not self.socket is None:
|
||||||
self.socket.emit('collection_updated', collection)
|
self.socket.emit('collection_updated', collection)
|
||||||
self.save_metadata()
|
self.save_metadata()
|
||||||
|
|
||||||
def save_metadata(self):
|
def save_metadata(self):
|
||||||
with open(self.metadata_file, "w") as f:
|
with open(self.metadata_file, "w") as f:
|
||||||
json.dump(self.collections, f, indent=4)
|
json.dump(self.collections, f, indent=4)
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
[ViewState]
|
[ViewState]
|
||||||
Mode=
|
Mode=
|
||||||
Vid=
|
Vid=
|
||||||
FolderType=Generic
|
FolderType=Generic
|
||||||
|
|||||||
@ -1,57 +1,57 @@
|
|||||||
|
|
||||||
from flask import Blueprint, request, jsonify
|
from flask import Blueprint, request, jsonify
|
||||||
from audio_io import AudioIO
|
from audio_io import AudioIO
|
||||||
import os
|
import os
|
||||||
|
|
||||||
recording_bp = Blueprint('recording', __name__)
|
recording_bp = Blueprint('recording', __name__)
|
||||||
|
|
||||||
@recording_bp.route('/record/start', methods=['POST'])
|
@recording_bp.route('/record/start', methods=['POST'])
|
||||||
def start_recording():
|
def start_recording():
|
||||||
recorder = AudioIO()
|
recorder = AudioIO()
|
||||||
print('HTTP: Starting audio recording')
|
print('HTTP: Starting audio recording')
|
||||||
recorder.start_recording()
|
recorder.start_recording()
|
||||||
return jsonify({'status': 'recording started'})
|
return jsonify({'status': 'recording started'})
|
||||||
|
|
||||||
@recording_bp.route('/record/stop', methods=['POST'])
|
@recording_bp.route('/record/stop', methods=['POST'])
|
||||||
def stop_recording():
|
def stop_recording():
|
||||||
recorder = AudioIO()
|
recorder = AudioIO()
|
||||||
# print('HTTP: Stopping audio recording')
|
# print('HTTP: Stopping audio recording')
|
||||||
recorder.stop_recording()
|
recorder.stop_recording()
|
||||||
return jsonify({'status': 'recording stopped'})
|
return jsonify({'status': 'recording stopped'})
|
||||||
|
|
||||||
@recording_bp.route('/record/save', methods=['POST'])
|
@recording_bp.route('/record/save', methods=['POST'])
|
||||||
def save_recording():
|
def save_recording():
|
||||||
recorder = AudioIO()
|
recorder = AudioIO()
|
||||||
# print('HTTP: Saving audio recording')
|
# print('HTTP: Saving audio recording')
|
||||||
saved_file = recorder.save_last_n_seconds()
|
saved_file = recorder.save_last_n_seconds()
|
||||||
return jsonify({'status': 'recording saved', 'file': saved_file})
|
return jsonify({'status': 'recording saved', 'file': saved_file})
|
||||||
|
|
||||||
|
|
||||||
@recording_bp.route('/record/status', methods=['GET'])
|
@recording_bp.route('/record/status', methods=['GET'])
|
||||||
def recording_status():
|
def recording_status():
|
||||||
recorder = AudioIO()
|
recorder = AudioIO()
|
||||||
# print('HTTP: Checking recording status')
|
# print('HTTP: Checking recording status')
|
||||||
status = 'recording' if recorder.is_recording() else 'stopped'
|
status = 'recording' if recorder.is_recording() else 'stopped'
|
||||||
return jsonify({'status': status})
|
return jsonify({'status': status})
|
||||||
|
|
||||||
@recording_bp.route('/record/delete', methods=['POST'])
|
@recording_bp.route('/record/delete', methods=['POST'])
|
||||||
def recording_delete():
|
def recording_delete():
|
||||||
filename = request.json.get('filename')
|
filename = request.json.get('filename')
|
||||||
try:
|
try:
|
||||||
os.remove(filename)
|
os.remove(filename)
|
||||||
return jsonify({'status': 'success'})
|
return jsonify({'status': 'success'})
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return jsonify({'status': 'error', 'message': str(e)}), 400
|
return jsonify({'status': 'error', 'message': str(e)}), 400
|
||||||
|
|
||||||
@recording_bp.route('/playback/start', methods=['POST'])
|
@recording_bp.route('/playback/start', methods=['POST'])
|
||||||
def playback_start():
|
def playback_start():
|
||||||
print(f"Playing clip")
|
print(f"Playing clip")
|
||||||
# print('HTTP: Starting audio playback')
|
# print('HTTP: Starting audio playback')
|
||||||
clip = request.json
|
clip = request.json
|
||||||
try:
|
try:
|
||||||
io = AudioIO()
|
io = AudioIO()
|
||||||
io.play_clip(clip)
|
io.play_clip(clip)
|
||||||
# os.remove(filename)
|
# os.remove(filename)
|
||||||
return jsonify({'status': 'success'})
|
return jsonify({'status': 'success'})
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return jsonify({'status': 'error', 'message': str(e)}), 400
|
return jsonify({'status': 'error', 'message': str(e)}), 400
|
||||||
@ -1,32 +1,32 @@
|
|||||||
from flask import Blueprint, request, jsonify
|
from flask import Blueprint, request, jsonify
|
||||||
from settings import SettingsManager
|
from settings import SettingsManager
|
||||||
|
|
||||||
settings_bp = Blueprint('settings', __name__)
|
settings_bp = Blueprint('settings', __name__)
|
||||||
|
|
||||||
|
|
||||||
@settings_bp.route('/settings', methods=['GET'])
|
@settings_bp.route('/settings', methods=['GET'])
|
||||||
def get_all_settings():
|
def get_all_settings():
|
||||||
return jsonify({'status': 'success', 'settings': SettingsManager().get_all_settings()})
|
return jsonify({'status': 'success', 'settings': SettingsManager().get_all_settings()})
|
||||||
|
|
||||||
@settings_bp.route('/settings/<name>', methods=['GET'])
|
@settings_bp.route('/settings/<name>', methods=['GET'])
|
||||||
def get_setting(name):
|
def get_setting(name):
|
||||||
value = SettingsManager().get_settings(name)
|
value = SettingsManager().get_settings(name)
|
||||||
if value is not None:
|
if value is not None:
|
||||||
return jsonify({'status': 'success', 'name': name, 'value': value})
|
return jsonify({'status': 'success', 'name': name, 'value': value})
|
||||||
else:
|
else:
|
||||||
return jsonify({'status': 'error', 'message': f'Setting "{name}" not found'}), 404
|
return jsonify({'status': 'error', 'message': f'Setting "{name}" not found'}), 404
|
||||||
|
|
||||||
@settings_bp.route('/settings/update', methods=['POST'])
|
@settings_bp.route('/settings/update', methods=['POST'])
|
||||||
def set_all_settings():
|
def set_all_settings():
|
||||||
settings = request.json.get('settings')
|
settings = request.json.get('settings')
|
||||||
print (f"Received settings update: {settings}")
|
print (f"Received settings update: {settings}")
|
||||||
if settings is None:
|
if settings is None:
|
||||||
return jsonify({'status': 'error', 'message': 'Settings are required'}), 400
|
return jsonify({'status': 'error', 'message': 'Settings are required'}), 400
|
||||||
try:
|
try:
|
||||||
for name, value in settings.items():
|
for name, value in settings.items():
|
||||||
print(f"Updating setting '{name}' to '{value}'")
|
print(f"Updating setting '{name}' to '{value}'")
|
||||||
SettingsManager().set_settings(name, value)
|
SettingsManager().set_settings(name, value)
|
||||||
return jsonify({'status': 'success', 'settings': settings})
|
return jsonify({'status': 'success', 'settings': settings})
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
return jsonify({'status': 'error', 'message': str(e)}), 400
|
return jsonify({'status': 'error', 'message': str(e)}), 400
|
||||||
|
|
||||||
@ -1,10 +1,10 @@
|
|||||||
{
|
{
|
||||||
"input_device": {
|
"input_device": {
|
||||||
"index": 0,
|
"index": 0,
|
||||||
"name": "Microsoft Sound Mapper - Input",
|
"name": "Microsoft Sound Mapper - Input",
|
||||||
"max_input_channels": 2,
|
"max_input_channels": 2,
|
||||||
"default_samplerate": 44100.0
|
"default_samplerate": 44100.0
|
||||||
},
|
},
|
||||||
"save_path": "C:\\Users\\mickl\\Desktop\\cliptrim-ui\\ClipTrimApp\\audio-service\\src\\recordings",
|
"save_path": "C:\\Users\\mickl\\Desktop\\cliptrim-ui\\ClipTrimApp\\audio-service\\src\\recordings",
|
||||||
"recording_length": 15
|
"recording_length": 15
|
||||||
}
|
}
|
||||||
@ -1,112 +1,112 @@
|
|||||||
import sounddevice as sd
|
import sounddevice as sd
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import comtypes
|
import comtypes
|
||||||
import comtypes.client
|
import comtypes.client
|
||||||
from comtypes import CLSCTX_ALL
|
from comtypes import CLSCTX_ALL
|
||||||
from pycaw.pycaw import AudioUtilities, IAudioEndpointVolume
|
from pycaw.pycaw import AudioUtilities, IAudioEndpointVolume
|
||||||
import json
|
import json
|
||||||
|
|
||||||
class WindowsAudioManager:
|
class WindowsAudioManager:
|
||||||
_instance = None
|
_instance = None
|
||||||
|
|
||||||
def __new__(cls, *args, **kwargs):
|
def __new__(cls, *args, **kwargs):
|
||||||
if cls._instance is None:
|
if cls._instance is None:
|
||||||
cls._instance = super().__new__(cls)
|
cls._instance = super().__new__(cls)
|
||||||
cls._instance.init()
|
cls._instance.init()
|
||||||
return cls._instance
|
return cls._instance
|
||||||
def init(self):
|
def init(self):
|
||||||
"""
|
"""
|
||||||
Initialize Windows audio device and volume management.
|
Initialize Windows audio device and volume management.
|
||||||
"""
|
"""
|
||||||
host_apis = sd.query_hostapis()
|
host_apis = sd.query_hostapis()
|
||||||
wasapi_device_indexes = None
|
wasapi_device_indexes = None
|
||||||
for api in host_apis:
|
for api in host_apis:
|
||||||
if api['name'].lower() == 'Windows WASAPI'.lower():
|
if api['name'].lower() == 'Windows WASAPI'.lower():
|
||||||
wasapi_device_indexes = api['devices']
|
wasapi_device_indexes = api['devices']
|
||||||
break
|
break
|
||||||
# print(f"Host APIs: {host_apis}")
|
# print(f"Host APIs: {host_apis}")
|
||||||
# print(f"WASAPI Device Indexes: {wasapi_device_indexes}")
|
# print(f"WASAPI Device Indexes: {wasapi_device_indexes}")
|
||||||
wasapi_device_indexes = set(wasapi_device_indexes) if wasapi_device_indexes is not None else set()
|
wasapi_device_indexes = set(wasapi_device_indexes) if wasapi_device_indexes is not None else set()
|
||||||
self.devices = [dev for dev in sd.query_devices() if dev['index'] in wasapi_device_indexes]
|
self.devices = [dev for dev in sd.query_devices() if dev['index'] in wasapi_device_indexes]
|
||||||
# self.devices = sd.query_devices()
|
# self.devices = sd.query_devices()
|
||||||
# print(f"devices: {self.devices}")
|
# print(f"devices: {self.devices}")
|
||||||
|
|
||||||
self.default_input = sd.default.device[0]
|
self.default_input = sd.default.device[0]
|
||||||
self.default_output = sd.default.device[1]
|
self.default_output = sd.default.device[1]
|
||||||
|
|
||||||
def list_audio_devices(self, kind='input'):
|
def list_audio_devices(self, kind='input'):
|
||||||
"""
|
"""
|
||||||
List available audio devices.
|
List available audio devices.
|
||||||
|
|
||||||
:param kind: 'input' or 'output'
|
:param kind: 'input' or 'output'
|
||||||
:return: List of audio devices
|
:return: List of audio devices
|
||||||
"""
|
"""
|
||||||
if kind == 'input':
|
if kind == 'input':
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
'index': dev['index'],
|
'index': dev['index'],
|
||||||
'name': dev['name'],
|
'name': dev['name'],
|
||||||
'channels': dev['max_input_channels'],
|
'channels': dev['max_input_channels'],
|
||||||
'default_samplerate': dev['default_samplerate']
|
'default_samplerate': dev['default_samplerate']
|
||||||
}
|
}
|
||||||
for dev in self.devices if dev['max_input_channels'] > 0
|
for dev in self.devices if dev['max_input_channels'] > 0
|
||||||
]
|
]
|
||||||
elif kind == 'output':
|
elif kind == 'output':
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
'index': dev['index'],
|
'index': dev['index'],
|
||||||
'name': dev['name'],
|
'name': dev['name'],
|
||||||
'channels': dev['max_output_channels'],
|
'channels': dev['max_output_channels'],
|
||||||
'default_samplerate': dev['default_samplerate']
|
'default_samplerate': dev['default_samplerate']
|
||||||
}
|
}
|
||||||
for dev in self.devices if dev['max_output_channels'] > 0
|
for dev in self.devices if dev['max_output_channels'] > 0
|
||||||
]
|
]
|
||||||
def get_default_device(self, kind='input'):
|
def get_default_device(self, kind='input'):
|
||||||
"""
|
"""
|
||||||
Get the default audio device.
|
Get the default audio device.
|
||||||
|
|
||||||
:param kind: 'input' or 'output'
|
:param kind: 'input' or 'output'
|
||||||
:return: Default audio device information
|
:return: Default audio device information
|
||||||
"""
|
"""
|
||||||
if kind == 'input':
|
if kind == 'input':
|
||||||
dev = self.devices[self.default_input]
|
dev = self.devices[self.default_input]
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
'index': dev['index'],
|
'index': dev['index'],
|
||||||
'name': dev['name'],
|
'name': dev['name'],
|
||||||
'max_input_channels': dev['max_input_channels'],
|
'max_input_channels': dev['max_input_channels'],
|
||||||
'default_samplerate': dev['default_samplerate']
|
'default_samplerate': dev['default_samplerate']
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
def set_default_input_device(self, device_index):
|
def set_default_input_device(self, device_index):
|
||||||
if(device_index is None):
|
if(device_index is None):
|
||||||
return 0
|
return 0
|
||||||
"""
|
"""
|
||||||
Set the default input audio device.
|
Set the default input audio device.
|
||||||
|
|
||||||
:param device_index: Index of the audio device
|
:param device_index: Index of the audio device
|
||||||
:return: Sample rate of the selected device
|
:return: Sample rate of the selected device
|
||||||
"""
|
"""
|
||||||
sd.default.device[0] = device_index
|
sd.default.device[0] = device_index
|
||||||
self.default_input = device_index
|
self.default_input = device_index
|
||||||
|
|
||||||
# Get the sample rate of the selected device
|
# Get the sample rate of the selected device
|
||||||
device_info = sd.query_devices(device_index)
|
device_info = sd.query_devices(device_index)
|
||||||
return device_info['default_samplerate']
|
return device_info['default_samplerate']
|
||||||
|
|
||||||
def set_default_output_device(self, device_index):
|
def set_default_output_device(self, device_index):
|
||||||
if(device_index is None):
|
if(device_index is None):
|
||||||
return self.get_current_output_device_sample_rate()
|
return self.get_current_output_device_sample_rate()
|
||||||
"""
|
"""
|
||||||
Set the default output audio device.
|
Set the default output audio device.
|
||||||
|
|
||||||
:param device_index: Index of the audio device
|
:param device_index: Index of the audio device
|
||||||
:return: Sample rate of the selected device
|
:return: Sample rate of the selected device
|
||||||
"""
|
"""
|
||||||
sd.default.device[1] = device_index
|
sd.default.device[1] = device_index
|
||||||
self.default_output = device_index
|
self.default_output = device_index
|
||||||
|
|
||||||
# Get the sample rate of the selected device
|
# Get the sample rate of the selected device
|
||||||
device_info = sd.query_devices(device_index)
|
device_info = sd.query_devices(device_index)
|
||||||
return device_info['default_samplerate']
|
return device_info['default_samplerate']
|
||||||
@ -1,44 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Newtonsoft.Json;
|
|
||||||
using SocketIOClient;
|
|
||||||
|
|
||||||
namespace ClientTest
|
|
||||||
{
|
|
||||||
public class Client
|
|
||||||
{
|
|
||||||
private SocketIO client;
|
|
||||||
public Client()
|
|
||||||
{
|
|
||||||
client = new SocketIO(new Uri("http://localhost:5010/"));
|
|
||||||
client.Options.AutoUpgrade = false;
|
|
||||||
client.Options.ConnectionTimeout = TimeSpan.FromSeconds(10);
|
|
||||||
client.Options.Reconnection = false;
|
|
||||||
client.On("test_event", ctx =>
|
|
||||||
{
|
|
||||||
Console.WriteLine($"Received test event: {ctx.RawText}");
|
|
||||||
return Task.CompletedTask;
|
|
||||||
});
|
|
||||||
|
|
||||||
client.On("collection_updated", ctx =>
|
|
||||||
{
|
|
||||||
Console.WriteLine($"Received test event: {ctx.RawText}");
|
|
||||||
return Task.CompletedTask;
|
|
||||||
});
|
|
||||||
client.OnAny((string eventName, IEventContext ctx) =>
|
|
||||||
{
|
|
||||||
Console.WriteLine($"got event: {eventName} \n {ctx.RawText}");
|
|
||||||
return Task.CompletedTask;
|
|
||||||
});
|
|
||||||
|
|
||||||
client.ConnectAsync().Wait();
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
client.EmitAsync("test_event", [""]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,14 +0,0 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
|
||||||
|
|
||||||
<PropertyGroup>
|
|
||||||
<OutputType>Exe</OutputType>
|
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
|
||||||
<Nullable>enable</Nullable>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="SocketIOClient" Version="4.0.0.2" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
|
||||||
@ -1,10 +0,0 @@
|
|||||||
// See https://aka.ms/new-console-template for more information
|
|
||||||
using ClientTest;
|
|
||||||
|
|
||||||
Console.WriteLine("Hello, World!");
|
|
||||||
Client client = new Client();
|
|
||||||
|
|
||||||
while (true)
|
|
||||||
{
|
|
||||||
await Task.Delay(1000);
|
|
||||||
}
|
|
||||||
@ -1,296 +0,0 @@
|
|||||||
{
|
|
||||||
"runtimeTarget": {
|
|
||||||
"name": ".NETCoreApp,Version=v8.0",
|
|
||||||
"signature": ""
|
|
||||||
},
|
|
||||||
"compilationOptions": {},
|
|
||||||
"targets": {
|
|
||||||
".NETCoreApp,Version=v8.0": {
|
|
||||||
"ClientTest/1.0.0": {
|
|
||||||
"dependencies": {
|
|
||||||
"SocketIOClient": "4.0.0.2"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"ClientTest.dll": {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.DependencyInjection/10.0.2": {
|
|
||||||
"dependencies": {
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": {
|
|
||||||
"assemblyVersion": "10.0.0.0",
|
|
||||||
"fileVersion": "10.0.225.61305"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions/10.0.2": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
|
|
||||||
"assemblyVersion": "10.0.0.0",
|
|
||||||
"fileVersion": "10.0.225.61305"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.Logging/10.0.2": {
|
|
||||||
"dependencies": {
|
|
||||||
"Microsoft.Extensions.DependencyInjection": "10.0.2",
|
|
||||||
"Microsoft.Extensions.Logging.Abstractions": "10.0.2",
|
|
||||||
"Microsoft.Extensions.Options": "10.0.2"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net8.0/Microsoft.Extensions.Logging.dll": {
|
|
||||||
"assemblyVersion": "10.0.0.0",
|
|
||||||
"fileVersion": "10.0.225.61305"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.Logging.Abstractions/10.0.2": {
|
|
||||||
"dependencies": {
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2",
|
|
||||||
"System.Diagnostics.DiagnosticSource": "10.0.2"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": {
|
|
||||||
"assemblyVersion": "10.0.0.0",
|
|
||||||
"fileVersion": "10.0.225.61305"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.Options/10.0.2": {
|
|
||||||
"dependencies": {
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2",
|
|
||||||
"Microsoft.Extensions.Primitives": "10.0.2"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net8.0/Microsoft.Extensions.Options.dll": {
|
|
||||||
"assemblyVersion": "10.0.0.0",
|
|
||||||
"fileVersion": "10.0.225.61305"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.Primitives/10.0.2": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/net8.0/Microsoft.Extensions.Primitives.dll": {
|
|
||||||
"assemblyVersion": "10.0.0.0",
|
|
||||||
"fileVersion": "10.0.225.61305"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Newtonsoft.Json/13.0.4": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Newtonsoft.Json.dll": {
|
|
||||||
"assemblyVersion": "13.0.0.0",
|
|
||||||
"fileVersion": "13.0.4.30916"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"SocketIOClient/4.0.0.2": {
|
|
||||||
"dependencies": {
|
|
||||||
"Microsoft.Extensions.DependencyInjection": "10.0.2",
|
|
||||||
"Microsoft.Extensions.Logging": "10.0.2",
|
|
||||||
"SocketIOClient.Common": "4.0.0",
|
|
||||||
"SocketIOClient.Serializer": "4.0.0.1",
|
|
||||||
"SocketIOClient.Serializer.NewtonsoftJson": "4.0.0.1",
|
|
||||||
"System.Text.Json": "10.0.2"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net8.0/SocketIOClient.dll": {
|
|
||||||
"assemblyVersion": "4.0.0.2",
|
|
||||||
"fileVersion": "4.0.0.2"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"SocketIOClient.Common/4.0.0": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/net8.0/SocketIOClient.Common.dll": {
|
|
||||||
"assemblyVersion": "4.0.0.0",
|
|
||||||
"fileVersion": "4.0.0.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"SocketIOClient.Serializer/4.0.0.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"SocketIOClient.Common": "4.0.0"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net8.0/SocketIOClient.Serializer.dll": {
|
|
||||||
"assemblyVersion": "4.0.0.1",
|
|
||||||
"fileVersion": "4.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"SocketIOClient.Serializer.NewtonsoftJson/4.0.0.1": {
|
|
||||||
"dependencies": {
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2",
|
|
||||||
"Newtonsoft.Json": "13.0.4",
|
|
||||||
"SocketIOClient.Common": "4.0.0",
|
|
||||||
"SocketIOClient.Serializer": "4.0.0.1"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net8.0/SocketIOClient.Serializer.NewtonsoftJson.dll": {
|
|
||||||
"assemblyVersion": "4.0.0.1",
|
|
||||||
"fileVersion": "4.0.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Diagnostics.DiagnosticSource/10.0.2": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/net8.0/System.Diagnostics.DiagnosticSource.dll": {
|
|
||||||
"assemblyVersion": "10.0.0.0",
|
|
||||||
"fileVersion": "10.0.225.61305"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.IO.Pipelines/10.0.2": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/net8.0/System.IO.Pipelines.dll": {
|
|
||||||
"assemblyVersion": "10.0.0.0",
|
|
||||||
"fileVersion": "10.0.225.61305"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Text.Encodings.Web/10.0.2": {
|
|
||||||
"runtime": {
|
|
||||||
"lib/net8.0/System.Text.Encodings.Web.dll": {
|
|
||||||
"assemblyVersion": "10.0.0.0",
|
|
||||||
"fileVersion": "10.0.225.61305"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"runtimeTargets": {
|
|
||||||
"runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll": {
|
|
||||||
"rid": "browser",
|
|
||||||
"assetType": "runtime",
|
|
||||||
"assemblyVersion": "10.0.0.0",
|
|
||||||
"fileVersion": "10.0.225.61305"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Text.Json/10.0.2": {
|
|
||||||
"dependencies": {
|
|
||||||
"System.IO.Pipelines": "10.0.2",
|
|
||||||
"System.Text.Encodings.Web": "10.0.2"
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net8.0/System.Text.Json.dll": {
|
|
||||||
"assemblyVersion": "10.0.0.0",
|
|
||||||
"fileVersion": "10.0.225.61305"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"libraries": {
|
|
||||||
"ClientTest/1.0.0": {
|
|
||||||
"type": "project",
|
|
||||||
"serviceable": false,
|
|
||||||
"sha512": ""
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.DependencyInjection/10.0.2": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-J/Zmp6fY93JbaiZ11ckWvcyxMPjD6XVwIHQXBjryTBgn7O6O20HYg9uVLFcZlNfgH78MnreE/7EH+hjfzn7VyA==",
|
|
||||||
"path": "microsoft.extensions.dependencyinjection/10.0.2",
|
|
||||||
"hashPath": "microsoft.extensions.dependencyinjection.10.0.2.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions/10.0.2": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-zOIurr59+kUf9vNcsUkCvKWZv+fPosUZXURZesYkJCvl0EzTc9F7maAO4Cd2WEV7ZJJ0AZrFQvuH6Npph9wdBw==",
|
|
||||||
"path": "microsoft.extensions.dependencyinjection.abstractions/10.0.2",
|
|
||||||
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.10.0.2.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.Logging/10.0.2": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-a0EWuBs6D3d7XMGroDXm+WsAi5CVVfjOJvyxurzWnuhBN9CO+1qHKcrKV1JK7H/T4ZtHIoVCOX/YyWM8K87qtw==",
|
|
||||||
"path": "microsoft.extensions.logging/10.0.2",
|
|
||||||
"hashPath": "microsoft.extensions.logging.10.0.2.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.Logging.Abstractions/10.0.2": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-RZkez/JjpnO+MZ6efKkSynN6ZztLpw3WbxNzjLCPBd97wWj1S9ZYPWi0nmT4kWBRa6atHsdM1ydGkUr8GudyDQ==",
|
|
||||||
"path": "microsoft.extensions.logging.abstractions/10.0.2",
|
|
||||||
"hashPath": "microsoft.extensions.logging.abstractions.10.0.2.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.Options/10.0.2": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-1De2LJjmxdqopI5AYC5dIhoZQ79AR5ayywxNF1rXrXFtKQfbQOV9+n/IsZBa7qWlr0MqoGpW8+OY2v/57udZOA==",
|
|
||||||
"path": "microsoft.extensions.options/10.0.2",
|
|
||||||
"hashPath": "microsoft.extensions.options.10.0.2.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.Primitives/10.0.2": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-QmSiO+oLBEooGgB3i0GRXyeYRDHjllqt3k365jwfZlYWhvSHA3UL2NEVV5m8aZa041eIlblo6KMI5txvTMpTwA==",
|
|
||||||
"path": "microsoft.extensions.primitives/10.0.2",
|
|
||||||
"hashPath": "microsoft.extensions.primitives.10.0.2.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"Newtonsoft.Json/13.0.4": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-pdgNNMai3zv51W5aq268sujXUyx7SNdE2bj1wZcWjAQrKMFZV260lbqYop1d2GM67JI1huLRwxo9ZqnfF/lC6A==",
|
|
||||||
"path": "newtonsoft.json/13.0.4",
|
|
||||||
"hashPath": "newtonsoft.json.13.0.4.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"SocketIOClient/4.0.0.2": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-RYtHafPCBCoY8F9KI583t4Dw3+c45XHmPf6xLIHtQeSimDLn3rMUSnITcCCRzbI7ITkKgw1eBhICdeVEs4hjHQ==",
|
|
||||||
"path": "socketioclient/4.0.0.2",
|
|
||||||
"hashPath": "socketioclient.4.0.0.2.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"SocketIOClient.Common/4.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-7wlg0hMX5/k+fZejclVR7aKSj+Q37KCmVrKPIjZV+9z/odb11hZ4L+a0T3cV1w1jicTBWFEKvjWfWh6YKtz9Qg==",
|
|
||||||
"path": "socketioclient.common/4.0.0",
|
|
||||||
"hashPath": "socketioclient.common.4.0.0.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"SocketIOClient.Serializer/4.0.0.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-+p1xnwSkX8UQQLgqr2Em6dIATl5pR7awHj1nbaRd/9aA2iAHGgy7HsseN8eblv3NHlPtTP9Y3IFDl5JKfWSYjg==",
|
|
||||||
"path": "socketioclient.serializer/4.0.0.1",
|
|
||||||
"hashPath": "socketioclient.serializer.4.0.0.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"SocketIOClient.Serializer.NewtonsoftJson/4.0.0.1": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-D7nzYdIcNIPjGp7LW+KmJHk5I6uz3ioGb6fwxdpspuruwTTl1bTwczRuvEFcFjTHtb0Avhbcaw65jo6eAUmsYw==",
|
|
||||||
"path": "socketioclient.serializer.newtonsoftjson/4.0.0.1",
|
|
||||||
"hashPath": "socketioclient.serializer.newtonsoftjson.4.0.0.1.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Diagnostics.DiagnosticSource/10.0.2": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-lYWBy8fKkJHaRcOuw30d67PrtVjR5754sz5Wl76s8P+vJ9FSThh9b7LIcTSODx1LY7NB3Srvg+JMnzd67qNZOw==",
|
|
||||||
"path": "system.diagnostics.diagnosticsource/10.0.2",
|
|
||||||
"hashPath": "system.diagnostics.diagnosticsource.10.0.2.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.IO.Pipelines/10.0.2": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-EqMsn9r18ABvTDxrDce4OWDhBE3y+rR23ilG7Y3BudDKrDKrLG/hkD/JmeFZbctAPxSkCjyJ/Ddwbn/g7ufRJA==",
|
|
||||||
"path": "system.io.pipelines/10.0.2",
|
|
||||||
"hashPath": "system.io.pipelines.10.0.2.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Text.Encodings.Web/10.0.2": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-Ro4cLT4qpRy64crfLAy3ekihtXckeXrD5eI6qb6NDSEVyHcHsmH7KgN4dbnIuiBmXIoaCslx4SynLYxag1SLSQ==",
|
|
||||||
"path": "system.text.encodings.web/10.0.2",
|
|
||||||
"hashPath": "system.text.encodings.web.10.0.2.nupkg.sha512"
|
|
||||||
},
|
|
||||||
"System.Text.Json/10.0.2": {
|
|
||||||
"type": "package",
|
|
||||||
"serviceable": true,
|
|
||||||
"sha512": "sha512-zy8ey7I16G9neZ6uzxrnYwS7pidElzN8XarsBjGu7lE2m7afTKMEe18KbY3ZSmh/z/bR40oxjd6hlUcmOEaMHw==",
|
|
||||||
"path": "system.text.json/10.0.2",
|
|
||||||
"hashPath": "system.text.json.10.0.2.nupkg.sha512"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,12 +0,0 @@
|
|||||||
{
|
|
||||||
"runtimeOptions": {
|
|
||||||
"tfm": "net8.0",
|
|
||||||
"framework": {
|
|
||||||
"name": "Microsoft.NETCore.App",
|
|
||||||
"version": "8.0.0"
|
|
||||||
},
|
|
||||||
"configProperties": {
|
|
||||||
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,82 +0,0 @@
|
|||||||
{
|
|
||||||
"format": 1,
|
|
||||||
"restore": {
|
|
||||||
"C:\\Users\\mickl\\Desktop\\cliptrim-ui\\ClipTrimApp\\stream_deck_plugin\\ClientTest\\ClientTest.csproj": {}
|
|
||||||
},
|
|
||||||
"projects": {
|
|
||||||
"C:\\Users\\mickl\\Desktop\\cliptrim-ui\\ClipTrimApp\\stream_deck_plugin\\ClientTest\\ClientTest.csproj": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"restore": {
|
|
||||||
"projectUniqueName": "C:\\Users\\mickl\\Desktop\\cliptrim-ui\\ClipTrimApp\\stream_deck_plugin\\ClientTest\\ClientTest.csproj",
|
|
||||||
"projectName": "ClientTest",
|
|
||||||
"projectPath": "C:\\Users\\mickl\\Desktop\\cliptrim-ui\\ClipTrimApp\\stream_deck_plugin\\ClientTest\\ClientTest.csproj",
|
|
||||||
"packagesPath": "C:\\Users\\mickl\\.nuget\\packages\\",
|
|
||||||
"outputPath": "C:\\Users\\mickl\\Desktop\\cliptrim-ui\\ClipTrimApp\\stream_deck_plugin\\ClientTest\\obj\\",
|
|
||||||
"projectStyle": "PackageReference",
|
|
||||||
"fallbackFolders": [
|
|
||||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
|
|
||||||
],
|
|
||||||
"configFilePaths": [
|
|
||||||
"C:\\Users\\mickl\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
|
||||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
|
|
||||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
|
|
||||||
],
|
|
||||||
"originalTargetFrameworks": [
|
|
||||||
"net8.0"
|
|
||||||
],
|
|
||||||
"sources": {
|
|
||||||
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
|
|
||||||
"C:\\Program Files\\dotnet\\library-packs": {},
|
|
||||||
"https://api.nuget.org/v3/index.json": {},
|
|
||||||
"https://www.nuget.org/api/v2": {},
|
|
||||||
"https://www.nuget.org/api/v2": {}
|
|
||||||
},
|
|
||||||
"frameworks": {
|
|
||||||
"net8.0": {
|
|
||||||
"targetAlias": "net8.0",
|
|
||||||
"projectReferences": {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"warningProperties": {
|
|
||||||
"warnAsError": [
|
|
||||||
"NU1605"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"restoreAuditProperties": {
|
|
||||||
"enableAudit": "true",
|
|
||||||
"auditLevel": "low",
|
|
||||||
"auditMode": "direct"
|
|
||||||
},
|
|
||||||
"SdkAnalysisLevel": "9.0.300"
|
|
||||||
},
|
|
||||||
"frameworks": {
|
|
||||||
"net8.0": {
|
|
||||||
"targetAlias": "net8.0",
|
|
||||||
"dependencies": {
|
|
||||||
"SocketIOClient": {
|
|
||||||
"target": "Package",
|
|
||||||
"version": "[4.0.0.2, )"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"imports": [
|
|
||||||
"net461",
|
|
||||||
"net462",
|
|
||||||
"net47",
|
|
||||||
"net471",
|
|
||||||
"net472",
|
|
||||||
"net48",
|
|
||||||
"net481"
|
|
||||||
],
|
|
||||||
"assetTargetFallback": true,
|
|
||||||
"warn": true,
|
|
||||||
"frameworkReferences": {
|
|
||||||
"Microsoft.NETCore.App": {
|
|
||||||
"privateAssets": "all"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.307/PortableRuntimeIdentifierGraph.json"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,16 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
|
||||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
|
||||||
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
|
|
||||||
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
|
|
||||||
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
|
|
||||||
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
|
|
||||||
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\mickl\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
|
|
||||||
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
|
||||||
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.14.1</NuGetToolVersion>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
|
||||||
<SourceRoot Include="C:\Users\mickl\.nuget\packages\" />
|
|
||||||
<SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
|
|
||||||
</ItemGroup>
|
|
||||||
</Project>
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
|
||||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
|
||||||
<Import Project="$(NuGetPackageRoot)system.text.json\10.0.2\buildTransitive\net8.0\System.Text.Json.targets" Condition="Exists('$(NuGetPackageRoot)system.text.json\10.0.2\buildTransitive\net8.0\System.Text.Json.targets')" />
|
|
||||||
<Import Project="$(NuGetPackageRoot)microsoft.extensions.options\10.0.2\buildTransitive\net8.0\Microsoft.Extensions.Options.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.options\10.0.2\buildTransitive\net8.0\Microsoft.Extensions.Options.targets')" />
|
|
||||||
<Import Project="$(NuGetPackageRoot)microsoft.extensions.logging.abstractions\10.0.2\buildTransitive\net8.0\Microsoft.Extensions.Logging.Abstractions.targets" Condition="Exists('$(NuGetPackageRoot)microsoft.extensions.logging.abstractions\10.0.2\buildTransitive\net8.0\Microsoft.Extensions.Logging.Abstractions.targets')" />
|
|
||||||
</ImportGroup>
|
|
||||||
</Project>
|
|
||||||
@ -1,4 +0,0 @@
|
|||||||
// <autogenerated />
|
|
||||||
using System;
|
|
||||||
using System.Reflection;
|
|
||||||
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]
|
|
||||||
@ -1,23 +0,0 @@
|
|||||||
//------------------------------------------------------------------------------
|
|
||||||
// <auto-generated>
|
|
||||||
// This code was generated by a tool.
|
|
||||||
// Runtime Version:4.0.30319.42000
|
|
||||||
//
|
|
||||||
// Changes to this file may cause incorrect behavior and will be lost if
|
|
||||||
// the code is regenerated.
|
|
||||||
// </auto-generated>
|
|
||||||
//------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Reflection;
|
|
||||||
|
|
||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("ClientTest")]
|
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+8fda2a03af52202a841719b00041c255fbbd040b")]
|
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("ClientTest")]
|
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("ClientTest")]
|
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
|
||||||
|
|
||||||
// Generated by the MSBuild WriteCodeFragment class.
|
|
||||||
|
|
||||||
@ -1 +0,0 @@
|
|||||||
b89f91df1271abd7a390167ccc0cd2ebdef3dc366236d6606664bbd406eb38f9
|
|
||||||
@ -1,15 +0,0 @@
|
|||||||
is_global = true
|
|
||||||
build_property.TargetFramework = net8.0
|
|
||||||
build_property.TargetPlatformMinVersion =
|
|
||||||
build_property.UsingMicrosoftNETSdkWeb =
|
|
||||||
build_property.ProjectTypeGuids =
|
|
||||||
build_property.InvariantGlobalization =
|
|
||||||
build_property.PlatformNeutralAssembly =
|
|
||||||
build_property.EnforceExtendedAnalyzerRules =
|
|
||||||
build_property._SupportedPlatformList = Linux,macOS,Windows
|
|
||||||
build_property.RootNamespace = ClientTest
|
|
||||||
build_property.ProjectDir = C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\
|
|
||||||
build_property.EnableComHosting =
|
|
||||||
build_property.EnableGeneratedComInterfaceComImportInterop =
|
|
||||||
build_property.EffectiveAnalysisLevelStyle = 8.0
|
|
||||||
build_property.EnableCodeStyleSeverity =
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
// <auto-generated/>
|
|
||||||
global using global::System;
|
|
||||||
global using global::System.Collections.Generic;
|
|
||||||
global using global::System.IO;
|
|
||||||
global using global::System.Linq;
|
|
||||||
global using global::System.Net.Http;
|
|
||||||
global using global::System.Threading;
|
|
||||||
global using global::System.Threading.Tasks;
|
|
||||||
Binary file not shown.
Binary file not shown.
@ -1 +0,0 @@
|
|||||||
1f0c38acb4d7bd17394bf7939e4ce787d1f5925df1475233861d85368fa71fee
|
|
||||||
@ -1,32 +0,0 @@
|
|||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\bin\Debug\net8.0\ClientTest.exe
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\bin\Debug\net8.0\ClientTest.deps.json
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\bin\Debug\net8.0\ClientTest.runtimeconfig.json
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\bin\Debug\net8.0\ClientTest.dll
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\bin\Debug\net8.0\ClientTest.pdb
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\bin\Debug\net8.0\Microsoft.Extensions.DependencyInjection.dll
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\bin\Debug\net8.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\bin\Debug\net8.0\Microsoft.Extensions.Logging.dll
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\bin\Debug\net8.0\Microsoft.Extensions.Logging.Abstractions.dll
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\bin\Debug\net8.0\Microsoft.Extensions.Options.dll
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\bin\Debug\net8.0\Microsoft.Extensions.Primitives.dll
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\bin\Debug\net8.0\Newtonsoft.Json.dll
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\bin\Debug\net8.0\SocketIOClient.dll
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\bin\Debug\net8.0\SocketIOClient.Common.dll
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\bin\Debug\net8.0\SocketIOClient.Serializer.dll
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\bin\Debug\net8.0\SocketIOClient.Serializer.NewtonsoftJson.dll
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\bin\Debug\net8.0\System.Diagnostics.DiagnosticSource.dll
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\bin\Debug\net8.0\System.IO.Pipelines.dll
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\bin\Debug\net8.0\System.Text.Encodings.Web.dll
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\bin\Debug\net8.0\System.Text.Json.dll
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\bin\Debug\net8.0\runtimes\browser\lib\net8.0\System.Text.Encodings.Web.dll
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\obj\Debug\net8.0\ClientTest.csproj.AssemblyReference.cache
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\obj\Debug\net8.0\ClientTest.GeneratedMSBuildEditorConfig.editorconfig
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\obj\Debug\net8.0\ClientTest.AssemblyInfoInputs.cache
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\obj\Debug\net8.0\ClientTest.AssemblyInfo.cs
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\obj\Debug\net8.0\ClientTest.csproj.CoreCompileInputs.cache
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\obj\Debug\net8.0\ClientTest.csproj.Up2Date
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\obj\Debug\net8.0\ClientTest.dll
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\obj\Debug\net8.0\refint\ClientTest.dll
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\obj\Debug\net8.0\ClientTest.pdb
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\obj\Debug\net8.0\ClientTest.genruntimeconfig.cache
|
|
||||||
C:\Users\mickl\Desktop\cliptrim-ui\ClipTrimApp\stream_deck_plugin\ClientTest\obj\Debug\net8.0\ref\ClientTest.dll
|
|
||||||
Binary file not shown.
@ -1 +0,0 @@
|
|||||||
40ec4719d56f65f4b43aa0dee95fda9a8b0de79bb640acda719765913ae5eca1
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,834 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 3,
|
|
||||||
"targets": {
|
|
||||||
"net8.0": {
|
|
||||||
"Microsoft.Extensions.DependencyInjection/10.0.2": {
|
|
||||||
"type": "package",
|
|
||||||
"dependencies": {
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2"
|
|
||||||
},
|
|
||||||
"compile": {
|
|
||||||
"lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": {
|
|
||||||
"related": ".xml"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": {
|
|
||||||
"related": ".xml"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"build": {
|
|
||||||
"buildTransitive/net8.0/_._": {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions/10.0.2": {
|
|
||||||
"type": "package",
|
|
||||||
"compile": {
|
|
||||||
"lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
|
|
||||||
"related": ".xml"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
|
|
||||||
"related": ".xml"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"build": {
|
|
||||||
"buildTransitive/net8.0/_._": {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.Logging/10.0.2": {
|
|
||||||
"type": "package",
|
|
||||||
"dependencies": {
|
|
||||||
"Microsoft.Extensions.DependencyInjection": "10.0.2",
|
|
||||||
"Microsoft.Extensions.Logging.Abstractions": "10.0.2",
|
|
||||||
"Microsoft.Extensions.Options": "10.0.2"
|
|
||||||
},
|
|
||||||
"compile": {
|
|
||||||
"lib/net8.0/Microsoft.Extensions.Logging.dll": {
|
|
||||||
"related": ".xml"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net8.0/Microsoft.Extensions.Logging.dll": {
|
|
||||||
"related": ".xml"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"build": {
|
|
||||||
"buildTransitive/net8.0/_._": {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.Logging.Abstractions/10.0.2": {
|
|
||||||
"type": "package",
|
|
||||||
"dependencies": {
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2",
|
|
||||||
"System.Diagnostics.DiagnosticSource": "10.0.2"
|
|
||||||
},
|
|
||||||
"compile": {
|
|
||||||
"lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": {
|
|
||||||
"related": ".xml"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": {
|
|
||||||
"related": ".xml"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"build": {
|
|
||||||
"buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets": {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.Options/10.0.2": {
|
|
||||||
"type": "package",
|
|
||||||
"dependencies": {
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2",
|
|
||||||
"Microsoft.Extensions.Primitives": "10.0.2"
|
|
||||||
},
|
|
||||||
"compile": {
|
|
||||||
"lib/net8.0/Microsoft.Extensions.Options.dll": {
|
|
||||||
"related": ".xml"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net8.0/Microsoft.Extensions.Options.dll": {
|
|
||||||
"related": ".xml"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"build": {
|
|
||||||
"buildTransitive/net8.0/Microsoft.Extensions.Options.targets": {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.Primitives/10.0.2": {
|
|
||||||
"type": "package",
|
|
||||||
"compile": {
|
|
||||||
"lib/net8.0/Microsoft.Extensions.Primitives.dll": {
|
|
||||||
"related": ".xml"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net8.0/Microsoft.Extensions.Primitives.dll": {
|
|
||||||
"related": ".xml"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"build": {
|
|
||||||
"buildTransitive/net8.0/_._": {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Newtonsoft.Json/13.0.4": {
|
|
||||||
"type": "package",
|
|
||||||
"compile": {
|
|
||||||
"lib/net6.0/Newtonsoft.Json.dll": {
|
|
||||||
"related": ".xml"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net6.0/Newtonsoft.Json.dll": {
|
|
||||||
"related": ".xml"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"SocketIOClient/4.0.0.2": {
|
|
||||||
"type": "package",
|
|
||||||
"dependencies": {
|
|
||||||
"Microsoft.Extensions.DependencyInjection": "10.0.2",
|
|
||||||
"Microsoft.Extensions.Logging": "10.0.2",
|
|
||||||
"SocketIOClient.Common": "4.0.0",
|
|
||||||
"SocketIOClient.Serializer": "4.0.0.1",
|
|
||||||
"SocketIOClient.Serializer.NewtonsoftJson": "4.0.0.1",
|
|
||||||
"System.Text.Json": "10.0.2"
|
|
||||||
},
|
|
||||||
"compile": {
|
|
||||||
"lib/net8.0/SocketIOClient.dll": {}
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net8.0/SocketIOClient.dll": {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"SocketIOClient.Common/4.0.0": {
|
|
||||||
"type": "package",
|
|
||||||
"compile": {
|
|
||||||
"lib/net8.0/SocketIOClient.Common.dll": {}
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net8.0/SocketIOClient.Common.dll": {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"SocketIOClient.Serializer/4.0.0.1": {
|
|
||||||
"type": "package",
|
|
||||||
"dependencies": {
|
|
||||||
"SocketIOClient.Common": "4.0.0"
|
|
||||||
},
|
|
||||||
"compile": {
|
|
||||||
"lib/net8.0/SocketIOClient.Serializer.dll": {}
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net8.0/SocketIOClient.Serializer.dll": {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"SocketIOClient.Serializer.NewtonsoftJson/4.0.0.1": {
|
|
||||||
"type": "package",
|
|
||||||
"dependencies": {
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.2",
|
|
||||||
"Newtonsoft.Json": "13.0.4",
|
|
||||||
"SocketIOClient.Common": "4.0.0",
|
|
||||||
"SocketIOClient.Serializer": "4.0.0.1"
|
|
||||||
},
|
|
||||||
"compile": {
|
|
||||||
"lib/net8.0/SocketIOClient.Serializer.NewtonsoftJson.dll": {}
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net8.0/SocketIOClient.Serializer.NewtonsoftJson.dll": {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Diagnostics.DiagnosticSource/10.0.2": {
|
|
||||||
"type": "package",
|
|
||||||
"compile": {
|
|
||||||
"lib/net8.0/System.Diagnostics.DiagnosticSource.dll": {
|
|
||||||
"related": ".xml"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net8.0/System.Diagnostics.DiagnosticSource.dll": {
|
|
||||||
"related": ".xml"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"build": {
|
|
||||||
"buildTransitive/net8.0/_._": {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.IO.Pipelines/10.0.2": {
|
|
||||||
"type": "package",
|
|
||||||
"compile": {
|
|
||||||
"lib/net8.0/System.IO.Pipelines.dll": {
|
|
||||||
"related": ".xml"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net8.0/System.IO.Pipelines.dll": {
|
|
||||||
"related": ".xml"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"build": {
|
|
||||||
"buildTransitive/net8.0/_._": {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Text.Encodings.Web/10.0.2": {
|
|
||||||
"type": "package",
|
|
||||||
"compile": {
|
|
||||||
"lib/net8.0/System.Text.Encodings.Web.dll": {
|
|
||||||
"related": ".xml"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net8.0/System.Text.Encodings.Web.dll": {
|
|
||||||
"related": ".xml"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"build": {
|
|
||||||
"buildTransitive/net8.0/_._": {}
|
|
||||||
},
|
|
||||||
"runtimeTargets": {
|
|
||||||
"runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll": {
|
|
||||||
"assetType": "runtime",
|
|
||||||
"rid": "browser"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"System.Text.Json/10.0.2": {
|
|
||||||
"type": "package",
|
|
||||||
"dependencies": {
|
|
||||||
"System.IO.Pipelines": "10.0.2",
|
|
||||||
"System.Text.Encodings.Web": "10.0.2"
|
|
||||||
},
|
|
||||||
"compile": {
|
|
||||||
"lib/net8.0/System.Text.Json.dll": {
|
|
||||||
"related": ".xml"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"runtime": {
|
|
||||||
"lib/net8.0/System.Text.Json.dll": {
|
|
||||||
"related": ".xml"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"build": {
|
|
||||||
"buildTransitive/net8.0/System.Text.Json.targets": {}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"libraries": {
|
|
||||||
"Microsoft.Extensions.DependencyInjection/10.0.2": {
|
|
||||||
"sha512": "J/Zmp6fY93JbaiZ11ckWvcyxMPjD6XVwIHQXBjryTBgn7O6O20HYg9uVLFcZlNfgH78MnreE/7EH+hjfzn7VyA==",
|
|
||||||
"type": "package",
|
|
||||||
"path": "microsoft.extensions.dependencyinjection/10.0.2",
|
|
||||||
"files": [
|
|
||||||
".nupkg.metadata",
|
|
||||||
".signature.p7s",
|
|
||||||
"Icon.png",
|
|
||||||
"PACKAGE.md",
|
|
||||||
"THIRD-PARTY-NOTICES.TXT",
|
|
||||||
"buildTransitive/net461/Microsoft.Extensions.DependencyInjection.targets",
|
|
||||||
"buildTransitive/net462/_._",
|
|
||||||
"buildTransitive/net8.0/_._",
|
|
||||||
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.targets",
|
|
||||||
"lib/net10.0/Microsoft.Extensions.DependencyInjection.dll",
|
|
||||||
"lib/net10.0/Microsoft.Extensions.DependencyInjection.xml",
|
|
||||||
"lib/net462/Microsoft.Extensions.DependencyInjection.dll",
|
|
||||||
"lib/net462/Microsoft.Extensions.DependencyInjection.xml",
|
|
||||||
"lib/net8.0/Microsoft.Extensions.DependencyInjection.dll",
|
|
||||||
"lib/net8.0/Microsoft.Extensions.DependencyInjection.xml",
|
|
||||||
"lib/net9.0/Microsoft.Extensions.DependencyInjection.dll",
|
|
||||||
"lib/net9.0/Microsoft.Extensions.DependencyInjection.xml",
|
|
||||||
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll",
|
|
||||||
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml",
|
|
||||||
"lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.dll",
|
|
||||||
"lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.xml",
|
|
||||||
"microsoft.extensions.dependencyinjection.10.0.2.nupkg.sha512",
|
|
||||||
"microsoft.extensions.dependencyinjection.nuspec",
|
|
||||||
"useSharedDesignerContext.txt"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.DependencyInjection.Abstractions/10.0.2": {
|
|
||||||
"sha512": "zOIurr59+kUf9vNcsUkCvKWZv+fPosUZXURZesYkJCvl0EzTc9F7maAO4Cd2WEV7ZJJ0AZrFQvuH6Npph9wdBw==",
|
|
||||||
"type": "package",
|
|
||||||
"path": "microsoft.extensions.dependencyinjection.abstractions/10.0.2",
|
|
||||||
"files": [
|
|
||||||
".nupkg.metadata",
|
|
||||||
".signature.p7s",
|
|
||||||
"Icon.png",
|
|
||||||
"PACKAGE.md",
|
|
||||||
"THIRD-PARTY-NOTICES.TXT",
|
|
||||||
"buildTransitive/net461/Microsoft.Extensions.DependencyInjection.Abstractions.targets",
|
|
||||||
"buildTransitive/net462/_._",
|
|
||||||
"buildTransitive/net8.0/_._",
|
|
||||||
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.Abstractions.targets",
|
|
||||||
"lib/net10.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
|
|
||||||
"lib/net10.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
|
|
||||||
"lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
|
|
||||||
"lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
|
|
||||||
"lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
|
|
||||||
"lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
|
|
||||||
"lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
|
|
||||||
"lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
|
|
||||||
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
|
|
||||||
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
|
|
||||||
"lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
|
|
||||||
"lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
|
|
||||||
"microsoft.extensions.dependencyinjection.abstractions.10.0.2.nupkg.sha512",
|
|
||||||
"microsoft.extensions.dependencyinjection.abstractions.nuspec",
|
|
||||||
"useSharedDesignerContext.txt"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.Logging/10.0.2": {
|
|
||||||
"sha512": "a0EWuBs6D3d7XMGroDXm+WsAi5CVVfjOJvyxurzWnuhBN9CO+1qHKcrKV1JK7H/T4ZtHIoVCOX/YyWM8K87qtw==",
|
|
||||||
"type": "package",
|
|
||||||
"path": "microsoft.extensions.logging/10.0.2",
|
|
||||||
"files": [
|
|
||||||
".nupkg.metadata",
|
|
||||||
".signature.p7s",
|
|
||||||
"Icon.png",
|
|
||||||
"PACKAGE.md",
|
|
||||||
"THIRD-PARTY-NOTICES.TXT",
|
|
||||||
"buildTransitive/net461/Microsoft.Extensions.Logging.targets",
|
|
||||||
"buildTransitive/net462/_._",
|
|
||||||
"buildTransitive/net8.0/_._",
|
|
||||||
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.targets",
|
|
||||||
"lib/net10.0/Microsoft.Extensions.Logging.dll",
|
|
||||||
"lib/net10.0/Microsoft.Extensions.Logging.xml",
|
|
||||||
"lib/net462/Microsoft.Extensions.Logging.dll",
|
|
||||||
"lib/net462/Microsoft.Extensions.Logging.xml",
|
|
||||||
"lib/net8.0/Microsoft.Extensions.Logging.dll",
|
|
||||||
"lib/net8.0/Microsoft.Extensions.Logging.xml",
|
|
||||||
"lib/net9.0/Microsoft.Extensions.Logging.dll",
|
|
||||||
"lib/net9.0/Microsoft.Extensions.Logging.xml",
|
|
||||||
"lib/netstandard2.0/Microsoft.Extensions.Logging.dll",
|
|
||||||
"lib/netstandard2.0/Microsoft.Extensions.Logging.xml",
|
|
||||||
"lib/netstandard2.1/Microsoft.Extensions.Logging.dll",
|
|
||||||
"lib/netstandard2.1/Microsoft.Extensions.Logging.xml",
|
|
||||||
"microsoft.extensions.logging.10.0.2.nupkg.sha512",
|
|
||||||
"microsoft.extensions.logging.nuspec",
|
|
||||||
"useSharedDesignerContext.txt"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.Logging.Abstractions/10.0.2": {
|
|
||||||
"sha512": "RZkez/JjpnO+MZ6efKkSynN6ZztLpw3WbxNzjLCPBd97wWj1S9ZYPWi0nmT4kWBRa6atHsdM1ydGkUr8GudyDQ==",
|
|
||||||
"type": "package",
|
|
||||||
"path": "microsoft.extensions.logging.abstractions/10.0.2",
|
|
||||||
"files": [
|
|
||||||
".nupkg.metadata",
|
|
||||||
".signature.p7s",
|
|
||||||
"Icon.png",
|
|
||||||
"PACKAGE.md",
|
|
||||||
"THIRD-PARTY-NOTICES.TXT",
|
|
||||||
"analyzers/dotnet/roslyn3.11/cs/Microsoft.Extensions.Logging.Generators.dll",
|
|
||||||
"analyzers/dotnet/roslyn3.11/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn3.11/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn3.11/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn3.11/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn3.11/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn3.11/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn3.11/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn3.11/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn3.11/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn3.11/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn3.11/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn3.11/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn3.11/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.0/cs/Microsoft.Extensions.Logging.Generators.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.0/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.0/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.0/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.0/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.0/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.0/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.0/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.0/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.0/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.0/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.0/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.0/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.0/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Logging.Generators.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll",
|
|
||||||
"buildTransitive/net461/Microsoft.Extensions.Logging.Abstractions.targets",
|
|
||||||
"buildTransitive/net462/Microsoft.Extensions.Logging.Abstractions.targets",
|
|
||||||
"buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets",
|
|
||||||
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Abstractions.targets",
|
|
||||||
"buildTransitive/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.targets",
|
|
||||||
"lib/net10.0/Microsoft.Extensions.Logging.Abstractions.dll",
|
|
||||||
"lib/net10.0/Microsoft.Extensions.Logging.Abstractions.xml",
|
|
||||||
"lib/net462/Microsoft.Extensions.Logging.Abstractions.dll",
|
|
||||||
"lib/net462/Microsoft.Extensions.Logging.Abstractions.xml",
|
|
||||||
"lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll",
|
|
||||||
"lib/net8.0/Microsoft.Extensions.Logging.Abstractions.xml",
|
|
||||||
"lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll",
|
|
||||||
"lib/net9.0/Microsoft.Extensions.Logging.Abstractions.xml",
|
|
||||||
"lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll",
|
|
||||||
"lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml",
|
|
||||||
"microsoft.extensions.logging.abstractions.10.0.2.nupkg.sha512",
|
|
||||||
"microsoft.extensions.logging.abstractions.nuspec",
|
|
||||||
"useSharedDesignerContext.txt"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.Options/10.0.2": {
|
|
||||||
"sha512": "1De2LJjmxdqopI5AYC5dIhoZQ79AR5ayywxNF1rXrXFtKQfbQOV9+n/IsZBa7qWlr0MqoGpW8+OY2v/57udZOA==",
|
|
||||||
"type": "package",
|
|
||||||
"path": "microsoft.extensions.options/10.0.2",
|
|
||||||
"files": [
|
|
||||||
".nupkg.metadata",
|
|
||||||
".signature.p7s",
|
|
||||||
"Icon.png",
|
|
||||||
"PACKAGE.md",
|
|
||||||
"THIRD-PARTY-NOTICES.TXT",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Options.SourceGeneration.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
|
|
||||||
"buildTransitive/net461/Microsoft.Extensions.Options.targets",
|
|
||||||
"buildTransitive/net462/Microsoft.Extensions.Options.targets",
|
|
||||||
"buildTransitive/net8.0/Microsoft.Extensions.Options.targets",
|
|
||||||
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Options.targets",
|
|
||||||
"buildTransitive/netstandard2.0/Microsoft.Extensions.Options.targets",
|
|
||||||
"lib/net10.0/Microsoft.Extensions.Options.dll",
|
|
||||||
"lib/net10.0/Microsoft.Extensions.Options.xml",
|
|
||||||
"lib/net462/Microsoft.Extensions.Options.dll",
|
|
||||||
"lib/net462/Microsoft.Extensions.Options.xml",
|
|
||||||
"lib/net8.0/Microsoft.Extensions.Options.dll",
|
|
||||||
"lib/net8.0/Microsoft.Extensions.Options.xml",
|
|
||||||
"lib/net9.0/Microsoft.Extensions.Options.dll",
|
|
||||||
"lib/net9.0/Microsoft.Extensions.Options.xml",
|
|
||||||
"lib/netstandard2.0/Microsoft.Extensions.Options.dll",
|
|
||||||
"lib/netstandard2.0/Microsoft.Extensions.Options.xml",
|
|
||||||
"lib/netstandard2.1/Microsoft.Extensions.Options.dll",
|
|
||||||
"lib/netstandard2.1/Microsoft.Extensions.Options.xml",
|
|
||||||
"microsoft.extensions.options.10.0.2.nupkg.sha512",
|
|
||||||
"microsoft.extensions.options.nuspec",
|
|
||||||
"useSharedDesignerContext.txt"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Microsoft.Extensions.Primitives/10.0.2": {
|
|
||||||
"sha512": "QmSiO+oLBEooGgB3i0GRXyeYRDHjllqt3k365jwfZlYWhvSHA3UL2NEVV5m8aZa041eIlblo6KMI5txvTMpTwA==",
|
|
||||||
"type": "package",
|
|
||||||
"path": "microsoft.extensions.primitives/10.0.2",
|
|
||||||
"files": [
|
|
||||||
".nupkg.metadata",
|
|
||||||
".signature.p7s",
|
|
||||||
"Icon.png",
|
|
||||||
"PACKAGE.md",
|
|
||||||
"THIRD-PARTY-NOTICES.TXT",
|
|
||||||
"buildTransitive/net461/Microsoft.Extensions.Primitives.targets",
|
|
||||||
"buildTransitive/net462/_._",
|
|
||||||
"buildTransitive/net8.0/_._",
|
|
||||||
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Primitives.targets",
|
|
||||||
"lib/net10.0/Microsoft.Extensions.Primitives.dll",
|
|
||||||
"lib/net10.0/Microsoft.Extensions.Primitives.xml",
|
|
||||||
"lib/net462/Microsoft.Extensions.Primitives.dll",
|
|
||||||
"lib/net462/Microsoft.Extensions.Primitives.xml",
|
|
||||||
"lib/net8.0/Microsoft.Extensions.Primitives.dll",
|
|
||||||
"lib/net8.0/Microsoft.Extensions.Primitives.xml",
|
|
||||||
"lib/net9.0/Microsoft.Extensions.Primitives.dll",
|
|
||||||
"lib/net9.0/Microsoft.Extensions.Primitives.xml",
|
|
||||||
"lib/netstandard2.0/Microsoft.Extensions.Primitives.dll",
|
|
||||||
"lib/netstandard2.0/Microsoft.Extensions.Primitives.xml",
|
|
||||||
"microsoft.extensions.primitives.10.0.2.nupkg.sha512",
|
|
||||||
"microsoft.extensions.primitives.nuspec",
|
|
||||||
"useSharedDesignerContext.txt"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Newtonsoft.Json/13.0.4": {
|
|
||||||
"sha512": "pdgNNMai3zv51W5aq268sujXUyx7SNdE2bj1wZcWjAQrKMFZV260lbqYop1d2GM67JI1huLRwxo9ZqnfF/lC6A==",
|
|
||||||
"type": "package",
|
|
||||||
"path": "newtonsoft.json/13.0.4",
|
|
||||||
"files": [
|
|
||||||
".nupkg.metadata",
|
|
||||||
".signature.p7s",
|
|
||||||
"LICENSE.md",
|
|
||||||
"README.md",
|
|
||||||
"lib/net20/Newtonsoft.Json.dll",
|
|
||||||
"lib/net20/Newtonsoft.Json.xml",
|
|
||||||
"lib/net35/Newtonsoft.Json.dll",
|
|
||||||
"lib/net35/Newtonsoft.Json.xml",
|
|
||||||
"lib/net40/Newtonsoft.Json.dll",
|
|
||||||
"lib/net40/Newtonsoft.Json.xml",
|
|
||||||
"lib/net45/Newtonsoft.Json.dll",
|
|
||||||
"lib/net45/Newtonsoft.Json.xml",
|
|
||||||
"lib/net6.0/Newtonsoft.Json.dll",
|
|
||||||
"lib/net6.0/Newtonsoft.Json.xml",
|
|
||||||
"lib/netstandard1.0/Newtonsoft.Json.dll",
|
|
||||||
"lib/netstandard1.0/Newtonsoft.Json.xml",
|
|
||||||
"lib/netstandard1.3/Newtonsoft.Json.dll",
|
|
||||||
"lib/netstandard1.3/Newtonsoft.Json.xml",
|
|
||||||
"lib/netstandard2.0/Newtonsoft.Json.dll",
|
|
||||||
"lib/netstandard2.0/Newtonsoft.Json.xml",
|
|
||||||
"newtonsoft.json.13.0.4.nupkg.sha512",
|
|
||||||
"newtonsoft.json.nuspec",
|
|
||||||
"packageIcon.png"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"SocketIOClient/4.0.0.2": {
|
|
||||||
"sha512": "RYtHafPCBCoY8F9KI583t4Dw3+c45XHmPf6xLIHtQeSimDLn3rMUSnITcCCRzbI7ITkKgw1eBhICdeVEs4hjHQ==",
|
|
||||||
"type": "package",
|
|
||||||
"path": "socketioclient/4.0.0.2",
|
|
||||||
"files": [
|
|
||||||
".nupkg.metadata",
|
|
||||||
".signature.p7s",
|
|
||||||
"README.md",
|
|
||||||
"README.zh.md",
|
|
||||||
"lib/net8.0/SocketIOClient.dll",
|
|
||||||
"lib/netstandard2.0/SocketIOClient.dll",
|
|
||||||
"socketioclient.4.0.0.2.nupkg.sha512",
|
|
||||||
"socketioclient.nuspec"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"SocketIOClient.Common/4.0.0": {
|
|
||||||
"sha512": "7wlg0hMX5/k+fZejclVR7aKSj+Q37KCmVrKPIjZV+9z/odb11hZ4L+a0T3cV1w1jicTBWFEKvjWfWh6YKtz9Qg==",
|
|
||||||
"type": "package",
|
|
||||||
"path": "socketioclient.common/4.0.0",
|
|
||||||
"files": [
|
|
||||||
".nupkg.metadata",
|
|
||||||
".signature.p7s",
|
|
||||||
"lib/net8.0/SocketIOClient.Common.dll",
|
|
||||||
"lib/netstandard2.0/SocketIOClient.Common.dll",
|
|
||||||
"socketioclient.common.4.0.0.nupkg.sha512",
|
|
||||||
"socketioclient.common.nuspec"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"SocketIOClient.Serializer/4.0.0.1": {
|
|
||||||
"sha512": "+p1xnwSkX8UQQLgqr2Em6dIATl5pR7awHj1nbaRd/9aA2iAHGgy7HsseN8eblv3NHlPtTP9Y3IFDl5JKfWSYjg==",
|
|
||||||
"type": "package",
|
|
||||||
"path": "socketioclient.serializer/4.0.0.1",
|
|
||||||
"files": [
|
|
||||||
".nupkg.metadata",
|
|
||||||
".signature.p7s",
|
|
||||||
"lib/net8.0/SocketIOClient.Serializer.dll",
|
|
||||||
"lib/netstandard2.0/SocketIOClient.Serializer.dll",
|
|
||||||
"socketioclient.serializer.4.0.0.1.nupkg.sha512",
|
|
||||||
"socketioclient.serializer.nuspec"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"SocketIOClient.Serializer.NewtonsoftJson/4.0.0.1": {
|
|
||||||
"sha512": "D7nzYdIcNIPjGp7LW+KmJHk5I6uz3ioGb6fwxdpspuruwTTl1bTwczRuvEFcFjTHtb0Avhbcaw65jo6eAUmsYw==",
|
|
||||||
"type": "package",
|
|
||||||
"path": "socketioclient.serializer.newtonsoftjson/4.0.0.1",
|
|
||||||
"files": [
|
|
||||||
".nupkg.metadata",
|
|
||||||
".signature.p7s",
|
|
||||||
"lib/net8.0/SocketIOClient.Serializer.NewtonsoftJson.dll",
|
|
||||||
"lib/netstandard2.0/SocketIOClient.Serializer.NewtonsoftJson.dll",
|
|
||||||
"socketioclient.serializer.newtonsoftjson.4.0.0.1.nupkg.sha512",
|
|
||||||
"socketioclient.serializer.newtonsoftjson.nuspec"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"System.Diagnostics.DiagnosticSource/10.0.2": {
|
|
||||||
"sha512": "lYWBy8fKkJHaRcOuw30d67PrtVjR5754sz5Wl76s8P+vJ9FSThh9b7LIcTSODx1LY7NB3Srvg+JMnzd67qNZOw==",
|
|
||||||
"type": "package",
|
|
||||||
"path": "system.diagnostics.diagnosticsource/10.0.2",
|
|
||||||
"files": [
|
|
||||||
".nupkg.metadata",
|
|
||||||
".signature.p7s",
|
|
||||||
"Icon.png",
|
|
||||||
"THIRD-PARTY-NOTICES.TXT",
|
|
||||||
"buildTransitive/net461/System.Diagnostics.DiagnosticSource.targets",
|
|
||||||
"buildTransitive/net462/_._",
|
|
||||||
"buildTransitive/net8.0/_._",
|
|
||||||
"buildTransitive/netcoreapp2.0/System.Diagnostics.DiagnosticSource.targets",
|
|
||||||
"lib/net10.0/System.Diagnostics.DiagnosticSource.dll",
|
|
||||||
"lib/net10.0/System.Diagnostics.DiagnosticSource.xml",
|
|
||||||
"lib/net462/System.Diagnostics.DiagnosticSource.dll",
|
|
||||||
"lib/net462/System.Diagnostics.DiagnosticSource.xml",
|
|
||||||
"lib/net8.0/System.Diagnostics.DiagnosticSource.dll",
|
|
||||||
"lib/net8.0/System.Diagnostics.DiagnosticSource.xml",
|
|
||||||
"lib/net9.0/System.Diagnostics.DiagnosticSource.dll",
|
|
||||||
"lib/net9.0/System.Diagnostics.DiagnosticSource.xml",
|
|
||||||
"lib/netstandard2.0/System.Diagnostics.DiagnosticSource.dll",
|
|
||||||
"lib/netstandard2.0/System.Diagnostics.DiagnosticSource.xml",
|
|
||||||
"system.diagnostics.diagnosticsource.10.0.2.nupkg.sha512",
|
|
||||||
"system.diagnostics.diagnosticsource.nuspec",
|
|
||||||
"useSharedDesignerContext.txt"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"System.IO.Pipelines/10.0.2": {
|
|
||||||
"sha512": "EqMsn9r18ABvTDxrDce4OWDhBE3y+rR23ilG7Y3BudDKrDKrLG/hkD/JmeFZbctAPxSkCjyJ/Ddwbn/g7ufRJA==",
|
|
||||||
"type": "package",
|
|
||||||
"path": "system.io.pipelines/10.0.2",
|
|
||||||
"files": [
|
|
||||||
".nupkg.metadata",
|
|
||||||
".signature.p7s",
|
|
||||||
"Icon.png",
|
|
||||||
"PACKAGE.md",
|
|
||||||
"THIRD-PARTY-NOTICES.TXT",
|
|
||||||
"buildTransitive/net461/System.IO.Pipelines.targets",
|
|
||||||
"buildTransitive/net462/_._",
|
|
||||||
"buildTransitive/net8.0/_._",
|
|
||||||
"buildTransitive/netcoreapp2.0/System.IO.Pipelines.targets",
|
|
||||||
"lib/net10.0/System.IO.Pipelines.dll",
|
|
||||||
"lib/net10.0/System.IO.Pipelines.xml",
|
|
||||||
"lib/net462/System.IO.Pipelines.dll",
|
|
||||||
"lib/net462/System.IO.Pipelines.xml",
|
|
||||||
"lib/net8.0/System.IO.Pipelines.dll",
|
|
||||||
"lib/net8.0/System.IO.Pipelines.xml",
|
|
||||||
"lib/net9.0/System.IO.Pipelines.dll",
|
|
||||||
"lib/net9.0/System.IO.Pipelines.xml",
|
|
||||||
"lib/netstandard2.0/System.IO.Pipelines.dll",
|
|
||||||
"lib/netstandard2.0/System.IO.Pipelines.xml",
|
|
||||||
"system.io.pipelines.10.0.2.nupkg.sha512",
|
|
||||||
"system.io.pipelines.nuspec",
|
|
||||||
"useSharedDesignerContext.txt"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"System.Text.Encodings.Web/10.0.2": {
|
|
||||||
"sha512": "Ro4cLT4qpRy64crfLAy3ekihtXckeXrD5eI6qb6NDSEVyHcHsmH7KgN4dbnIuiBmXIoaCslx4SynLYxag1SLSQ==",
|
|
||||||
"type": "package",
|
|
||||||
"path": "system.text.encodings.web/10.0.2",
|
|
||||||
"files": [
|
|
||||||
".nupkg.metadata",
|
|
||||||
".signature.p7s",
|
|
||||||
"Icon.png",
|
|
||||||
"PACKAGE.md",
|
|
||||||
"THIRD-PARTY-NOTICES.TXT",
|
|
||||||
"buildTransitive/net461/System.Text.Encodings.Web.targets",
|
|
||||||
"buildTransitive/net462/_._",
|
|
||||||
"buildTransitive/net8.0/_._",
|
|
||||||
"buildTransitive/netcoreapp2.0/System.Text.Encodings.Web.targets",
|
|
||||||
"lib/net10.0/System.Text.Encodings.Web.dll",
|
|
||||||
"lib/net10.0/System.Text.Encodings.Web.xml",
|
|
||||||
"lib/net462/System.Text.Encodings.Web.dll",
|
|
||||||
"lib/net462/System.Text.Encodings.Web.xml",
|
|
||||||
"lib/net8.0/System.Text.Encodings.Web.dll",
|
|
||||||
"lib/net8.0/System.Text.Encodings.Web.xml",
|
|
||||||
"lib/net9.0/System.Text.Encodings.Web.dll",
|
|
||||||
"lib/net9.0/System.Text.Encodings.Web.xml",
|
|
||||||
"lib/netstandard2.0/System.Text.Encodings.Web.dll",
|
|
||||||
"lib/netstandard2.0/System.Text.Encodings.Web.xml",
|
|
||||||
"runtimes/browser/lib/net10.0/System.Text.Encodings.Web.dll",
|
|
||||||
"runtimes/browser/lib/net10.0/System.Text.Encodings.Web.xml",
|
|
||||||
"runtimes/browser/lib/net8.0/System.Text.Encodings.Web.dll",
|
|
||||||
"runtimes/browser/lib/net8.0/System.Text.Encodings.Web.xml",
|
|
||||||
"runtimes/wasi/lib/net10.0/System.Text.Encodings.Web.dll",
|
|
||||||
"runtimes/wasi/lib/net10.0/System.Text.Encodings.Web.xml",
|
|
||||||
"runtimes/win/lib/net9.0/System.Text.Encodings.Web.dll",
|
|
||||||
"runtimes/win/lib/net9.0/System.Text.Encodings.Web.xml",
|
|
||||||
"system.text.encodings.web.10.0.2.nupkg.sha512",
|
|
||||||
"system.text.encodings.web.nuspec",
|
|
||||||
"useSharedDesignerContext.txt"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"System.Text.Json/10.0.2": {
|
|
||||||
"sha512": "zy8ey7I16G9neZ6uzxrnYwS7pidElzN8XarsBjGu7lE2m7afTKMEe18KbY3ZSmh/z/bR40oxjd6hlUcmOEaMHw==",
|
|
||||||
"type": "package",
|
|
||||||
"path": "system.text.json/10.0.2",
|
|
||||||
"files": [
|
|
||||||
".nupkg.metadata",
|
|
||||||
".signature.p7s",
|
|
||||||
"Icon.png",
|
|
||||||
"PACKAGE.md",
|
|
||||||
"THIRD-PARTY-NOTICES.TXT",
|
|
||||||
"analyzers/dotnet/roslyn3.11/cs/System.Text.Json.SourceGeneration.dll",
|
|
||||||
"analyzers/dotnet/roslyn3.11/cs/cs/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn3.11/cs/de/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn3.11/cs/es/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn3.11/cs/fr/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn3.11/cs/it/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn3.11/cs/ja/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn3.11/cs/ko/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn3.11/cs/pl/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn3.11/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn3.11/cs/ru/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn3.11/cs/tr/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn3.11/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn3.11/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.0/cs/System.Text.Json.SourceGeneration.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.0/cs/cs/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.0/cs/de/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.0/cs/es/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.0/cs/fr/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.0/cs/it/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.0/cs/ja/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.0/cs/ko/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.0/cs/pl/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.0/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.0/cs/ru/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.0/cs/tr/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.0/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.0/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/System.Text.Json.SourceGeneration.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/cs/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/de/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/es/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/fr/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/it/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/ja/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/ko/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/pl/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/ru/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/tr/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"analyzers/dotnet/roslyn4.4/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll",
|
|
||||||
"buildTransitive/net461/System.Text.Json.targets",
|
|
||||||
"buildTransitive/net462/System.Text.Json.targets",
|
|
||||||
"buildTransitive/net8.0/System.Text.Json.targets",
|
|
||||||
"buildTransitive/netcoreapp2.0/System.Text.Json.targets",
|
|
||||||
"buildTransitive/netstandard2.0/System.Text.Json.targets",
|
|
||||||
"lib/net10.0/System.Text.Json.dll",
|
|
||||||
"lib/net10.0/System.Text.Json.xml",
|
|
||||||
"lib/net462/System.Text.Json.dll",
|
|
||||||
"lib/net462/System.Text.Json.xml",
|
|
||||||
"lib/net8.0/System.Text.Json.dll",
|
|
||||||
"lib/net8.0/System.Text.Json.xml",
|
|
||||||
"lib/net9.0/System.Text.Json.dll",
|
|
||||||
"lib/net9.0/System.Text.Json.xml",
|
|
||||||
"lib/netstandard2.0/System.Text.Json.dll",
|
|
||||||
"lib/netstandard2.0/System.Text.Json.xml",
|
|
||||||
"system.text.json.10.0.2.nupkg.sha512",
|
|
||||||
"system.text.json.nuspec",
|
|
||||||
"useSharedDesignerContext.txt"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"projectFileDependencyGroups": {
|
|
||||||
"net8.0": [
|
|
||||||
"SocketIOClient >= 4.0.0.2"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"packageFolders": {
|
|
||||||
"C:\\Users\\mickl\\.nuget\\packages\\": {},
|
|
||||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {}
|
|
||||||
},
|
|
||||||
"project": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"restore": {
|
|
||||||
"projectUniqueName": "C:\\Users\\mickl\\Desktop\\cliptrim-ui\\ClipTrimApp\\stream_deck_plugin\\ClientTest\\ClientTest.csproj",
|
|
||||||
"projectName": "ClientTest",
|
|
||||||
"projectPath": "C:\\Users\\mickl\\Desktop\\cliptrim-ui\\ClipTrimApp\\stream_deck_plugin\\ClientTest\\ClientTest.csproj",
|
|
||||||
"packagesPath": "C:\\Users\\mickl\\.nuget\\packages\\",
|
|
||||||
"outputPath": "C:\\Users\\mickl\\Desktop\\cliptrim-ui\\ClipTrimApp\\stream_deck_plugin\\ClientTest\\obj\\",
|
|
||||||
"projectStyle": "PackageReference",
|
|
||||||
"fallbackFolders": [
|
|
||||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
|
|
||||||
],
|
|
||||||
"configFilePaths": [
|
|
||||||
"C:\\Users\\mickl\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
|
||||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
|
|
||||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
|
|
||||||
],
|
|
||||||
"originalTargetFrameworks": [
|
|
||||||
"net8.0"
|
|
||||||
],
|
|
||||||
"sources": {
|
|
||||||
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
|
|
||||||
"C:\\Program Files\\dotnet\\library-packs": {},
|
|
||||||
"https://api.nuget.org/v3/index.json": {},
|
|
||||||
"https://www.nuget.org/api/v2": {},
|
|
||||||
"https://www.nuget.org/api/v2": {}
|
|
||||||
},
|
|
||||||
"frameworks": {
|
|
||||||
"net8.0": {
|
|
||||||
"targetAlias": "net8.0",
|
|
||||||
"projectReferences": {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"warningProperties": {
|
|
||||||
"warnAsError": [
|
|
||||||
"NU1605"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"restoreAuditProperties": {
|
|
||||||
"enableAudit": "true",
|
|
||||||
"auditLevel": "low",
|
|
||||||
"auditMode": "direct"
|
|
||||||
},
|
|
||||||
"SdkAnalysisLevel": "9.0.300"
|
|
||||||
},
|
|
||||||
"frameworks": {
|
|
||||||
"net8.0": {
|
|
||||||
"targetAlias": "net8.0",
|
|
||||||
"dependencies": {
|
|
||||||
"SocketIOClient": {
|
|
||||||
"target": "Package",
|
|
||||||
"version": "[4.0.0.2, )"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"imports": [
|
|
||||||
"net461",
|
|
||||||
"net462",
|
|
||||||
"net47",
|
|
||||||
"net471",
|
|
||||||
"net472",
|
|
||||||
"net48",
|
|
||||||
"net481"
|
|
||||||
],
|
|
||||||
"assetTargetFallback": true,
|
|
||||||
"warn": true,
|
|
||||||
"frameworkReferences": {
|
|
||||||
"Microsoft.NETCore.App": {
|
|
||||||
"privateAssets": "all"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.307/PortableRuntimeIdentifierGraph.json"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,24 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 2,
|
|
||||||
"dgSpecHash": "h0lIwrEt1zA=",
|
|
||||||
"success": true,
|
|
||||||
"projectFilePath": "C:\\Users\\mickl\\Desktop\\cliptrim-ui\\ClipTrimApp\\stream_deck_plugin\\ClientTest\\ClientTest.csproj",
|
|
||||||
"expectedPackageFiles": [
|
|
||||||
"C:\\Users\\mickl\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\10.0.2\\microsoft.extensions.dependencyinjection.10.0.2.nupkg.sha512",
|
|
||||||
"C:\\Users\\mickl\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\10.0.2\\microsoft.extensions.dependencyinjection.abstractions.10.0.2.nupkg.sha512",
|
|
||||||
"C:\\Users\\mickl\\.nuget\\packages\\microsoft.extensions.logging\\10.0.2\\microsoft.extensions.logging.10.0.2.nupkg.sha512",
|
|
||||||
"C:\\Users\\mickl\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\10.0.2\\microsoft.extensions.logging.abstractions.10.0.2.nupkg.sha512",
|
|
||||||
"C:\\Users\\mickl\\.nuget\\packages\\microsoft.extensions.options\\10.0.2\\microsoft.extensions.options.10.0.2.nupkg.sha512",
|
|
||||||
"C:\\Users\\mickl\\.nuget\\packages\\microsoft.extensions.primitives\\10.0.2\\microsoft.extensions.primitives.10.0.2.nupkg.sha512",
|
|
||||||
"C:\\Users\\mickl\\.nuget\\packages\\newtonsoft.json\\13.0.4\\newtonsoft.json.13.0.4.nupkg.sha512",
|
|
||||||
"C:\\Users\\mickl\\.nuget\\packages\\socketioclient\\4.0.0.2\\socketioclient.4.0.0.2.nupkg.sha512",
|
|
||||||
"C:\\Users\\mickl\\.nuget\\packages\\socketioclient.common\\4.0.0\\socketioclient.common.4.0.0.nupkg.sha512",
|
|
||||||
"C:\\Users\\mickl\\.nuget\\packages\\socketioclient.serializer\\4.0.0.1\\socketioclient.serializer.4.0.0.1.nupkg.sha512",
|
|
||||||
"C:\\Users\\mickl\\.nuget\\packages\\socketioclient.serializer.newtonsoftjson\\4.0.0.1\\socketioclient.serializer.newtonsoftjson.4.0.0.1.nupkg.sha512",
|
|
||||||
"C:\\Users\\mickl\\.nuget\\packages\\system.diagnostics.diagnosticsource\\10.0.2\\system.diagnostics.diagnosticsource.10.0.2.nupkg.sha512",
|
|
||||||
"C:\\Users\\mickl\\.nuget\\packages\\system.io.pipelines\\10.0.2\\system.io.pipelines.10.0.2.nupkg.sha512",
|
|
||||||
"C:\\Users\\mickl\\.nuget\\packages\\system.text.encodings.web\\10.0.2\\system.text.encodings.web.10.0.2.nupkg.sha512",
|
|
||||||
"C:\\Users\\mickl\\.nuget\\packages\\system.text.json\\10.0.2\\system.text.json.10.0.2.nupkg.sha512"
|
|
||||||
],
|
|
||||||
"logs": []
|
|
||||||
}
|
|
||||||
@ -1,25 +1,25 @@
|
|||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio Version 17
|
# Visual Studio Version 17
|
||||||
VisualStudioVersion = 17.8.34330.188
|
VisualStudioVersion = 17.8.34330.188
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClipTrimDotNet", "ClipTrimDotNet\ClipTrimDotNet.csproj", "{4635D874-69C0-4010-BE46-77EF92EB1553}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClipTrimDotNet", "ClipTrimDotNet\ClipTrimDotNet.csproj", "{4635D874-69C0-4010-BE46-77EF92EB1553}"
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
Release|Any CPU = Release|Any CPU
|
Release|Any CPU = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
{4635D874-69C0-4010-BE46-77EF92EB1553}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{4635D874-69C0-4010-BE46-77EF92EB1553}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{4635D874-69C0-4010-BE46-77EF92EB1553}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{4635D874-69C0-4010-BE46-77EF92EB1553}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{4635D874-69C0-4010-BE46-77EF92EB1553}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{4635D874-69C0-4010-BE46-77EF92EB1553}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{4635D874-69C0-4010-BE46-77EF92EB1553}.Release|Any CPU.Build.0 = Release|Any CPU
|
{4635D874-69C0-4010-BE46-77EF92EB1553}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
SolutionGuid = {926C6896-F36A-4F3B-A9DD-CA3AA48AD99F}
|
SolutionGuid = {926C6896-F36A-4F3B-A9DD-CA3AA48AD99F}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
|||||||
@ -1,14 +1,14 @@
|
|||||||
To use:
|
To use:
|
||||||
1. Right click the project and choose "Manage Nuget Packages"
|
1. Right click the project and choose "Manage Nuget Packages"
|
||||||
2. Choose the restore option in the Nuget screen (or just install the latest StreamDeck-Tools from Nuget)
|
2. Choose the restore option in the Nuget screen (or just install the latest StreamDeck-Tools from Nuget)
|
||||||
3. Update the manifest.json file with the correct details about your plugin
|
3. Update the manifest.json file with the correct details about your plugin
|
||||||
4. Modify PluginAction.cs as needed (it holds the logic for your plugin)
|
4. Modify PluginAction.cs as needed (it holds the logic for your plugin)
|
||||||
5. Modify the PropertyInspector\PluginActionPI.html and PropertyInspector\PluginActionPI.js as needed to show field in the Property Inspector
|
5. Modify the PropertyInspector\PluginActionPI.html and PropertyInspector\PluginActionPI.js as needed to show field in the Property Inspector
|
||||||
6. Before releasing, change the Assembly Information (Right click the project -> Properties -> Application -> Assembly Information...)
|
6. Before releasing, change the Assembly Information (Right click the project -> Properties -> Application -> Assembly Information...)
|
||||||
|
|
||||||
For help with StreamDeck-Tools:
|
For help with StreamDeck-Tools:
|
||||||
Discord Server: http://discord.barraider.com
|
Discord Server: http://discord.barraider.com
|
||||||
Resources:
|
Resources:
|
||||||
* StreamDeck-Tools samples and tutorial: https://github.com/BarRaider/streamdeck-tools
|
* StreamDeck-Tools samples and tutorial: https://github.com/BarRaider/streamdeck-tools
|
||||||
* EasyPI library (for working with Property Inspector): https://github.com/BarRaider/streamdeck-easypi
|
* EasyPI library (for working with Property Inspector): https://github.com/BarRaider/streamdeck-easypi
|
||||||
|
|
||||||
|
|||||||
@ -1,42 +1,42 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<configuration>
|
<configuration>
|
||||||
<startup>
|
<startup>
|
||||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
|
||||||
</startup>
|
</startup>
|
||||||
<runtime>
|
<runtime>
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="CommandLine" publicKeyToken="5a870481e358d379" culture="neutral" />
|
<assemblyIdentity name="CommandLine" publicKeyToken="5a870481e358d379" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-2.6.0.0" newVersion="2.6.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-2.6.0.0" newVersion="2.6.0.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="System.Drawing.Common" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
<assemblyIdentity name="System.Drawing.Common" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
|
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
|
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
<assemblyIdentity name="System.Text.Json" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
|
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.Extensions.Logging.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
<assemblyIdentity name="Microsoft.Extensions.Logging.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
|
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.Extensions.Logging" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
<assemblyIdentity name="Microsoft.Extensions.Logging" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
|
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
||||||
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
|
<bindingRedirect oldVersion="0.0.0.0-10.0.0.2" newVersion="10.0.0.2" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
</assemblyBinding>
|
</assemblyBinding>
|
||||||
</runtime>
|
</runtime>
|
||||||
</configuration>
|
</configuration>
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
|
|
||||||
|
|||||||
@ -1,53 +1,53 @@
|
|||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using Newtonsoft.Json.Serialization;
|
using Newtonsoft.Json.Serialization;
|
||||||
using Newtonsoft.Json.Converters;
|
using Newtonsoft.Json.Converters;
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
namespace ClipTrimDotNet.Client
|
namespace ClipTrimDotNet.Client
|
||||||
{
|
{
|
||||||
public enum PlaybackType
|
public enum PlaybackType
|
||||||
{
|
{
|
||||||
playStop,
|
playStop,
|
||||||
playOverlap
|
playOverlap
|
||||||
}
|
}
|
||||||
public class ClipMetadata
|
public class ClipMetadata
|
||||||
{
|
{
|
||||||
[JsonProperty(PropertyName = "filename")]
|
[JsonProperty(PropertyName = "filename")]
|
||||||
[JsonPropertyName("filename")]
|
[JsonPropertyName("filename")]
|
||||||
|
|
||||||
public string Filename { get; set; }
|
public string Filename { get; set; }
|
||||||
|
|
||||||
|
|
||||||
[JsonProperty(PropertyName = "name")]
|
[JsonProperty(PropertyName = "name")]
|
||||||
[JsonPropertyName("name")]
|
[JsonPropertyName("name")]
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
|
||||||
[JsonProperty(PropertyName = "volume")]
|
[JsonProperty(PropertyName = "volume")]
|
||||||
[JsonPropertyName("volume")]
|
[JsonPropertyName("volume")]
|
||||||
public double Volume { get; set; } = 1.0;
|
public double Volume { get; set; } = 1.0;
|
||||||
|
|
||||||
|
|
||||||
[JsonProperty(PropertyName = "startTime")]
|
[JsonProperty(PropertyName = "startTime")]
|
||||||
[JsonPropertyName("startTime")]
|
[JsonPropertyName("startTime")]
|
||||||
public double StartTime { get; set; } = 0.0;
|
public double StartTime { get; set; } = 0.0;
|
||||||
|
|
||||||
|
|
||||||
[JsonProperty(PropertyName = "endTime")]
|
[JsonProperty(PropertyName = "endTime")]
|
||||||
[JsonPropertyName("endTime")]
|
[JsonPropertyName("endTime")]
|
||||||
public double EndTime { get; set; } = 0.0;
|
public double EndTime { get; set; } = 0.0;
|
||||||
|
|
||||||
|
|
||||||
[JsonProperty(PropertyName = "playbackType")]
|
[JsonProperty(PropertyName = "playbackType")]
|
||||||
[Newtonsoft.Json.JsonConverter(typeof(StringEnumConverter))]
|
[Newtonsoft.Json.JsonConverter(typeof(StringEnumConverter))]
|
||||||
[System.Text.Json.Serialization.JsonConverter(typeof(JsonStringEnumConverter))]
|
[System.Text.Json.Serialization.JsonConverter(typeof(JsonStringEnumConverter))]
|
||||||
[JsonPropertyName("playbackType")]
|
[JsonPropertyName("playbackType")]
|
||||||
public PlaybackType PlaybackType { get; set; } = PlaybackType.playStop;
|
public PlaybackType PlaybackType { get; set; } = PlaybackType.playStop;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,158 +1,158 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using SocketIOClient;
|
using SocketIOClient;
|
||||||
using BarRaider.SdTools;
|
using BarRaider.SdTools;
|
||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
|
|
||||||
namespace ClipTrimDotNet.Client
|
namespace ClipTrimDotNet.Client
|
||||||
{
|
{
|
||||||
public class ClipTrimClient
|
public class ClipTrimClient
|
||||||
{
|
{
|
||||||
private static ClipTrimClient? instance;
|
private static ClipTrimClient? instance;
|
||||||
public static ClipTrimClient Instance
|
public static ClipTrimClient Instance
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (instance == null)
|
if (instance == null)
|
||||||
{
|
{
|
||||||
instance = new ClipTrimClient();
|
instance = new ClipTrimClient();
|
||||||
}
|
}
|
||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//private HttpClient httpClient;
|
//private HttpClient httpClient;
|
||||||
private SocketIO socket;
|
private SocketIO socket;
|
||||||
|
|
||||||
public int PortNumber { get; set; } = 5010;
|
public int PortNumber { get; set; } = 5010;
|
||||||
|
|
||||||
public ClipTrimClient()
|
public ClipTrimClient()
|
||||||
{
|
{
|
||||||
//httpClient = new HttpClient()
|
//httpClient = new HttpClient()
|
||||||
//{
|
//{
|
||||||
// BaseAddress = new Uri("http://localhost:5010/"),
|
// BaseAddress = new Uri("http://localhost:5010/"),
|
||||||
// Timeout = TimeSpan.FromSeconds(10)
|
// Timeout = TimeSpan.FromSeconds(10)
|
||||||
//};
|
//};
|
||||||
Logger.Instance.LogMessage(TracingLevel.INFO, $"Starting ClipTrimClient on port {PortNumber}");
|
Logger.Instance.LogMessage(TracingLevel.INFO, $"Starting ClipTrimClient on port {PortNumber}");
|
||||||
socket = new SocketIO(new Uri($"http://localhost:5010/"));
|
socket = new SocketIO(new Uri($"http://localhost:5010/"));
|
||||||
socket.Options.AutoUpgrade = false;
|
socket.Options.AutoUpgrade = false;
|
||||||
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 =>
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var response = ctx.GetValue<List<CollectionMetaData>>(0);
|
var response = ctx.GetValue<List<CollectionMetaData>>(0);
|
||||||
Logger.Instance.LogMessage(TracingLevel.INFO, $"full_data event {JsonConvert.SerializeObject(response)}");
|
Logger.Instance.LogMessage(TracingLevel.INFO, $"full_data event {JsonConvert.SerializeObject(response)}");
|
||||||
Collections = response!;
|
Collections = response!;
|
||||||
//Logger.Instance.LogMessage(TracingLevel.INFO, $"Collections {JsonConvert.SerializeObject(Collections)}");
|
//Logger.Instance.LogMessage(TracingLevel.INFO, $"Collections {JsonConvert.SerializeObject(Collections)}");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Logger.Instance.LogMessage(TracingLevel.INFO, $"full_data error {ex.ToString()}");
|
Logger.Instance.LogMessage(TracingLevel.INFO, $"full_data error {ex.ToString()}");
|
||||||
}
|
}
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
});
|
});
|
||||||
socket.On("collection_updated", ctx =>
|
socket.On("collection_updated", ctx =>
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var response = ctx.GetValue<CollectionMetaData>(0)!;
|
var response = ctx.GetValue<CollectionMetaData>(0)!;
|
||||||
Logger.Instance.LogMessage(TracingLevel.INFO, $"collection_updated event {JsonConvert.SerializeObject(response)}");
|
Logger.Instance.LogMessage(TracingLevel.INFO, $"collection_updated event {JsonConvert.SerializeObject(response)}");
|
||||||
int index = Collections.FindIndex(x => x.Id == response.Id);
|
int index = Collections.FindIndex(x => x.Id == response.Id);
|
||||||
if (index != -1)
|
if (index != -1)
|
||||||
{
|
{
|
||||||
Collections[index] = response;
|
Collections[index] = response;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
});
|
});
|
||||||
|
|
||||||
Task.Run(async () => await socket.ConnectAsync());
|
Task.Run(async () => await socket.ConnectAsync());
|
||||||
//Task.Run(ShortPoll);
|
//Task.Run(ShortPoll);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//public async Task ShortPoll()
|
//public async Task ShortPoll()
|
||||||
//{
|
//{
|
||||||
// while (true)
|
// while (true)
|
||||||
// {
|
// {
|
||||||
// await GetMetadata();
|
// await GetMetadata();
|
||||||
// await Task.Delay(TimeSpan.FromSeconds(5)); await Task.Delay(TimeSpan.FromSeconds(5));
|
// await Task.Delay(TimeSpan.FromSeconds(5)); await Task.Delay(TimeSpan.FromSeconds(5));
|
||||||
|
|
||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
|
|
||||||
public List<CollectionMetaData> Collections { get; private set; } = new List<CollectionMetaData>();
|
public List<CollectionMetaData> Collections { get; private set; } = new List<CollectionMetaData>();
|
||||||
public int SelectedCollection { get; private set; } = -1;
|
public int SelectedCollection { get; private set; } = -1;
|
||||||
public int PageIndex { get; private set; } = 0;
|
public int PageIndex { get; private set; } = 0;
|
||||||
//private async Task GetMetadata()
|
//private async Task GetMetadata()
|
||||||
//{
|
//{
|
||||||
// try
|
// try
|
||||||
// {
|
// {
|
||||||
// var response = await httpClient.GetAsync("meta");
|
// var response = await httpClient.GetAsync("meta");
|
||||||
// if (response.IsSuccessStatusCode)
|
// if (response.IsSuccessStatusCode)
|
||||||
// {
|
// {
|
||||||
// var json = await response.Content.ReadAsStringAsync();
|
// var json = await response.Content.ReadAsStringAsync();
|
||||||
// dynamic collections = JsonConvert.DeserializeObject(json);
|
// dynamic collections = JsonConvert.DeserializeObject(json);
|
||||||
// collections = collections.collections;
|
// collections = collections.collections;
|
||||||
// Collections = JsonConvert.DeserializeObject<List<CollectionMetaData>>(collections.ToString());
|
// Collections = JsonConvert.DeserializeObject<List<CollectionMetaData>>(collections.ToString());
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
// catch (Exception ex)
|
// catch (Exception ex)
|
||||||
// {
|
// {
|
||||||
// //Logger.Instance.LogMessage(TracingLevel.INFO, $"Error pinging ClipTrim API: {ex.Message}");
|
// //Logger.Instance.LogMessage(TracingLevel.INFO, $"Error pinging ClipTrim API: {ex.Message}");
|
||||||
// return;
|
// return;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
//}
|
//}
|
||||||
|
|
||||||
public List<string> GetCollectionNames()
|
public List<string> GetCollectionNames()
|
||||||
{
|
{
|
||||||
//await GetMetadata();
|
//await GetMetadata();
|
||||||
return Collections.Select(x => x.Name).ToList();
|
return Collections.Select(x => x.Name).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetSelectedCollectionByName(string name)
|
public void SetSelectedCollectionByName(string name)
|
||||||
{
|
{
|
||||||
SelectedCollection = Collections.FindIndex(x => x.Name == name);
|
SelectedCollection = Collections.FindIndex(x => x.Name == name);
|
||||||
if (SelectedCollection != -1)
|
if (SelectedCollection != -1)
|
||||||
{
|
{
|
||||||
PageIndex = 0;
|
PageIndex = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ClipMetadata? GetClipByPagedIndex(int index)
|
public ClipMetadata? GetClipByPagedIndex(int index)
|
||||||
{
|
{
|
||||||
if (SelectedCollection == -1) return null;
|
if (SelectedCollection == -1) return null;
|
||||||
int clipIndex = PageIndex * 10 + index;
|
int clipIndex = PageIndex * 10 + index;
|
||||||
var collection = Collections[SelectedCollection];
|
var collection = Collections[SelectedCollection];
|
||||||
if (clipIndex >= 0 && clipIndex < collection.Clips.Count)
|
if (clipIndex >= 0 && clipIndex < collection.Clips.Count)
|
||||||
{
|
{
|
||||||
return collection.Clips[clipIndex];
|
return collection.Clips[clipIndex];
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async void PlayClip(ClipMetadata? metadata)
|
public async void PlayClip(ClipMetadata? metadata)
|
||||||
{
|
{
|
||||||
if (metadata == null) return;
|
if (metadata == null) return;
|
||||||
|
|
||||||
//var response = await httpClient.PostAsync("playback/start", new StringContent(JsonConvert.SerializeObject(metadata), Encoding.UTF8, "application/json"));
|
//var response = await httpClient.PostAsync("playback/start", new StringContent(JsonConvert.SerializeObject(metadata), Encoding.UTF8, "application/json"));
|
||||||
//if (!response.IsSuccessStatusCode)
|
//if (!response.IsSuccessStatusCode)
|
||||||
//{
|
//{
|
||||||
// //Logger.Instance.LogMessage(TracingLevel.INFO, $"Error playing clip: {response.ReasonPhrase}");
|
// //Logger.Instance.LogMessage(TracingLevel.INFO, $"Error playing clip: {response.ReasonPhrase}");
|
||||||
//}
|
//}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,27 +1,27 @@
|
|||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace ClipTrimDotNet.Client
|
namespace ClipTrimDotNet.Client
|
||||||
{
|
{
|
||||||
public class CollectionMetaData
|
public class CollectionMetaData
|
||||||
{
|
{
|
||||||
[JsonProperty(PropertyName = "name")]
|
[JsonProperty(PropertyName = "name")]
|
||||||
[JsonPropertyName("name")]
|
[JsonPropertyName("name")]
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
|
||||||
[JsonProperty(PropertyName = "clips")]
|
[JsonProperty(PropertyName = "clips")]
|
||||||
[JsonPropertyName("clips")]
|
[JsonPropertyName("clips")]
|
||||||
public List<ClipMetadata> Clips { get; set; } = new List<ClipMetadata>();
|
public List<ClipMetadata> Clips { get; set; } = new List<ClipMetadata>();
|
||||||
|
|
||||||
|
|
||||||
[JsonProperty(PropertyName = "id")]
|
[JsonProperty(PropertyName = "id")]
|
||||||
[JsonPropertyName("id")]
|
[JsonPropertyName("id")]
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,95 +1,95 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net8.0-windows</TargetFramework>
|
<TargetFramework>net8.0-windows</TargetFramework>
|
||||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<LangVersion>10</LangVersion>
|
<LangVersion>10</LangVersion>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<PreBuildEvent>npm run stop</PreBuildEvent>
|
<PreBuildEvent>npm run stop</PreBuildEvent>
|
||||||
<PostBuildEvent>npm run start</PostBuildEvent>
|
<PostBuildEvent>npm run start</PostBuildEvent>
|
||||||
<AssemblyTitle>ClipTrimDotNet</AssemblyTitle>
|
<AssemblyTitle>ClipTrimDotNet</AssemblyTitle>
|
||||||
<Product>ClipTrimDotNet</Product>
|
<Product>ClipTrimDotNet</Product>
|
||||||
<Copyright>Copyright © 2020</Copyright>
|
<Copyright>Copyright © 2020</Copyright>
|
||||||
<AssemblyVersion>1.0.0.0</AssemblyVersion>
|
<AssemblyVersion>1.0.0.0</AssemblyVersion>
|
||||||
<FileVersion>1.0.0.0</FileVersion>
|
<FileVersion>1.0.0.0</FileVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<OutputPath>bin\Debug\com.michal-courson.cliptrim.sdPlugin\</OutputPath>
|
<OutputPath>bin\Debug\com.michal-courson.cliptrim.sdPlugin\</OutputPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
<OutputPath>bin\Release\ClipTrimDotNet.sdPlugin\</OutputPath>
|
<OutputPath>bin\Release\ClipTrimDotNet.sdPlugin\</OutputPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="CommandLineParser" Version="2.9.1" />
|
<PackageReference Include="CommandLineParser" Version="2.9.1" />
|
||||||
<PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="8.0.0" />
|
<PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="8.0.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="10.0.2" />
|
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="10.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="10.0.2" />
|
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="10.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="10.0.2" />
|
<PackageReference Include="Microsoft.Extensions.Logging" Version="10.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.2" />
|
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Options" Version="10.0.2" />
|
<PackageReference Include="Microsoft.Extensions.Options" Version="10.0.2" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Primitives" Version="10.0.2" />
|
<PackageReference Include="Microsoft.Extensions.Primitives" Version="10.0.2" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.4" />
|
||||||
<PackageReference Include="NLog" Version="6.0.5" />
|
<PackageReference Include="NLog" Version="6.0.5" />
|
||||||
<PackageReference Include="SocketIOClient" Version="4.0.0.2" />
|
<PackageReference Include="SocketIOClient" Version="4.0.0.2" />
|
||||||
<PackageReference Include="SocketIOClient.Common" Version="4.0.0" />
|
<PackageReference Include="SocketIOClient.Common" Version="4.0.0" />
|
||||||
<PackageReference Include="SocketIOClient.Serializer" Version="4.0.0.1" />
|
<PackageReference Include="SocketIOClient.Serializer" Version="4.0.0.1" />
|
||||||
<PackageReference Include="SocketIOClient.Serializer.NewtonsoftJson" Version="4.0.0.1" />
|
<PackageReference Include="SocketIOClient.Serializer.NewtonsoftJson" Version="4.0.0.1" />
|
||||||
<PackageReference Include="StreamDeck-Tools" Version="6.3.2" />
|
<PackageReference Include="StreamDeck-Tools" Version="6.3.2" />
|
||||||
<PackageReference Include="System.Diagnostics.DiagnosticSource" Version="10.0.2" />
|
<PackageReference Include="System.Diagnostics.DiagnosticSource" Version="10.0.2" />
|
||||||
<PackageReference Include="System.Drawing.Common" Version="9.0.10" />
|
<PackageReference Include="System.Drawing.Common" Version="9.0.10" />
|
||||||
<PackageReference Include="System.IO.Pipelines" Version="10.0.2" />
|
<PackageReference Include="System.IO.Pipelines" Version="10.0.2" />
|
||||||
<PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.1.2" />
|
<PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.1.2" />
|
||||||
<PackageReference Include="System.Security.AccessControl" Version="6.0.1" />
|
<PackageReference Include="System.Security.AccessControl" Version="6.0.1" />
|
||||||
<PackageReference Include="System.Text.Encodings.Web" Version="10.0.2" />
|
<PackageReference Include="System.Text.Encodings.Web" Version="10.0.2" />
|
||||||
<PackageReference Include="System.Text.Json" Version="10.0.2" />
|
<PackageReference Include="System.Text.Json" Version="10.0.2" />
|
||||||
<PackageReference Include="System.Configuration.ConfigurationManager" Version="10.0.3" />
|
<PackageReference Include="System.Configuration.ConfigurationManager" Version="10.0.3" />
|
||||||
<PackageReference Include="CoreWCF.Primitives" Version="1.8.0" />
|
<PackageReference Include="CoreWCF.Primitives" Version="1.8.0" />
|
||||||
<PackageReference Include="CoreWCF.ConfigurationManager" Version="1.8.0" />
|
<PackageReference Include="CoreWCF.ConfigurationManager" Version="1.8.0" />
|
||||||
<PackageReference Include="CoreWCF.Http" Version="1.8.0" />
|
<PackageReference Include="CoreWCF.Http" Version="1.8.0" />
|
||||||
<PackageReference Include="CoreWCF.WebHttp" Version="1.8.0" />
|
<PackageReference Include="CoreWCF.WebHttp" Version="1.8.0" />
|
||||||
<PackageReference Include="CoreWCF.NetTcp" Version="1.8.0" />
|
<PackageReference Include="CoreWCF.NetTcp" Version="1.8.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Update="DialLayout.json">
|
<None Update="DialLayout.json">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</None>
|
</None>
|
||||||
<None Update="manifest.json">
|
<None Update="manifest.json">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</None>
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="!!README!!.txt" />
|
<Content Include="!!README!!.txt" />
|
||||||
<Content Include="Images\categoryIcon%402x.png">
|
<Content Include="Images\categoryIcon%402x.png">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Include="Images\categoryIcon.png">
|
<Content Include="Images\categoryIcon.png">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Include="Images\icon%402x.png">
|
<Content Include="Images\icon%402x.png">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Include="Images\icon.png">
|
<Content Include="Images\icon.png">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Include="Images\pluginAction%402x.png">
|
<Content Include="Images\pluginAction%402x.png">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Include="Images\pluginAction.png">
|
<Content Include="Images\pluginAction.png">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Include="Images\pluginIcon%402x.png">
|
<Content Include="Images\pluginIcon%402x.png">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Include="Images\pluginIcon.png">
|
<Content Include="Images\pluginIcon.png">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Include="package.json" />
|
<Content Include="package.json" />
|
||||||
<Content Include="PropertyInspector\profile_swticher.html">
|
<Content Include="PropertyInspector\profile_swticher.html">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Include="PropertyInspector\file_player.html">
|
<Content Include="PropertyInspector\file_player.html">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
|
||||||
<StartArguments>--port 23654 --pluginUUID com.michal-courson.cliptrim --registerEvent restart --info {}</StartArguments>
|
<StartArguments>--port 23654 --pluginUUID com.michal-courson.cliptrim --registerEvent restart --info {}</StartArguments>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Project>
|
</Project>
|
||||||
@ -1,40 +1,40 @@
|
|||||||
{
|
{
|
||||||
"id": "sampleDial",
|
"id": "sampleDial",
|
||||||
"items": [
|
"items": [
|
||||||
{
|
{
|
||||||
"key": "title",
|
"key": "title",
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"rect": [ 16, 10, 136, 24 ],
|
"rect": [ 16, 10, 136, 24 ],
|
||||||
"font": {
|
"font": {
|
||||||
"size": 16,
|
"size": 16,
|
||||||
"weight": 600
|
"weight": 600
|
||||||
},
|
},
|
||||||
"alignment": "left"
|
"alignment": "left"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "icon",
|
"key": "icon",
|
||||||
"type": "pixmap",
|
"type": "pixmap",
|
||||||
"rect": [ 16, 40, 48, 48 ]
|
"rect": [ 16, 40, 48, 48 ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "value",
|
"key": "value",
|
||||||
"type": "text",
|
"type": "text",
|
||||||
"rect": [ 76, 40, 108, 32 ],
|
"rect": [ 76, 40, 108, 32 ],
|
||||||
"font": {
|
"font": {
|
||||||
"size": 24,
|
"size": 24,
|
||||||
"weight": 600
|
"weight": 600
|
||||||
},
|
},
|
||||||
"alignment": "right"
|
"alignment": "right"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "indicator",
|
"key": "indicator",
|
||||||
"type": "gbar",
|
"type": "gbar",
|
||||||
"rect": [ 76, 74, 108, 20 ],
|
"rect": [ 76, 74, 108, 20 ],
|
||||||
"value": 0,
|
"value": 0,
|
||||||
"subtype": 4,
|
"subtype": 4,
|
||||||
"bar_h": 12,
|
"bar_h": 12,
|
||||||
"border_w": 0,
|
"border_w": 0,
|
||||||
"bar_bg_c": "0:#427018,0.75:#705B1C,0.90:#702735,1:#702735"
|
"bar_bg_c": "0:#427018,0.75:#705B1C,0.90:#702735,1:#702735"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -1,108 +1,108 @@
|
|||||||
using BarRaider.SdTools;
|
using BarRaider.SdTools;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using BarRaider.SdTools.Wrappers;
|
using BarRaider.SdTools.Wrappers;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
namespace ClipTrimDotNet
|
namespace ClipTrimDotNet
|
||||||
{
|
{
|
||||||
public class FileEntry
|
public class FileEntry
|
||||||
{
|
{
|
||||||
public FileEntry()
|
public FileEntry()
|
||||||
{
|
{
|
||||||
Volume = 1.0;
|
Volume = 1.0;
|
||||||
Playtype = "Play/Overlap";
|
Playtype = "Play/Overlap";
|
||||||
}
|
}
|
||||||
[JsonProperty(PropertyName = "Volume")]
|
[JsonProperty(PropertyName = "Volume")]
|
||||||
public double Volume { get; set; }
|
public double Volume { get; set; }
|
||||||
[JsonProperty(PropertyName = "Playtype")]
|
[JsonProperty(PropertyName = "Playtype")]
|
||||||
public string Playtype { get; set; }
|
public string Playtype { get; set; }
|
||||||
}
|
}
|
||||||
public class CollectionEntry
|
public class CollectionEntry
|
||||||
{
|
{
|
||||||
public CollectionEntry()
|
public CollectionEntry()
|
||||||
{
|
{
|
||||||
Files = new Dictionary<string, FileEntry>();
|
Files = new Dictionary<string, FileEntry>();
|
||||||
}
|
}
|
||||||
[JsonProperty(PropertyName = "Files")]
|
[JsonProperty(PropertyName = "Files")]
|
||||||
public Dictionary<string, FileEntry> Files { get; set; }
|
public Dictionary<string, FileEntry> Files { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class GlobalSettings
|
public class GlobalSettings
|
||||||
{
|
{
|
||||||
public static GlobalSettings? _inst;
|
public static GlobalSettings? _inst;
|
||||||
public static GlobalSettings Instance
|
public static GlobalSettings Instance
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
_inst ??= CreateDefaultSettings();
|
_inst ??= CreateDefaultSettings();
|
||||||
return _inst;
|
return _inst;
|
||||||
}
|
}
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
_inst = value;
|
_inst = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public static GlobalSettings CreateDefaultSettings()
|
public static GlobalSettings CreateDefaultSettings()
|
||||||
{
|
{
|
||||||
GlobalSettings instance = new GlobalSettings();
|
GlobalSettings instance = new GlobalSettings();
|
||||||
instance.BasePath = null;
|
instance.BasePath = null;
|
||||||
instance.ProfileName = null;
|
instance.ProfileName = null;
|
||||||
instance.Collections = new Dictionary<string, CollectionEntry>();
|
instance.Collections = new Dictionary<string, CollectionEntry>();
|
||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
[FilenameProperty]
|
[FilenameProperty]
|
||||||
[JsonProperty(PropertyName = "basePath")]
|
[JsonProperty(PropertyName = "basePath")]
|
||||||
public string? BasePath { get; set; }
|
public string? BasePath { get; set; }
|
||||||
|
|
||||||
[JsonProperty(PropertyName = "profileName")]
|
[JsonProperty(PropertyName = "profileName")]
|
||||||
public string? ProfileName { get; set; }
|
public string? ProfileName { get; set; }
|
||||||
|
|
||||||
[JsonProperty(PropertyName = "outputDevice")]
|
[JsonProperty(PropertyName = "outputDevice")]
|
||||||
public string? OutputDevice { get; set; }
|
public string? OutputDevice { get; set; }
|
||||||
|
|
||||||
[JsonProperty(PropertyName = "collections")]
|
[JsonProperty(PropertyName = "collections")]
|
||||||
public Dictionary<string, CollectionEntry> Collections { get; set; }
|
public Dictionary<string, CollectionEntry> Collections { get; set; }
|
||||||
|
|
||||||
public void SetCurrentProfile(string profile)
|
public void SetCurrentProfile(string profile)
|
||||||
{
|
{
|
||||||
ProfileName = profile;
|
ProfileName = profile;
|
||||||
if(!Collections.ContainsKey(profile))
|
if(!Collections.ContainsKey(profile))
|
||||||
{
|
{
|
||||||
Collections.Add(profile, new CollectionEntry());
|
Collections.Add(profile, new CollectionEntry());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public FileEntry GetFileOptionsInCurrentProfile(string filename)
|
public FileEntry GetFileOptionsInCurrentProfile(string filename)
|
||||||
{
|
{
|
||||||
if(!Collections.TryGetValue(ProfileName, out CollectionEntry collection))
|
if(!Collections.TryGetValue(ProfileName, out CollectionEntry collection))
|
||||||
{
|
{
|
||||||
return new FileEntry();
|
return new FileEntry();
|
||||||
}
|
}
|
||||||
if(!collection.Files.TryGetValue(filename, out FileEntry file))
|
if(!collection.Files.TryGetValue(filename, out FileEntry file))
|
||||||
{
|
{
|
||||||
return new FileEntry();
|
return new FileEntry();
|
||||||
}
|
}
|
||||||
//Logger.Instance.LogMessage(TracingLevel.INFO, "fetched file settings " + filename + JsonConvert.SerializeObject(file));
|
//Logger.Instance.LogMessage(TracingLevel.INFO, "fetched file settings " + filename + JsonConvert.SerializeObject(file));
|
||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetFileOptionsCurrentProfile(string filename, FileEntry file)
|
public void SetFileOptionsCurrentProfile(string filename, FileEntry file)
|
||||||
{
|
{
|
||||||
//Logger.Instance.LogMessage(TracingLevel.INFO, "SetFileOptionsCurrentProfile ");
|
//Logger.Instance.LogMessage(TracingLevel.INFO, "SetFileOptionsCurrentProfile ");
|
||||||
if (!Collections.TryGetValue(ProfileName, out CollectionEntry collection))
|
if (!Collections.TryGetValue(ProfileName, out CollectionEntry collection))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//Logger.Instance.LogMessage(TracingLevel.INFO, "SetFileOptionsCurrentProfile 2");
|
//Logger.Instance.LogMessage(TracingLevel.INFO, "SetFileOptionsCurrentProfile 2");
|
||||||
//collection.Files[filename] = file;
|
//collection.Files[filename] = file;
|
||||||
Collections[ProfileName].Files[filename] = file;
|
Collections[ProfileName].Files[filename] = file;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,194 +1,194 @@
|
|||||||
using BarRaider.SdTools;
|
using BarRaider.SdTools;
|
||||||
using BarRaider.SdTools.Wrappers;
|
using BarRaider.SdTools.Wrappers;
|
||||||
using ClipTrimDotNet.Client;
|
using ClipTrimDotNet.Client;
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Dynamic;
|
using System.Dynamic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace ClipTrimDotNet
|
namespace ClipTrimDotNet
|
||||||
{
|
{
|
||||||
[PluginActionId("com.michal-courson.cliptrim.player")]
|
[PluginActionId("com.michal-courson.cliptrim.player")]
|
||||||
public class Player : KeypadBase
|
public class Player : KeypadBase
|
||||||
{
|
{
|
||||||
|
|
||||||
private ClipMetadata? metadata;
|
private ClipMetadata? metadata;
|
||||||
private KeyCoordinates coordinates;
|
private KeyCoordinates coordinates;
|
||||||
private class PluginSettings
|
private class PluginSettings
|
||||||
{
|
{
|
||||||
public static PluginSettings CreateDefaultSettings()
|
public static PluginSettings CreateDefaultSettings()
|
||||||
{
|
{
|
||||||
PluginSettings instance = new PluginSettings();
|
PluginSettings instance = new PluginSettings();
|
||||||
instance.Path = null;
|
instance.Path = null;
|
||||||
instance.PlayType = "Play/Overlap";
|
instance.PlayType = "Play/Overlap";
|
||||||
instance.Index = 0;
|
instance.Index = 0;
|
||||||
instance.Volume = 1;
|
instance.Volume = 1;
|
||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
[FilenameProperty]
|
[FilenameProperty]
|
||||||
[JsonPropertyName("path")]
|
[JsonPropertyName("path")]
|
||||||
public string? Path { get; set; }
|
public string? Path { get; set; }
|
||||||
|
|
||||||
[JsonPropertyName("index")]
|
[JsonPropertyName("index")]
|
||||||
public int? Index { get; set; }
|
public int? Index { get; set; }
|
||||||
[JsonPropertyName("playtype")]
|
[JsonPropertyName("playtype")]
|
||||||
public string PlayType { get; set; }
|
public string PlayType { get; set; }
|
||||||
|
|
||||||
[JsonPropertyName("volume")]
|
[JsonPropertyName("volume")]
|
||||||
public double Volume { get; set; }
|
public double Volume { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Private Members
|
#region Private Members
|
||||||
|
|
||||||
private PluginSettings settings;
|
private PluginSettings settings;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
public Player(SDConnection connection, InitialPayload payload) : base(connection, payload)
|
public Player(SDConnection connection, InitialPayload payload) : base(connection, payload)
|
||||||
{
|
{
|
||||||
if (payload.Settings == null || payload.Settings.Count == 0)
|
if (payload.Settings == null || payload.Settings.Count == 0)
|
||||||
{
|
{
|
||||||
this.settings = PluginSettings.CreateDefaultSettings();
|
this.settings = PluginSettings.CreateDefaultSettings();
|
||||||
SaveSettings();
|
SaveSettings();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.settings = payload.Settings.ToObject<PluginSettings>();
|
this.settings = payload.Settings.ToObject<PluginSettings>();
|
||||||
}
|
}
|
||||||
this.coordinates = payload.Coordinates;
|
this.coordinates = payload.Coordinates;
|
||||||
GlobalSettingsManager.Instance.RequestGlobalSettings();
|
GlobalSettingsManager.Instance.RequestGlobalSettings();
|
||||||
CheckFile();
|
CheckFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Instance_OnReceivedGlobalSettings(object sender, ReceivedGlobalSettingsPayload e)
|
private void Instance_OnReceivedGlobalSettings(object sender, ReceivedGlobalSettingsPayload e)
|
||||||
{
|
{
|
||||||
Tools.AutoPopulateSettings(GlobalSettings.Instance, e.Settings);
|
Tools.AutoPopulateSettings(GlobalSettings.Instance, e.Settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int GetIndex()
|
public int GetIndex()
|
||||||
{
|
{
|
||||||
return Math.Max((coordinates.Row - 1) * 5 + coordinates.Column, 0);
|
return Math.Max((coordinates.Row - 1) * 5 + coordinates.Column, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void CheckFile()
|
private async void CheckFile()
|
||||||
{
|
{
|
||||||
|
|
||||||
//if (settings == null || GlobalSettings.Instance.ProfileName ==null) return;
|
//if (settings == null || GlobalSettings.Instance.ProfileName ==null) return;
|
||||||
metadata = ClipTrimClient.Instance.GetClipByPagedIndex(GetIndex());
|
metadata = ClipTrimClient.Instance.GetClipByPagedIndex(GetIndex());
|
||||||
await Connection.SetTitleAsync($"{metadata?.Name ?? ""}");
|
await Connection.SetTitleAsync($"{metadata?.Name ?? ""}");
|
||||||
//Logger.Instance.LogMessage(TracingLevel.INFO, $"Set title to {metadata?.Name ?? ""}");
|
//Logger.Instance.LogMessage(TracingLevel.INFO, $"Set title to {metadata?.Name ?? ""}");
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//var files = Directory.GetFiles(Path.Combine(Path.GetDirectoryName(GlobalSettings.Instance.BasePath), GlobalSettings.Instance.ProfileName), "*.wav", SearchOption.TopDirectoryOnly)
|
//var files = Directory.GetFiles(Path.Combine(Path.GetDirectoryName(GlobalSettings.Instance.BasePath), GlobalSettings.Instance.ProfileName), "*.wav", SearchOption.TopDirectoryOnly)
|
||||||
// .OrderBy(file => File.GetCreationTime(file))
|
// .OrderBy(file => File.GetCreationTime(file))
|
||||||
// .ToArray();
|
// .ToArray();
|
||||||
//int? i = this.settings.Index;
|
//int? i = this.settings.Index;
|
||||||
//string new_path = "";
|
//string new_path = "";
|
||||||
//if (i != null && i >= 0 && i < files.Length)
|
//if (i != null && i >= 0 && i < files.Length)
|
||||||
//{
|
//{
|
||||||
// new_path = files[i ?? 0];
|
// new_path = files[i ?? 0];
|
||||||
//}
|
//}
|
||||||
|
|
||||||
|
|
||||||
//await Connection.SetTitleAsync(Path.GetFileNameWithoutExtension(new_path));
|
//await Connection.SetTitleAsync(Path.GetFileNameWithoutExtension(new_path));
|
||||||
//if (new_path != settings.Path)
|
//if (new_path != settings.Path)
|
||||||
//{
|
//{
|
||||||
// settings.Path = new_path;
|
// settings.Path = new_path;
|
||||||
// if(new_path != "")
|
// if(new_path != "")
|
||||||
// {
|
// {
|
||||||
// FileEntry opts = GlobalSettings.Instance.GetFileOptionsInCurrentProfile(new_path);
|
// FileEntry opts = GlobalSettings.Instance.GetFileOptionsInCurrentProfile(new_path);
|
||||||
// settings.Volume = opts.Volume;
|
// settings.Volume = opts.Volume;
|
||||||
// settings.PlayType = opts.Playtype;
|
// settings.PlayType = opts.Playtype;
|
||||||
// }
|
// }
|
||||||
// await SaveSettings();
|
// await SaveSettings();
|
||||||
//}
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private async void Connection_OnApplicationDidLaunch(object sender, BarRaider.SdTools.Wrappers.SDEventReceivedEventArgs<BarRaider.SdTools.Events.ApplicationDidLaunch> e)
|
private async void Connection_OnApplicationDidLaunch(object sender, BarRaider.SdTools.Wrappers.SDEventReceivedEventArgs<BarRaider.SdTools.Events.ApplicationDidLaunch> e)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Connection_OnTitleParametersDidChange(object sender, SDEventReceivedEventArgs<BarRaider.SdTools.Events.TitleParametersDidChange> e)
|
private void Connection_OnTitleParametersDidChange(object sender, SDEventReceivedEventArgs<BarRaider.SdTools.Events.TitleParametersDidChange> e)
|
||||||
{
|
{
|
||||||
//titleParameters = e.Event?.Payload?.TitleParameters;
|
//titleParameters = e.Event?.Payload?.TitleParameters;
|
||||||
//userTitle = e.Event?.Payload?.Title;
|
//userTitle = e.Event?.Payload?.Title;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Dispose()
|
public override void Dispose()
|
||||||
{
|
{
|
||||||
Connection.OnTitleParametersDidChange -= Connection_OnTitleParametersDidChange;
|
Connection.OnTitleParametersDidChange -= Connection_OnTitleParametersDidChange;
|
||||||
Connection.OnApplicationDidLaunch -= Connection_OnApplicationDidLaunch;
|
Connection.OnApplicationDidLaunch -= Connection_OnApplicationDidLaunch;
|
||||||
//Logger.Instance.LogMessage(TracingLevel.INFO, $"Destructor called");
|
//Logger.Instance.LogMessage(TracingLevel.INFO, $"Destructor called");
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void KeyPressed(KeyPayload payload)
|
public override void KeyPressed(KeyPayload payload)
|
||||||
{
|
{
|
||||||
//Logger.Instance.LogMessage(TracingLevel.INFO, "Key Pressedd");
|
//Logger.Instance.LogMessage(TracingLevel.INFO, "Key Pressedd");
|
||||||
Tools.AutoPopulateSettings(settings, payload.Settings);
|
Tools.AutoPopulateSettings(settings, payload.Settings);
|
||||||
// Logger.Instance.LogMessage(TracingLevel.INFO, JsonConvert.SerializeObject(settings));
|
// Logger.Instance.LogMessage(TracingLevel.INFO, JsonConvert.SerializeObject(settings));
|
||||||
ClipTrimClient.Instance.PlayClip(metadata);
|
ClipTrimClient.Instance.PlayClip(metadata);
|
||||||
//try
|
//try
|
||||||
//{
|
//{
|
||||||
// WavPlayer.Instance.Play(settings.Path, GlobalSettings.Instance.OutputDevice, settings.Volume, settings.PlayType == "Play/Overlap" ? WavPlayer.PlayMode.PlayOverlap : WavPlayer.PlayMode.PlayStop);
|
// WavPlayer.Instance.Play(settings.Path, GlobalSettings.Instance.OutputDevice, settings.Volume, settings.PlayType == "Play/Overlap" ? WavPlayer.PlayMode.PlayOverlap : WavPlayer.PlayMode.PlayStop);
|
||||||
//}
|
//}
|
||||||
//catch
|
//catch
|
||||||
//{
|
//{
|
||||||
|
|
||||||
//}
|
//}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void KeyReleased(KeyPayload payload) {
|
public override void KeyReleased(KeyPayload payload) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public override void OnTick() {
|
public override void OnTick() {
|
||||||
CheckFile();
|
CheckFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override async void ReceivedSettings(ReceivedSettingsPayload payload)
|
public override async void ReceivedSettings(ReceivedSettingsPayload payload)
|
||||||
{
|
{
|
||||||
//Logger.Instance.LogMessage(TracingLevel.INFO, "Player rec settings");
|
//Logger.Instance.LogMessage(TracingLevel.INFO, "Player rec settings");
|
||||||
Tools.AutoPopulateSettings(settings, payload.Settings);
|
Tools.AutoPopulateSettings(settings, payload.Settings);
|
||||||
GlobalSettings.Instance.SetFileOptionsCurrentProfile(settings.Path, new FileEntry() { Playtype = settings.PlayType, Volume = settings.Volume });
|
GlobalSettings.Instance.SetFileOptionsCurrentProfile(settings.Path, new FileEntry() { Playtype = settings.PlayType, Volume = settings.Volume });
|
||||||
await Connection.SetGlobalSettingsAsync(JObject.FromObject(GlobalSettings.Instance));
|
await Connection.SetGlobalSettingsAsync(JObject.FromObject(GlobalSettings.Instance));
|
||||||
//SaveSettings();
|
//SaveSettings();
|
||||||
//CheckFile();
|
//CheckFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void ReceivedGlobalSettings(ReceivedGlobalSettingsPayload payload) {
|
public override void ReceivedGlobalSettings(ReceivedGlobalSettingsPayload payload) {
|
||||||
//Logger.Instance.LogMessage(TracingLevel.INFO, "ReceivedGlobalSettings");
|
//Logger.Instance.LogMessage(TracingLevel.INFO, "ReceivedGlobalSettings");
|
||||||
|
|
||||||
if (payload.Settings == null || payload.Settings.Count == 0)
|
if (payload.Settings == null || payload.Settings.Count == 0)
|
||||||
{
|
{
|
||||||
var inst = GlobalSettings.Instance;
|
var inst = GlobalSettings.Instance;
|
||||||
//GlobalSettingsManager.Instance.SetGlobalSettings(JObject.FromObject(inst));
|
//GlobalSettingsManager.Instance.SetGlobalSettings(JObject.FromObject(inst));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GlobalSettings.Instance = payload.Settings.ToObject<GlobalSettings>();
|
GlobalSettings.Instance = payload.Settings.ToObject<GlobalSettings>();
|
||||||
}
|
}
|
||||||
|
|
||||||
//CheckFile();
|
//CheckFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Private Methods
|
#region Private Methods
|
||||||
|
|
||||||
private Task SaveSettings()
|
private Task SaveSettings()
|
||||||
{
|
{
|
||||||
return Connection.SetSettingsAsync(JObject.FromObject(settings));
|
return Connection.SetSettingsAsync(JObject.FromObject(settings));
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,165 +1,165 @@
|
|||||||
using BarRaider.SdTools;
|
using BarRaider.SdTools;
|
||||||
using BarRaider.SdTools.Wrappers;
|
using BarRaider.SdTools.Wrappers;
|
||||||
using ClipTrimDotNet.Client;
|
using ClipTrimDotNet.Client;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Dynamic;
|
using System.Dynamic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace ClipTrimDotNet
|
namespace ClipTrimDotNet
|
||||||
{
|
{
|
||||||
public class DataSourceItem
|
public class DataSourceItem
|
||||||
{
|
{
|
||||||
public string label { get; set; }
|
public string label { get; set; }
|
||||||
public string value { get; set; }
|
public string value { get; set; }
|
||||||
}
|
}
|
||||||
[PluginActionId("com.michal-courson.cliptrim.profile-switcher")]
|
[PluginActionId("com.michal-courson.cliptrim.profile-switcher")]
|
||||||
public class ProfileSwitcher : KeypadBase
|
public class ProfileSwitcher : KeypadBase
|
||||||
{
|
{
|
||||||
private class PluginSettings
|
private class PluginSettings
|
||||||
{
|
{
|
||||||
public static PluginSettings CreateDefaultSettings()
|
public static PluginSettings CreateDefaultSettings()
|
||||||
{
|
{
|
||||||
PluginSettings instance = new PluginSettings();
|
PluginSettings instance = new PluginSettings();
|
||||||
instance.ProfileName = null;
|
instance.ProfileName = null;
|
||||||
return instance;
|
return instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
[JsonProperty(PropertyName = "profileName")]
|
[JsonProperty(PropertyName = "profileName")]
|
||||||
public string? ProfileName { get; set; }
|
public string? ProfileName { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Private Members
|
#region Private Members
|
||||||
|
|
||||||
private PluginSettings settings;
|
private PluginSettings settings;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
public ProfileSwitcher(SDConnection connection, InitialPayload payload) : base(connection, payload)
|
public ProfileSwitcher(SDConnection connection, InitialPayload payload) : base(connection, payload)
|
||||||
{
|
{
|
||||||
if (payload.Settings == null || payload.Settings.Count == 0)
|
if (payload.Settings == null || payload.Settings.Count == 0)
|
||||||
{
|
{
|
||||||
this.settings = PluginSettings.CreateDefaultSettings();
|
this.settings = PluginSettings.CreateDefaultSettings();
|
||||||
SaveSettings();
|
SaveSettings();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.settings = payload.Settings.ToObject<PluginSettings>();
|
this.settings = payload.Settings.ToObject<PluginSettings>();
|
||||||
}
|
}
|
||||||
GlobalSettingsManager.Instance.RequestGlobalSettings();
|
GlobalSettingsManager.Instance.RequestGlobalSettings();
|
||||||
Connection.OnSendToPlugin += Connection_OnSendToPlugin;
|
Connection.OnSendToPlugin += Connection_OnSendToPlugin;
|
||||||
SetTitle();
|
SetTitle();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void SetTitle()
|
private async void SetTitle()
|
||||||
{
|
{
|
||||||
|
|
||||||
await Connection.SetTitleAsync(settings.ProfileName + " B");
|
await Connection.SetTitleAsync(settings.ProfileName + " B");
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void Connection_OnSendToPlugin(object sender, SDEventReceivedEventArgs<BarRaider.SdTools.Events.SendToPlugin> e)
|
private async void Connection_OnSendToPlugin(object sender, SDEventReceivedEventArgs<BarRaider.SdTools.Events.SendToPlugin> e)
|
||||||
{
|
{
|
||||||
//Logger.Instance.LogMessage(TracingLevel.INFO, "get profiles");
|
//Logger.Instance.LogMessage(TracingLevel.INFO, "get profiles");
|
||||||
if (e.Event.Payload["event"].ToString() == "getProfiles")
|
if (e.Event.Payload["event"].ToString() == "getProfiles")
|
||||||
{
|
{
|
||||||
//string basePath = "C:\\Users\\mickl\\Music\\clips";
|
//string basePath = "C:\\Users\\mickl\\Music\\clips";
|
||||||
//var files = Directory.GetDirectories(basePath, "*", SearchOption.TopDirectoryOnly).Select(x => Path.GetFileNameWithoutExtension(x)).Where(x => x != "original");
|
//var files = Directory.GetDirectories(basePath, "*", SearchOption.TopDirectoryOnly).Select(x => Path.GetFileNameWithoutExtension(x)).Where(x => x != "original");
|
||||||
var files = ClipTrimClient.Instance.GetCollectionNames();
|
var files = ClipTrimClient.Instance.GetCollectionNames();
|
||||||
var items = files.Select(x => new DataSourceItem { label = x, value = x});
|
var items = files.Select(x => new DataSourceItem { label = x, value = x});
|
||||||
var obj = new JObject();
|
var obj = new JObject();
|
||||||
obj["event"] = "getProfiles";
|
obj["event"] = "getProfiles";
|
||||||
obj["items"] = JArray.FromObject(items);
|
obj["items"] = JArray.FromObject(items);
|
||||||
//Logger.Instance.LogMessage(TracingLevel.INFO, "get profiles return " + JsonConvert.SerializeObject(obj));
|
//Logger.Instance.LogMessage(TracingLevel.INFO, "get profiles return " + JsonConvert.SerializeObject(obj));
|
||||||
await Connection.SendToPropertyInspectorAsync(obj);
|
await Connection.SendToPropertyInspectorAsync(obj);
|
||||||
}
|
}
|
||||||
//if (e.Event.Payload["event"].ToString() == "getOutputDevices")
|
//if (e.Event.Payload["event"].ToString() == "getOutputDevices")
|
||||||
//{
|
//{
|
||||||
// List<WaveOutCapabilities> devices = new List<WaveOutCapabilities>();
|
// List<WaveOutCapabilities> devices = new List<WaveOutCapabilities>();
|
||||||
// for (int n = -1; n < WaveOut.DeviceCount; n++)
|
// for (int n = -1; n < WaveOut.DeviceCount; n++)
|
||||||
// {
|
// {
|
||||||
// var caps = WaveOut.GetCapabilities(n);
|
// var caps = WaveOut.GetCapabilities(n);
|
||||||
// devices.Add(caps);
|
// devices.Add(caps);
|
||||||
// }
|
// }
|
||||||
// var items = devices.Select(x => new DataSourceItem { label = x.ProductName, value = x.ProductName });
|
// var items = devices.Select(x => new DataSourceItem { label = x.ProductName, value = x.ProductName });
|
||||||
// var obj = new JObject();
|
// var obj = new JObject();
|
||||||
// obj["event"] = "getOutputDevices";
|
// obj["event"] = "getOutputDevices";
|
||||||
// obj["items"] = JArray.FromObject(items);
|
// obj["items"] = JArray.FromObject(items);
|
||||||
// //Logger.Instance.LogMessage(TracingLevel.INFO, "get devices return " + JsonConvert.SerializeObject(obj));
|
// //Logger.Instance.LogMessage(TracingLevel.INFO, "get devices return " + JsonConvert.SerializeObject(obj));
|
||||||
// await Connection.SendToPropertyInspectorAsync(obj);
|
// await Connection.SendToPropertyInspectorAsync(obj);
|
||||||
//}
|
//}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Connection_OnTitleParametersDidChange(object sender, SDEventReceivedEventArgs<BarRaider.SdTools.Events.TitleParametersDidChange> e)
|
private void Connection_OnTitleParametersDidChange(object sender, SDEventReceivedEventArgs<BarRaider.SdTools.Events.TitleParametersDidChange> e)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Dispose()
|
public override void Dispose()
|
||||||
{
|
{
|
||||||
Connection.OnTitleParametersDidChange -= Connection_OnTitleParametersDidChange;
|
Connection.OnTitleParametersDidChange -= Connection_OnTitleParametersDidChange;
|
||||||
//Logger.Instance.LogMessage(TracingLevel.INFO, $"Destructor called");
|
//Logger.Instance.LogMessage(TracingLevel.INFO, $"Destructor called");
|
||||||
}
|
}
|
||||||
|
|
||||||
public override async void KeyPressed(KeyPayload payload)
|
public override async void KeyPressed(KeyPayload payload)
|
||||||
{
|
{
|
||||||
//Logger.Instance.LogMessage(TracingLevel.INFO, "KeyPressed");
|
//Logger.Instance.LogMessage(TracingLevel.INFO, "KeyPressed");
|
||||||
//Logger.Instance.LogMessage(TracingLevel.INFO, JsonConvert.SerializeObject(settings));
|
//Logger.Instance.LogMessage(TracingLevel.INFO, JsonConvert.SerializeObject(settings));
|
||||||
//Logger.Instance.LogMessage(TracingLevel.INFO, JsonConvert.SerializeObject(GlobalSettings.Instance));
|
//Logger.Instance.LogMessage(TracingLevel.INFO, JsonConvert.SerializeObject(GlobalSettings.Instance));
|
||||||
ClipTrimClient.Instance.SetSelectedCollectionByName(settings.ProfileName);
|
ClipTrimClient.Instance.SetSelectedCollectionByName(settings.ProfileName);
|
||||||
GlobalSettings.Instance.SetCurrentProfile(settings.ProfileName);
|
GlobalSettings.Instance.SetCurrentProfile(settings.ProfileName);
|
||||||
//Logger.Instance.LogMessage(TracingLevel.INFO, JsonConvert.SerializeObject(GlobalSettings.Instance));
|
//Logger.Instance.LogMessage(TracingLevel.INFO, JsonConvert.SerializeObject(GlobalSettings.Instance));
|
||||||
|
|
||||||
await Connection.SetGlobalSettingsAsync(JObject.FromObject(GlobalSettings.Instance));
|
await Connection.SetGlobalSettingsAsync(JObject.FromObject(GlobalSettings.Instance));
|
||||||
await Connection.SwitchProfileAsync("ClipTrim");
|
await Connection.SwitchProfileAsync("ClipTrim");
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void KeyReleased(KeyPayload payload)
|
public override void KeyReleased(KeyPayload payload)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnTick()
|
public override void OnTick()
|
||||||
{
|
{
|
||||||
SetTitle();
|
SetTitle();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void ReceivedSettings(ReceivedSettingsPayload payload)
|
public override void ReceivedSettings(ReceivedSettingsPayload payload)
|
||||||
{
|
{
|
||||||
Tools.AutoPopulateSettings(settings, payload.Settings);
|
Tools.AutoPopulateSettings(settings, payload.Settings);
|
||||||
SaveSettings();
|
SaveSettings();
|
||||||
//tTitle();
|
//tTitle();
|
||||||
//CheckFile();
|
//CheckFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void ReceivedGlobalSettings(ReceivedGlobalSettingsPayload payload)
|
public override void ReceivedGlobalSettings(ReceivedGlobalSettingsPayload payload)
|
||||||
{
|
{
|
||||||
//Logger.Instance.LogMessage(TracingLevel.INFO, "ReceivedGlobalSettings");
|
//Logger.Instance.LogMessage(TracingLevel.INFO, "ReceivedGlobalSettings");
|
||||||
|
|
||||||
if (payload.Settings == null || payload.Settings.Count == 0)
|
if (payload.Settings == null || payload.Settings.Count == 0)
|
||||||
{
|
{
|
||||||
var inst = GlobalSettings.Instance;
|
var inst = GlobalSettings.Instance;
|
||||||
//GlobalSettingsManager.Instance.SetGlobalSettings(JObject.FromObject(inst));
|
//GlobalSettingsManager.Instance.SetGlobalSettings(JObject.FromObject(inst));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GlobalSettings.Instance = payload.Settings.ToObject<GlobalSettings>();
|
GlobalSettings.Instance = payload.Settings.ToObject<GlobalSettings>();
|
||||||
}
|
}
|
||||||
|
|
||||||
//CheckFile();
|
//CheckFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Private Methods
|
#region Private Methods
|
||||||
|
|
||||||
private Task SaveSettings()
|
private Task SaveSettings()
|
||||||
{
|
{
|
||||||
return Connection.SetSettingsAsync(JObject.FromObject(settings));
|
return Connection.SetSettingsAsync(JObject.FromObject(settings));
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,20 +1,20 @@
|
|||||||
using BarRaider.SdTools;
|
using BarRaider.SdTools;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace ClipTrimDotNet
|
namespace ClipTrimDotNet
|
||||||
{
|
{
|
||||||
internal class Program
|
internal class Program
|
||||||
{
|
{
|
||||||
static void Main(string[] args)
|
static void Main(string[] args)
|
||||||
{
|
{
|
||||||
// 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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,13 +1,13 @@
|
|||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
// Setting ComVisible to false makes the types in this assembly not visible
|
// Setting ComVisible to false makes the types in this assembly not visible
|
||||||
// to COM components. If you need to access a type in this assembly from
|
// to COM components. If you need to access a type in this assembly from
|
||||||
// COM, set the ComVisible attribute to true on that type.
|
// COM, set the ComVisible attribute to true on that type.
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||||
[assembly: Guid("1bb90885-9d98-46ef-b983-4a4ef3aea890")]
|
[assembly: Guid("1bb90885-9d98-46ef-b983-4a4ef3aea890")]
|
||||||
|
|||||||
@ -1,45 +1,45 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
|
||||||
<head lang="en">
|
<head lang="en">
|
||||||
<title>Increment Counter Settings</title>
|
<title>Increment Counter Settings</title>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<script src="https://sdpi-components.dev/releases/v3/sdpi-components.js"></script>
|
<script src="https://sdpi-components.dev/releases/v3/sdpi-components.js"></script>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<!--
|
<!--
|
||||||
Learn more about property inspector components at https://sdpi-components.dev/docs/components
|
Learn more about property inspector components at https://sdpi-components.dev/docs/components
|
||||||
-->
|
-->
|
||||||
<sdpi-item label="Index">
|
<sdpi-item label="Index">
|
||||||
<sdpi-select setting="index" placeholder="file index">
|
<sdpi-select setting="index" placeholder="file index">
|
||||||
<option value="0">0</option>
|
<option value="0">0</option>
|
||||||
<option value="1">1</option>
|
<option value="1">1</option>
|
||||||
<option value="2">2</option>
|
<option value="2">2</option>
|
||||||
<option value="3">3</option>
|
<option value="3">3</option>
|
||||||
<option value="4">4</option>
|
<option value="4">4</option>
|
||||||
<option value="5">5</option>
|
<option value="5">5</option>
|
||||||
<option value="6">6</option>
|
<option value="6">6</option>
|
||||||
<option value="7">7</option>
|
<option value="7">7</option>
|
||||||
<option value="8">8</option>
|
<option value="8">8</option>
|
||||||
<option value="9">9</option>
|
<option value="9">9</option>
|
||||||
<option value="10">10</option>
|
<option value="10">10</option>
|
||||||
<option value="11">11</option>
|
<option value="11">11</option>
|
||||||
<option value="12">12</option>
|
<option value="12">12</option>
|
||||||
<option value="13">13</option>
|
<option value="13">13</option>
|
||||||
<option value="14">14</option>
|
<option value="14">14</option>
|
||||||
<option value="15">15</option>
|
<option value="15">15</option>
|
||||||
</sdpi-select>
|
</sdpi-select>
|
||||||
</sdpi-item>
|
</sdpi-item>
|
||||||
<sdpi-item label="Play Mode">
|
<sdpi-item label="Play Mode">
|
||||||
<sdpi-select setting="playtype" placeholder="Play Mode">
|
<sdpi-select setting="playtype" placeholder="Play Mode">
|
||||||
<option value="Play/Overlap">Play/Overlap</option>
|
<option value="Play/Overlap">Play/Overlap</option>
|
||||||
<option value="Play/Stop">Play/Stop</option>
|
<option value="Play/Stop">Play/Stop</option>
|
||||||
</sdpi-select>
|
</sdpi-select>
|
||||||
</sdpi-item>
|
</sdpi-item>
|
||||||
<sdpi-item label="Volume">
|
<sdpi-item label="Volume">
|
||||||
<sdpi-range setting="volume" min=".1" max="1" , step="0.05"></sdpi-range>
|
<sdpi-range setting="volume" min=".1" max="1" , step="0.05"></sdpi-range>
|
||||||
</sdpi-item>
|
</sdpi-item>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
@ -1,34 +1,34 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
<head lang="en">
|
<head lang="en">
|
||||||
<title>Increment Counter Settings</title>
|
<title>Increment Counter Settings</title>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<script src="https://sdpi-components.dev/releases/v3/sdpi-components.js"></script>
|
<script src="https://sdpi-components.dev/releases/v3/sdpi-components.js"></script>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<!--
|
<!--
|
||||||
Learn more about property inspector components at https://sdpi-components.dev/docs/components
|
Learn more about property inspector components at https://sdpi-components.dev/docs/components
|
||||||
-->
|
-->
|
||||||
<sdpi-item label="Profile Name">
|
<sdpi-item label="Profile Name">
|
||||||
<sdpi-select setting="profileName"
|
<sdpi-select setting="profileName"
|
||||||
datasource="getProfiles"
|
datasource="getProfiles"
|
||||||
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 label="Base Path">
|
<sdpi-item label="Base Path">
|
||||||
<sdpi-file setting="basePath"
|
<sdpi-file setting="basePath"
|
||||||
global="true"
|
global="true"
|
||||||
webkitdirectory
|
webkitdirectory
|
||||||
directory
|
directory
|
||||||
multiple></sdpi-file>
|
multiple></sdpi-file>
|
||||||
</sdpi-item>
|
</sdpi-item>
|
||||||
<sdpi-item label="Output Device">
|
<sdpi-item label="Output Device">
|
||||||
<sdpi-select setting="outputDevice"
|
<sdpi-select setting="outputDevice"
|
||||||
global="true"
|
global="true"
|
||||||
datasource="getOutputDevices"
|
datasource="getOutputDevices"
|
||||||
show-refresh="true"
|
show-refresh="true"
|
||||||
placeholder="Select an Ouput Device"></sdpi-select>
|
placeholder="Select an Ouput Device"></sdpi-select>
|
||||||
</sdpi-item>
|
</sdpi-item>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@ -1,225 +1,225 @@
|
|||||||
//using System;
|
//using System;
|
||||||
//using System.Collections.Concurrent;
|
//using System.Collections.Concurrent;
|
||||||
//using System.Collections.Generic;
|
//using System.Collections.Generic;
|
||||||
//using System.Linq;
|
//using System.Linq;
|
||||||
//using System.ServiceModel.Security;
|
//using System.ServiceModel.Security;
|
||||||
//using System.Threading.Tasks;
|
//using System.Threading.Tasks;
|
||||||
//using BarRaider.SdTools;
|
//using BarRaider.SdTools;
|
||||||
//using NAudio.Wave;
|
//using NAudio.Wave;
|
||||||
//using NAudio.Wave.SampleProviders;
|
//using NAudio.Wave.SampleProviders;
|
||||||
//using Newtonsoft.Json;
|
//using Newtonsoft.Json;
|
||||||
|
|
||||||
//class CachedSound
|
//class CachedSound
|
||||||
//{
|
//{
|
||||||
// public byte[] AudioData { get; private set; }
|
// public byte[] AudioData { get; private set; }
|
||||||
// public WaveFormat WaveFormat { get; private set; }
|
// public WaveFormat WaveFormat { get; private set; }
|
||||||
// public CachedSound(string audioFileName)
|
// public CachedSound(string audioFileName)
|
||||||
// {
|
// {
|
||||||
// using (var audioFileReader = new AudioFileReader(audioFileName))
|
// using (var audioFileReader = new AudioFileReader(audioFileName))
|
||||||
// {
|
// {
|
||||||
// // TODO: could add resampling in here if required
|
// // TODO: could add resampling in here if required
|
||||||
// WaveFormat = audioFileReader.WaveFormat;
|
// WaveFormat = audioFileReader.WaveFormat;
|
||||||
// var wholeFile = new List<byte>((int)(audioFileReader.Length));
|
// var wholeFile = new List<byte>((int)(audioFileReader.Length));
|
||||||
// var readBuffer = new byte[audioFileReader.WaveFormat.SampleRate * audioFileReader.WaveFormat.Channels*4];
|
// var readBuffer = new byte[audioFileReader.WaveFormat.SampleRate * audioFileReader.WaveFormat.Channels*4];
|
||||||
// int samplesRead;
|
// int samplesRead;
|
||||||
// while ((samplesRead = audioFileReader.Read(readBuffer, 0, readBuffer.Length)) > 0)
|
// while ((samplesRead = audioFileReader.Read(readBuffer, 0, readBuffer.Length)) > 0)
|
||||||
// {
|
// {
|
||||||
// wholeFile.AddRange(readBuffer.Take(samplesRead));
|
// wholeFile.AddRange(readBuffer.Take(samplesRead));
|
||||||
// }
|
// }
|
||||||
// AudioData = wholeFile.ToArray();
|
// AudioData = wholeFile.ToArray();
|
||||||
// }
|
// }
|
||||||
// //Logger.Instance.LogMessage(TracingLevel.INFO, $"AudioData Length {AudioData.Length}");
|
// //Logger.Instance.LogMessage(TracingLevel.INFO, $"AudioData Length {AudioData.Length}");
|
||||||
|
|
||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
//class CachedSoundSampleProvider : IWaveProvider
|
//class CachedSoundSampleProvider : IWaveProvider
|
||||||
//{
|
//{
|
||||||
// private readonly CachedSound cachedSound;
|
// private readonly CachedSound cachedSound;
|
||||||
// private long position;
|
// private long position;
|
||||||
|
|
||||||
// ~CachedSoundSampleProvider() {
|
// ~CachedSoundSampleProvider() {
|
||||||
// //Logger.Instance.LogMessage(TracingLevel.INFO, $"Cache destructor");
|
// //Logger.Instance.LogMessage(TracingLevel.INFO, $"Cache destructor");
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// public CachedSoundSampleProvider(CachedSound cachedSound)
|
// public CachedSoundSampleProvider(CachedSound cachedSound)
|
||||||
// {
|
// {
|
||||||
// this.cachedSound = cachedSound;
|
// this.cachedSound = cachedSound;
|
||||||
// position = 0;
|
// position = 0;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// public int Read(byte[] buffer, int offset, int count)
|
// public int Read(byte[] buffer, int offset, int count)
|
||||||
// {
|
// {
|
||||||
// //Logger.Instance.LogMessage(TracingLevel.INFO, $"Read1 byte");
|
// //Logger.Instance.LogMessage(TracingLevel.INFO, $"Read1 byte");
|
||||||
// var availableSamples = cachedSound.AudioData.Length - position;
|
// var availableSamples = cachedSound.AudioData.Length - position;
|
||||||
// var samplesToCopy = Math.Min(availableSamples, count);
|
// var samplesToCopy = Math.Min(availableSamples, count);
|
||||||
// try
|
// try
|
||||||
// {
|
// {
|
||||||
// //Logger.Instance.LogMessage(TracingLevel.INFO, $"{cachedSound.AudioData.GetType()} {buffer.GetType()}");
|
// //Logger.Instance.LogMessage(TracingLevel.INFO, $"{cachedSound.AudioData.GetType()} {buffer.GetType()}");
|
||||||
// Array.Copy(cachedSound.AudioData, position, buffer, offset, samplesToCopy);
|
// Array.Copy(cachedSound.AudioData, position, buffer, offset, samplesToCopy);
|
||||||
// }
|
// }
|
||||||
// catch (Exception ex)
|
// catch (Exception ex)
|
||||||
// {
|
// {
|
||||||
// //Logger.Instance.LogMessage(TracingLevel.INFO, $"{ex.ToString()}");
|
// //Logger.Instance.LogMessage(TracingLevel.INFO, $"{ex.ToString()}");
|
||||||
// }
|
// }
|
||||||
// //Logger.Instance.LogMessage(TracingLevel.INFO, $"Read3");
|
// //Logger.Instance.LogMessage(TracingLevel.INFO, $"Read3");
|
||||||
// position += samplesToCopy;
|
// position += samplesToCopy;
|
||||||
// //Logger.Instance.LogMessage(TracingLevel.INFO, $"Sending {samplesToCopy} samples");
|
// //Logger.Instance.LogMessage(TracingLevel.INFO, $"Sending {samplesToCopy} samples");
|
||||||
// return (int)samplesToCopy;
|
// return (int)samplesToCopy;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// public WaveFormat WaveFormat => cachedSound.WaveFormat;
|
// public WaveFormat WaveFormat => cachedSound.WaveFormat;
|
||||||
//}
|
//}
|
||||||
|
|
||||||
//public class WavPlayer
|
//public class WavPlayer
|
||||||
//{
|
//{
|
||||||
// private static WavPlayer? instance;
|
// private static WavPlayer? instance;
|
||||||
// public static WavPlayer Instance
|
// public static WavPlayer Instance
|
||||||
// {
|
// {
|
||||||
// get
|
// get
|
||||||
// {
|
// {
|
||||||
// instance ??= new WavPlayer();
|
// instance ??= new WavPlayer();
|
||||||
// return instance;
|
// return instance;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// }
|
// }
|
||||||
// public enum PlayMode
|
// public enum PlayMode
|
||||||
// {
|
// {
|
||||||
// PlayOverlap,
|
// PlayOverlap,
|
||||||
// PlayStop
|
// PlayStop
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// private readonly ConcurrentDictionary<string, List<Tuple<WaveOutEvent, IWaveProvider>>> _activePlayers;
|
// private readonly ConcurrentDictionary<string, List<Tuple<WaveOutEvent, IWaveProvider>>> _activePlayers;
|
||||||
|
|
||||||
// public WavPlayer()
|
// public WavPlayer()
|
||||||
// {
|
// {
|
||||||
// _activePlayers = new ConcurrentDictionary<string, List<Tuple<WaveOutEvent, IWaveProvider>>>();
|
// _activePlayers = new ConcurrentDictionary<string, List<Tuple<WaveOutEvent, IWaveProvider>>>();
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// public void Play(string filePath, string id, double volume, PlayMode mode)
|
// public void Play(string filePath, string id, double volume, PlayMode mode)
|
||||||
// {
|
// {
|
||||||
// if (string.IsNullOrWhiteSpace(filePath))
|
// if (string.IsNullOrWhiteSpace(filePath))
|
||||||
// throw new ArgumentException("File path cannot be null or empty.", nameof(filePath));
|
// throw new ArgumentException("File path cannot be null or empty.", nameof(filePath));
|
||||||
|
|
||||||
// if (mode == PlayMode.PlayOverlap)
|
// if (mode == PlayMode.PlayOverlap)
|
||||||
// {
|
// {
|
||||||
// PlayWithOverlap(filePath, id, volume);
|
// PlayWithOverlap(filePath, id, volume);
|
||||||
// }
|
// }
|
||||||
// else if (mode == PlayMode.PlayStop)
|
// else if (mode == PlayMode.PlayStop)
|
||||||
// {
|
// {
|
||||||
// PlayWithStop(filePath, id, volume);
|
// PlayWithStop(filePath, id, volume);
|
||||||
// }
|
// }
|
||||||
// else
|
// else
|
||||||
// {
|
// {
|
||||||
// throw new ArgumentOutOfRangeException(nameof(mode), "Invalid play mode specified.");
|
// throw new ArgumentOutOfRangeException(nameof(mode), "Invalid play mode specified.");
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// private void PlayWithOverlap(string filePath, string id, double volume)
|
// private void PlayWithOverlap(string filePath, string id, double volume)
|
||||||
// {
|
// {
|
||||||
|
|
||||||
// try
|
// try
|
||||||
// {
|
// {
|
||||||
// //Logger.Instance.LogMessage(TracingLevel.INFO, "Play overlap");
|
// //Logger.Instance.LogMessage(TracingLevel.INFO, "Play overlap");
|
||||||
// var player = CreatePlayer(filePath, id);
|
// var player = CreatePlayer(filePath, id);
|
||||||
|
|
||||||
// if (!_activePlayers.ContainsKey(filePath))
|
// if (!_activePlayers.ContainsKey(filePath))
|
||||||
// {
|
// {
|
||||||
// _activePlayers[filePath] = new List<Tuple<WaveOutEvent, IWaveProvider>>();
|
// _activePlayers[filePath] = new List<Tuple<WaveOutEvent, IWaveProvider>>();
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// _activePlayers[filePath].Add(player);
|
// _activePlayers[filePath].Add(player);
|
||||||
// player.Item1.Volume = (float)volume;
|
// player.Item1.Volume = (float)volume;
|
||||||
// player.Item1.Play();
|
// player.Item1.Play();
|
||||||
// }
|
// }
|
||||||
// catch(Exception ex)
|
// catch(Exception ex)
|
||||||
// {
|
// {
|
||||||
// //Logger.Instance.LogMessage(TracingLevel.INFO, ex.ToString());
|
// //Logger.Instance.LogMessage(TracingLevel.INFO, ex.ToString());
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// //var playersToDispose = _activePlayers[filePath].Where(x => x.Item1.PlaybackState == PlaybackState.Stopped).ToList();
|
// //var playersToDispose = _activePlayers[filePath].Where(x => x.Item1.PlaybackState == PlaybackState.Stopped).ToList();
|
||||||
// //foreach (var p in playersToDispose)
|
// //foreach (var p in playersToDispose)
|
||||||
// //{
|
// //{
|
||||||
// // p.Item1.Stop();
|
// // p.Item1.Stop();
|
||||||
// // p.Item1.Dispose();
|
// // p.Item1.Dispose();
|
||||||
// //}
|
// //}
|
||||||
// //_activePlayers[filePath].RemoveAll(x => x.Item1.PlaybackState == PlaybackState.Stopped);
|
// //_activePlayers[filePath].RemoveAll(x => x.Item1.PlaybackState == PlaybackState.Stopped);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// private void PlayWithStop(string filePath, string id, double volume)
|
// private void PlayWithStop(string filePath, string id, double volume)
|
||||||
// {
|
// {
|
||||||
// if (_activePlayers.TryGetValue(filePath, out var players))
|
// if (_activePlayers.TryGetValue(filePath, out var players))
|
||||||
// {
|
// {
|
||||||
|
|
||||||
// // Stop and dispose all current players for this file
|
// // Stop and dispose all current players for this file
|
||||||
// if (players.Any(x => x.Item1.PlaybackState == PlaybackState.Playing))
|
// if (players.Any(x => x.Item1.PlaybackState == PlaybackState.Playing))
|
||||||
// {
|
// {
|
||||||
// var playersToDispose = players.ToList();
|
// var playersToDispose = players.ToList();
|
||||||
// foreach (var player in playersToDispose)
|
// foreach (var player in playersToDispose)
|
||||||
// {
|
// {
|
||||||
// player.Item1.Stop();
|
// player.Item1.Stop();
|
||||||
// player.Item1.Dispose();
|
// player.Item1.Dispose();
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
// else
|
// else
|
||||||
// {
|
// {
|
||||||
// PlayWithOverlap(filePath, id, volume);
|
// PlayWithOverlap(filePath, id, volume);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// }
|
// }
|
||||||
// else
|
// else
|
||||||
// {
|
// {
|
||||||
// // Start a new player
|
// // Start a new player
|
||||||
// PlayWithOverlap(filePath, id, volume);
|
// PlayWithOverlap(filePath, id, volume);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// _activePlayers[filePath].RemoveAll(x => x.Item1.PlaybackState == PlaybackState.Stopped);
|
// _activePlayers[filePath].RemoveAll(x => x.Item1.PlaybackState == PlaybackState.Stopped);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// private Tuple<WaveOutEvent, IWaveProvider> CreatePlayer(string filePath, string name)
|
// private Tuple<WaveOutEvent, IWaveProvider> CreatePlayer(string filePath, string name)
|
||||||
// {
|
// {
|
||||||
// var reader = new CachedSoundSampleProvider(new CachedSound(filePath));
|
// var reader = new CachedSoundSampleProvider(new CachedSound(filePath));
|
||||||
// //var reader = new AudioFileReader(filePath);
|
// //var reader = new AudioFileReader(filePath);
|
||||||
// int number = -1;
|
// int number = -1;
|
||||||
// for (int i = 0; i < WaveOut.DeviceCount; ++i)
|
// for (int i = 0; i < WaveOut.DeviceCount; ++i)
|
||||||
// {
|
// {
|
||||||
// if (WaveOut.GetCapabilities(i).ProductName == name)
|
// if (WaveOut.GetCapabilities(i).ProductName == name)
|
||||||
// {
|
// {
|
||||||
// number = i;
|
// number = i;
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
// var player = new WaveOutEvent() { DeviceNumber = number };
|
// var player = new WaveOutEvent() { DeviceNumber = number };
|
||||||
// player.Init(reader);
|
// player.Init(reader);
|
||||||
// return new Tuple<WaveOutEvent, IWaveProvider>(player, reader);
|
// return new Tuple<WaveOutEvent, IWaveProvider>(player, reader);
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// private void CleanupPlayer(string filePath)
|
// private void CleanupPlayer(string filePath)
|
||||||
// {
|
// {
|
||||||
// if (_activePlayers.TryGetValue(filePath, out var players))
|
// if (_activePlayers.TryGetValue(filePath, out var players))
|
||||||
// {
|
// {
|
||||||
// var playersToDispose = players.ToList();
|
// var playersToDispose = players.ToList();
|
||||||
// foreach (var p in playersToDispose)
|
// foreach (var p in playersToDispose)
|
||||||
// {
|
// {
|
||||||
// p.Item1.Stop();
|
// p.Item1.Stop();
|
||||||
// p.Item1.Dispose();
|
// p.Item1.Dispose();
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
// _activePlayers[filePath].RemoveAll(x => x.Item1.PlaybackState == PlaybackState.Stopped);
|
// _activePlayers[filePath].RemoveAll(x => x.Item1.PlaybackState == PlaybackState.Stopped);
|
||||||
|
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// public void StopAll()
|
// public void StopAll()
|
||||||
// {
|
// {
|
||||||
// foreach (var players in _activePlayers.Values)
|
// foreach (var players in _activePlayers.Values)
|
||||||
// {
|
// {
|
||||||
// var playersToDispose = players.ToList();
|
// var playersToDispose = players.ToList();
|
||||||
// foreach (var player in playersToDispose)
|
// foreach (var player in playersToDispose)
|
||||||
// {
|
// {
|
||||||
// player.Item1.Stop();
|
// player.Item1.Stop();
|
||||||
// player.Item1.Dispose();
|
// player.Item1.Dispose();
|
||||||
// }
|
// }
|
||||||
// players.Clear();
|
// players.Clear();
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// _activePlayers.Clear();
|
// _activePlayers.Clear();
|
||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
|
|||||||
@ -1,62 +1,62 @@
|
|||||||
{
|
{
|
||||||
|
|
||||||
"Actions": [
|
"Actions": [
|
||||||
{
|
{
|
||||||
"Icon": "Images/icon",
|
"Icon": "Images/icon",
|
||||||
"Name": "Player",
|
"Name": "Player",
|
||||||
"States": [
|
"States": [
|
||||||
{
|
{
|
||||||
"Image": "Images/pluginAction",
|
"Image": "Images/pluginAction",
|
||||||
"TitleAlignment": "middle",
|
"TitleAlignment": "middle",
|
||||||
"FontSize": 11
|
"FontSize": 11
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"SupportedInMultiActions": false,
|
"SupportedInMultiActions": false,
|
||||||
"Tooltip": "Plays a bound audio file",
|
"Tooltip": "Plays a bound audio file",
|
||||||
"UUID": "com.michal-courson.cliptrim.player",
|
"UUID": "com.michal-courson.cliptrim.player",
|
||||||
"PropertyInspectorPath": "PropertyInspector/file_player.html"
|
"PropertyInspectorPath": "PropertyInspector/file_player.html"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Icon": "Images/icon",
|
"Icon": "Images/icon",
|
||||||
"Name": "Profile Switcher",
|
"Name": "Profile Switcher",
|
||||||
"States": [
|
"States": [
|
||||||
{
|
{
|
||||||
"Image": "Images/pluginAction",
|
"Image": "Images/pluginAction",
|
||||||
"TitleAlignment": "middle",
|
"TitleAlignment": "middle",
|
||||||
"FontSize": 11
|
"FontSize": 11
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"SupportedInMultiActions": false,
|
"SupportedInMultiActions": false,
|
||||||
"Tooltip": "Selects which sub folder to use and opens effect profile",
|
"Tooltip": "Selects which sub folder to use and opens effect profile",
|
||||||
"UUID": "com.michal-courson.cliptrim.profile-switcher",
|
"UUID": "com.michal-courson.cliptrim.profile-switcher",
|
||||||
"PropertyInspectorPath": "PropertyInspector/profile_swticher.html"
|
"PropertyInspectorPath": "PropertyInspector/profile_swticher.html"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"Author": "Michal Courson",
|
"Author": "Michal Courson",
|
||||||
"Name": "ClipTrimDotNet",
|
"Name": "ClipTrimDotNet",
|
||||||
"Description": "Pairs with cliptrim for easy voice recording and trimming",
|
"Description": "Pairs with cliptrim for easy voice recording and trimming",
|
||||||
"Icon": "Images/pluginIcon",
|
"Icon": "Images/pluginIcon",
|
||||||
"Version": "0.1.0.0",
|
"Version": "0.1.0.0",
|
||||||
"CodePath": "ClipTrimDotNet.exe",
|
"CodePath": "ClipTrimDotNet.exe",
|
||||||
"Category": "ClipTrimDotNet",
|
"Category": "ClipTrimDotNet",
|
||||||
"CategoryIcon": "Images/categoryIcon",
|
"CategoryIcon": "Images/categoryIcon",
|
||||||
"UUID": "com.michal-courson.cliptrim",
|
"UUID": "com.michal-courson.cliptrim",
|
||||||
"OS": [
|
"OS": [
|
||||||
{
|
{
|
||||||
"Platform": "windows",
|
"Platform": "windows",
|
||||||
"MinimumVersion": "10"
|
"MinimumVersion": "10"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"SDKVersion": 2,
|
"SDKVersion": 2,
|
||||||
"Software": {
|
"Software": {
|
||||||
"MinimumVersion": "6.4"
|
"MinimumVersion": "6.4"
|
||||||
},
|
},
|
||||||
"Profiles": [
|
"Profiles": [
|
||||||
{
|
{
|
||||||
"Name": "ClipTrim",
|
"Name": "ClipTrim",
|
||||||
"DeviceType": 0,
|
"DeviceType": 0,
|
||||||
"Readonly": false,
|
"Readonly": false,
|
||||||
"DontAutoSwitchWhenInstalled": false
|
"DontAutoSwitchWhenInstalled": false
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
544
stream_deck_plugin/ClipTrimDotNet/package-lock.json
generated
544
stream_deck_plugin/ClipTrimDotNet/package-lock.json
generated
@ -1,272 +1,272 @@
|
|||||||
{
|
{
|
||||||
"name": "ClipTrimDotNet",
|
"name": "ClipTrimDotNet",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"shx": "^0.3.4"
|
"shx": "^0.3.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/balanced-match": {
|
"node_modules/balanced-match": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
|
||||||
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
|
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/brace-expansion": {
|
"node_modules/brace-expansion": {
|
||||||
"version": "1.1.11",
|
"version": "1.1.11",
|
||||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"balanced-match": "^1.0.0",
|
"balanced-match": "^1.0.0",
|
||||||
"concat-map": "0.0.1"
|
"concat-map": "0.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/concat-map": {
|
"node_modules/concat-map": {
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||||
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
|
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/fs.realpath": {
|
"node_modules/fs.realpath": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
|
||||||
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
|
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
"node_modules/function-bind": {
|
"node_modules/function-bind": {
|
||||||
"version": "1.1.2",
|
"version": "1.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
|
||||||
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
|
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/glob": {
|
"node_modules/glob": {
|
||||||
"version": "7.2.3",
|
"version": "7.2.3",
|
||||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
|
||||||
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
|
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
|
||||||
"deprecated": "Glob versions prior to v9 are no longer supported",
|
"deprecated": "Glob versions prior to v9 are no longer supported",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"fs.realpath": "^1.0.0",
|
"fs.realpath": "^1.0.0",
|
||||||
"inflight": "^1.0.4",
|
"inflight": "^1.0.4",
|
||||||
"inherits": "2",
|
"inherits": "2",
|
||||||
"minimatch": "^3.1.1",
|
"minimatch": "^3.1.1",
|
||||||
"once": "^1.3.0",
|
"once": "^1.3.0",
|
||||||
"path-is-absolute": "^1.0.0"
|
"path-is-absolute": "^1.0.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "*"
|
"node": "*"
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/isaacs"
|
"url": "https://github.com/sponsors/isaacs"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/hasown": {
|
"node_modules/hasown": {
|
||||||
"version": "2.0.2",
|
"version": "2.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
|
||||||
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
|
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"function-bind": "^1.1.2"
|
"function-bind": "^1.1.2"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/inflight": {
|
"node_modules/inflight": {
|
||||||
"version": "1.0.6",
|
"version": "1.0.6",
|
||||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||||
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
|
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
|
||||||
"deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
|
"deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"once": "^1.3.0",
|
"once": "^1.3.0",
|
||||||
"wrappy": "1"
|
"wrappy": "1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/inherits": {
|
"node_modules/inherits": {
|
||||||
"version": "2.0.4",
|
"version": "2.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||||
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
"node_modules/interpret": {
|
"node_modules/interpret": {
|
||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
|
||||||
"integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
|
"integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.10"
|
"node": ">= 0.10"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/is-core-module": {
|
"node_modules/is-core-module": {
|
||||||
"version": "2.16.1",
|
"version": "2.16.1",
|
||||||
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
|
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
|
||||||
"integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
|
"integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"hasown": "^2.0.2"
|
"hasown": "^2.0.2"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/minimatch": {
|
"node_modules/minimatch": {
|
||||||
"version": "3.1.2",
|
"version": "3.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
||||||
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"brace-expansion": "^1.1.7"
|
"brace-expansion": "^1.1.7"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "*"
|
"node": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/minimist": {
|
"node_modules/minimist": {
|
||||||
"version": "1.2.8",
|
"version": "1.2.8",
|
||||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
|
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
|
||||||
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
|
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/once": {
|
"node_modules/once": {
|
||||||
"version": "1.4.0",
|
"version": "1.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||||
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
|
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"wrappy": "1"
|
"wrappy": "1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/path-is-absolute": {
|
"node_modules/path-is-absolute": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
||||||
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
|
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/path-parse": {
|
"node_modules/path-parse": {
|
||||||
"version": "1.0.7",
|
"version": "1.0.7",
|
||||||
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
|
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
|
||||||
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
|
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/rechoir": {
|
"node_modules/rechoir": {
|
||||||
"version": "0.6.2",
|
"version": "0.6.2",
|
||||||
"resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
|
"resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
|
||||||
"integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
|
"integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"resolve": "^1.1.6"
|
"resolve": "^1.1.6"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.10"
|
"node": ">= 0.10"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/resolve": {
|
"node_modules/resolve": {
|
||||||
"version": "1.22.10",
|
"version": "1.22.10",
|
||||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
|
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
|
||||||
"integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
|
"integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"is-core-module": "^2.16.0",
|
"is-core-module": "^2.16.0",
|
||||||
"path-parse": "^1.0.7",
|
"path-parse": "^1.0.7",
|
||||||
"supports-preserve-symlinks-flag": "^1.0.0"
|
"supports-preserve-symlinks-flag": "^1.0.0"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"resolve": "bin/resolve"
|
"resolve": "bin/resolve"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/shelljs": {
|
"node_modules/shelljs": {
|
||||||
"version": "0.8.5",
|
"version": "0.8.5",
|
||||||
"resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
|
"resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
|
||||||
"integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
|
"integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "BSD-3-Clause",
|
"license": "BSD-3-Clause",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"glob": "^7.0.0",
|
"glob": "^7.0.0",
|
||||||
"interpret": "^1.0.0",
|
"interpret": "^1.0.0",
|
||||||
"rechoir": "^0.6.2"
|
"rechoir": "^0.6.2"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"shjs": "bin/shjs"
|
"shjs": "bin/shjs"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=4"
|
"node": ">=4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/shx": {
|
"node_modules/shx": {
|
||||||
"version": "0.3.4",
|
"version": "0.3.4",
|
||||||
"resolved": "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz",
|
"resolved": "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz",
|
||||||
"integrity": "sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==",
|
"integrity": "sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"minimist": "^1.2.3",
|
"minimist": "^1.2.3",
|
||||||
"shelljs": "^0.8.5"
|
"shelljs": "^0.8.5"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
"shx": "lib/cli.js"
|
"shx": "lib/cli.js"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/supports-preserve-symlinks-flag": {
|
"node_modules/supports-preserve-symlinks-flag": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
|
||||||
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
|
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.4"
|
"node": ">= 0.4"
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://github.com/sponsors/ljharb"
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/wrappy": {
|
"node_modules/wrappy": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||||
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
|
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,14 +1,14 @@
|
|||||||
{
|
{
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"stop": "streamdeck stop com.michal-courson.cliptrim",
|
"stop": "streamdeck stop com.michal-courson.cliptrim",
|
||||||
"copy": "@powershell robocopy bin/Debug/ClipTrimDotNet.sdPlugin bin/Debug/com.michal-courson.cliptrim.sdPlugin/net8.0-windows",
|
"copy": "@powershell robocopy bin/Debug/ClipTrimDotNet.sdPlugin bin/Debug/com.michal-courson.cliptrim.sdPlugin/net8.0-windows",
|
||||||
"link": "streamdeck link bin/Debug/com.michal-courson.cliptrim.sdPlugin",
|
"link": "streamdeck link bin/Debug/com.michal-courson.cliptrim.sdPlugin",
|
||||||
"restart": "streamdeck restart com.michal-courson.cliptrim",
|
"restart": "streamdeck restart com.michal-courson.cliptrim",
|
||||||
"start": "npm run link && npm run restart",
|
"start": "npm run link && npm run restart",
|
||||||
"all": "npm run stop && npm run copy && npm run link && npm run restart",
|
"all": "npm run stop && npm run copy && npm run link && npm run restart",
|
||||||
"pack": "streamdeck pack bin/Debug/com.michal-courson.cliptrim.sdPlugin/net8.0-windows/"
|
"pack": "streamdeck pack bin/Debug/com.michal-courson.cliptrim.sdPlugin/net8.0-windows/"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"shx": "^0.3.4"
|
"shx": "^0.3.4"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,46 +1,46 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="CommandLineParser" version="2.9.1" targetFramework="net472" />
|
<package id="CommandLineParser" version="2.9.1" targetFramework="net472" />
|
||||||
<package id="Microsoft.Bcl.AsyncInterfaces" version="10.0.2" targetFramework="net48" />
|
<package id="Microsoft.Bcl.AsyncInterfaces" version="10.0.2" targetFramework="net48" />
|
||||||
<package id="Microsoft.Extensions.DependencyInjection" version="10.0.2" targetFramework="net48" />
|
<package id="Microsoft.Extensions.DependencyInjection" version="10.0.2" targetFramework="net48" />
|
||||||
<package id="Microsoft.Extensions.DependencyInjection.Abstractions" version="10.0.2" targetFramework="net48" />
|
<package id="Microsoft.Extensions.DependencyInjection.Abstractions" version="10.0.2" targetFramework="net48" />
|
||||||
<package id="Microsoft.Extensions.Logging" version="10.0.2" targetFramework="net48" />
|
<package id="Microsoft.Extensions.Logging" version="10.0.2" targetFramework="net48" />
|
||||||
<package id="Microsoft.Extensions.Logging.Abstractions" version="10.0.2" targetFramework="net48" />
|
<package id="Microsoft.Extensions.Logging.Abstractions" version="10.0.2" targetFramework="net48" />
|
||||||
<package id="Microsoft.Extensions.Options" version="10.0.2" targetFramework="net48" />
|
<package id="Microsoft.Extensions.Options" version="10.0.2" targetFramework="net48" />
|
||||||
<package id="Microsoft.Extensions.Primitives" version="10.0.2" targetFramework="net48" />
|
<package id="Microsoft.Extensions.Primitives" version="10.0.2" targetFramework="net48" />
|
||||||
<package id="Microsoft.Win32.Registry" version="4.7.0" targetFramework="net48" />
|
<package id="Microsoft.Win32.Registry" version="4.7.0" targetFramework="net48" />
|
||||||
<package id="NAudio" version="2.2.1" targetFramework="net48" />
|
<package id="NAudio" version="2.2.1" targetFramework="net48" />
|
||||||
<package id="NAudio.Asio" version="2.2.1" targetFramework="net48" />
|
<package id="NAudio.Asio" version="2.2.1" targetFramework="net48" />
|
||||||
<package id="NAudio.Core" version="2.2.1" targetFramework="net48" />
|
<package id="NAudio.Core" version="2.2.1" targetFramework="net48" />
|
||||||
<package id="NAudio.Midi" version="2.2.1" targetFramework="net48" />
|
<package id="NAudio.Midi" version="2.2.1" targetFramework="net48" />
|
||||||
<package id="NAudio.Wasapi" version="2.2.1" targetFramework="net48" />
|
<package id="NAudio.Wasapi" version="2.2.1" targetFramework="net48" />
|
||||||
<package id="NAudio.WinForms" version="2.2.1" targetFramework="net48" />
|
<package id="NAudio.WinForms" version="2.2.1" targetFramework="net48" />
|
||||||
<package id="NAudio.WinMM" version="2.2.1" targetFramework="net48" />
|
<package id="NAudio.WinMM" version="2.2.1" targetFramework="net48" />
|
||||||
<package id="Newtonsoft.Json" version="13.0.4" targetFramework="net48" />
|
<package id="Newtonsoft.Json" version="13.0.4" targetFramework="net48" />
|
||||||
<package id="NLog" version="6.0.5" targetFramework="net48" />
|
<package id="NLog" version="6.0.5" targetFramework="net48" />
|
||||||
<package id="SocketIOClient" version="4.0.0.2" targetFramework="net48" />
|
<package id="SocketIOClient" version="4.0.0.2" targetFramework="net48" />
|
||||||
<package id="SocketIOClient.Common" version="4.0.0" targetFramework="net48" />
|
<package id="SocketIOClient.Common" version="4.0.0" targetFramework="net48" />
|
||||||
<package id="SocketIOClient.Serializer" version="4.0.0.1" targetFramework="net48" />
|
<package id="SocketIOClient.Serializer" version="4.0.0.1" targetFramework="net48" />
|
||||||
<package id="SocketIOClient.Serializer.NewtonsoftJson" version="4.0.0.1" targetFramework="net48" />
|
<package id="SocketIOClient.Serializer.NewtonsoftJson" version="4.0.0.1" targetFramework="net48" />
|
||||||
<package id="StreamDeck-Tools" version="6.3.2" targetFramework="net48" />
|
<package id="StreamDeck-Tools" version="6.3.2" targetFramework="net48" />
|
||||||
<package id="System.Buffers" version="4.6.1" targetFramework="net48" />
|
<package id="System.Buffers" version="4.6.1" targetFramework="net48" />
|
||||||
<package id="System.Diagnostics.DiagnosticSource" version="10.0.2" targetFramework="net48" />
|
<package id="System.Diagnostics.DiagnosticSource" version="10.0.2" targetFramework="net48" />
|
||||||
<package id="System.Drawing.Common" version="9.0.10" targetFramework="net48" />
|
<package id="System.Drawing.Common" version="9.0.10" targetFramework="net48" />
|
||||||
<package id="System.IO" version="4.3.0" targetFramework="net48" />
|
<package id="System.IO" version="4.3.0" targetFramework="net48" />
|
||||||
<package id="System.IO.Pipelines" version="10.0.2" targetFramework="net48" />
|
<package id="System.IO.Pipelines" version="10.0.2" targetFramework="net48" />
|
||||||
<package id="System.Memory" version="4.6.3" targetFramework="net48" />
|
<package id="System.Memory" version="4.6.3" targetFramework="net48" />
|
||||||
<package id="System.Net.Http" version="4.3.4" targetFramework="net48" />
|
<package id="System.Net.Http" version="4.3.4" targetFramework="net48" />
|
||||||
<package id="System.Numerics.Vectors" version="4.6.1" targetFramework="net48" />
|
<package id="System.Numerics.Vectors" version="4.6.1" targetFramework="net48" />
|
||||||
<package id="System.Runtime" version="4.3.0" targetFramework="net48" />
|
<package id="System.Runtime" version="4.3.0" targetFramework="net48" />
|
||||||
<package id="System.Runtime.CompilerServices.Unsafe" version="6.1.2" targetFramework="net48" />
|
<package id="System.Runtime.CompilerServices.Unsafe" version="6.1.2" targetFramework="net48" />
|
||||||
<package id="System.Security.AccessControl" version="4.7.0" targetFramework="net48" />
|
<package id="System.Security.AccessControl" version="4.7.0" targetFramework="net48" />
|
||||||
<package id="System.Security.Cryptography.Algorithms" version="4.3.0" targetFramework="net48" />
|
<package id="System.Security.Cryptography.Algorithms" version="4.3.0" targetFramework="net48" />
|
||||||
<package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="net48" />
|
<package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="net48" />
|
||||||
<package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net48" />
|
<package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net48" />
|
||||||
<package id="System.Security.Cryptography.X509Certificates" version="4.3.0" targetFramework="net48" />
|
<package id="System.Security.Cryptography.X509Certificates" version="4.3.0" targetFramework="net48" />
|
||||||
<package id="System.Security.Principal.Windows" version="4.7.0" targetFramework="net48" />
|
<package id="System.Security.Principal.Windows" version="4.7.0" targetFramework="net48" />
|
||||||
<package id="System.Text.Encodings.Web" version="10.0.2" targetFramework="net48" />
|
<package id="System.Text.Encodings.Web" version="10.0.2" targetFramework="net48" />
|
||||||
<package id="System.Text.Json" version="10.0.2" targetFramework="net48" />
|
<package id="System.Text.Json" version="10.0.2" targetFramework="net48" />
|
||||||
<package id="System.Threading.Tasks.Extensions" version="4.6.3" targetFramework="net48" />
|
<package id="System.Threading.Tasks.Extensions" version="4.6.3" targetFramework="net48" />
|
||||||
<package id="System.ValueTuple" version="4.6.1" targetFramework="net48" />
|
<package id="System.ValueTuple" version="4.6.1" targetFramework="net48" />
|
||||||
</packages>
|
</packages>
|
||||||
Reference in New Issue
Block a user