diff --git a/Basis/Packages/com.basis.integration.ytdlp/Runtime/BasisYtDlpResolver.cs b/Basis/Packages/com.basis.integration.ytdlp/Runtime/BasisYtDlpResolver.cs index a96d98421..47b9b01ae 100644 --- a/Basis/Packages/com.basis.integration.ytdlp/Runtime/BasisYtDlpResolver.cs +++ b/Basis/Packages/com.basis.integration.ytdlp/Runtime/BasisYtDlpResolver.cs @@ -96,6 +96,21 @@ public static async Task ResolveSourceAsync(string pageUrl, Ca BasisMediaSource source = SelectSource(info); if (source == null || string.IsNullOrEmpty(source.Uri)) throw new YtDlpException($"yt-dlp returned no player-ingestible format for '{BasisMediaUrlRouter.Redact(pageUrl)}'."); + // Carry display metadata on the source: the player keys its metadata on + // the page URL (matching what networking syncs, not the per-client CDN + // endpoint) and shows the real title. Everything here comes from the + // extraction that just ran — no extra fetch. + source.Metadata = new BasisMediaMetadata + { + SourceUrl = pageUrl, + Title = info.Title, + Uploader = info.Uploader, + ThumbnailUrl = info.Thumbnail, + Duration = info.Duration.HasValue && info.Duration.Value > 0 + ? TimeSpan.FromSeconds(info.Duration.Value) + : (TimeSpan?)null, + Provider = "ytdlp", + }; return source; } diff --git a/Basis/Packages/com.basis.mediaplayer/Editor/BasisMediaPlayerPlaylistInspector.cs b/Basis/Packages/com.basis.mediaplayer/Editor/BasisMediaPlayerPlaylistInspector.cs new file mode 100644 index 000000000..0d16e438c --- /dev/null +++ b/Basis/Packages/com.basis.mediaplayer/Editor/BasisMediaPlayerPlaylistInspector.cs @@ -0,0 +1,69 @@ +using UnityEditor; +using UnityEditor.UIElements; +using UnityEngine; +using UnityEngine.UIElements; + +[CustomEditor(typeof(BasisMediaPlayerPlaylist))] +public class BasisMediaPlayerPlaylistInspector : Editor +{ + private const string UxmlPath = "Packages/com.basis.mediaplayer/Editor/StyleSheets/MediaPlayerPlaylistSDK.uxml"; + private const string UssPath = "Packages/com.basis.mediaplayer/Editor/StyleSheets/MediaPlayerSDK.uss"; + + private BasisMediaPlayerPlaylist _target; + private VisualElement _root; + private Label _status; + private Button _previousBtn, _nextBtn; + + public override VisualElement CreateInspectorGUI() + { + _target = (BasisMediaPlayerPlaylist)target; + _root = new VisualElement(); + + var tree = AssetDatabase.LoadAssetAtPath(UxmlPath); + var sheet = AssetDatabase.LoadAssetAtPath(UssPath); + if (tree == null) + { + _root.Add(new HelpBox("MediaPlayerPlaylistSDK.uxml missing.", HelpBoxMessageType.Error)); + return _root; + } + tree.CloneTree(_root); + if (sheet != null) _root.styleSheets.Add(sheet); + _root.Bind(serializedObject); + + _status = _root.Q