Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions ChatGPTExport/Assets/AssetLocator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ ExistingAssetLocator existingAssetLocator
{
private List<string>? cachedSourceList = null;

public string? GetMarkdownImage(AssetRequest assetRequest)
public string? GetMarkdownMediaAsset(AssetRequest assetRequest)
{
return FindAssetInSourceDirectory(assetRequest) ??
existingAssetLocator.GetMarkdownImage(assetRequest);
existingAssetLocator.GetMarkdownMediaAsset(assetRequest);
}

private IEnumerable<string> GetCachedSourceFiles(string searchPattern)
Expand Down
2 changes: 1 addition & 1 deletion ChatGPTExport/Assets/ExistingAssetLocator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public void Add(string newFile)
GetCache().Add(newFile);
}

public string? GetMarkdownImage(AssetRequest assetRequest)
public string? GetMarkdownMediaAsset(AssetRequest assetRequest)
{
// it may already exist in the destination directory from a previous export
var destinationMatches = GetCachedDestinationFiles(assetRequest.SearchPattern).ToList();
Expand Down
2 changes: 1 addition & 1 deletion ChatGPTExport/Assets/IAssetLocator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ namespace ChatGPTExport.Assets
{
public interface IAssetLocator
{
string? GetMarkdownImage(AssetRequest assetRequest);
string? GetMarkdownMediaAsset(AssetRequest assetRequest);
}
}
2 changes: 1 addition & 1 deletion ChatGPTExport/Exporters/Html/HtmlExporter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ private MarkdownPipeline GetPipeline()
.UseFootnotes()
//.UseGridTables()
.UseMathematics()
//.UseMediaLinks()
.UseMediaLinks()
.UsePipeTables()
.UseListExtras()
.UseTaskLists()
Expand Down
71 changes: 53 additions & 18 deletions ChatGPTExport/Exporters/Markdown/MarkdownContentVisitor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -147,40 +147,75 @@ public MarkdownContentResult Visit(ContentMultimodalText content, ContentVisitor
{
if (part.IsObject)
{
var obj = part.ObjectValue;
if (obj.content_type == "image_asset_pointer" && string.IsNullOrWhiteSpace(obj.asset_pointer) == false)
markdownContent.AddRange(GetMarkdownMediaAsset(context, part.ObjectValue));
}
else if (part.IsString)
{
markdownContent.Add(part.StringValue);
}
}
return new MarkdownContentResult(markdownContent);
}

private IEnumerable<string> GetMarkdownMediaAsset(ContentVisitorContext context, ContentMultimodalText.ContentMultimodalTextParts obj)
{
switch (obj.content_type)
{
case "image_asset_pointer" when string.IsNullOrWhiteSpace(obj.asset_pointer) == false:
{
var searchPattern = obj.asset_pointer.Replace("sediment://", string.Empty).Replace("file-service://", string.Empty);
var markdownImage = assetLocator.GetMarkdownImage(new AssetRequest(
searchPattern,
context.Role,
context.CreatedDate,
context.UpdatedDate)
);
var markdownImage = GetMediaAsset(context, searchPattern);

if (string.IsNullOrWhiteSpace(markdownImage) == false)
{
markdownContent.Add(markdownImage);
yield return markdownImage;
}
else
{
Console.Error.WriteLine("\tUnable to find asset " + obj.asset_pointer);
markdownContent.Add($"> ⚠️ **Warning:** Could not find asset: {obj.asset_pointer}.");
yield return $"> ⚠️ **Warning:** Could not find asset: {obj.asset_pointer}.";
}

if (context.MessageMetadata.image_gen_title != null)
{
markdownContent.Add($"*{context.MessageMetadata.image_gen_title}* ");
yield return $"*{context.MessageMetadata.image_gen_title}* ";
}
markdownContent.Add($"**Size:** {obj.size_bytes} **Dims:** {obj.width}x{obj.height} ");
yield return $"**Size:** {obj.size_bytes} **Dims:** {obj.width}x{obj.height} ";
break;
}
}
else if (part.IsString)
{
markdownContent.Add(part.StringValue);
}

case "real_time_user_audio_video_asset_pointer" when string.IsNullOrWhiteSpace(obj.audio_asset_pointer?.asset_pointer) == false:
{
var searchPattern = obj.audio_asset_pointer.asset_pointer.Replace("sediment://", string.Empty).Replace("file-service://", string.Empty);
var markdownAsset = GetMediaAsset(context, searchPattern);

yield return $"{markdownAsset} ";
break;
}

case "audio_asset_pointer" when string.IsNullOrWhiteSpace(obj.asset_pointer) == false:
{
var searchPattern = obj.asset_pointer.Replace("sediment://", string.Empty).Replace("file-service://", string.Empty);
var markdownAsset = GetMediaAsset(context, searchPattern);

yield return $"{markdownAsset} ";
break;
}

case "audio_transcription" when string.IsNullOrWhiteSpace(obj.text) == false:
yield return $"*{obj.text}* ";
break;
}
return new MarkdownContentResult(markdownContent);
}

private string? GetMediaAsset(ContentVisitorContext context, string searchPattern)
{
return assetLocator.GetMarkdownMediaAsset(new AssetRequest(
searchPattern,
context.Role,
context.CreatedDate,
context.UpdatedDate)
);
}

public MarkdownContentResult Visit(ContentCode content, ContentVisitorContext context)
Expand Down
10 changes: 10 additions & 0 deletions ChatGPTExport/Models/Conversations.cs
Original file line number Diff line number Diff line change
Expand Up @@ -406,6 +406,8 @@ public class ContentMultimodalTextParts
public int? height { get; set; }
public object fovea { get; set; }
public Metadata metadata { get; set; }
public AudioAssetPointer audio_asset_pointer { get; set; }
public string text { get; set; } // for audio transcription

public class Metadata
{
Expand Down Expand Up @@ -447,6 +449,14 @@ public class Generation

[JsonExtensionData]
public Dictionary<string, JsonElement> ExtraData { get; set; }

public class AudioAssetPointer
{
public string asset_pointer { get; set; }

[JsonExtensionData]
public Dictionary<string, JsonElement> ExtraData { get; set; }
}
}

public override T Accept<T>(IContentVisitor<T> visitor, ContentVisitorContext context)
Expand Down
Loading