diff --git a/Extensions/String+ReplacingHTMLEntities.swift b/Extensions/String+ReplacingHTMLEntities.swift
new file mode 100644
index 00000000..93e6476f
--- /dev/null
+++ b/Extensions/String+ReplacingHTMLEntities.swift
@@ -0,0 +1,14 @@
+import Foundation
+
+extension String {
+ var replacingHTMLEntities: String {
+ do {
+ return try NSAttributedString(data: Data(utf8), options: [
+ .documentType: NSAttributedString.DocumentType.html,
+ .characterEncoding: String.Encoding.utf8.rawValue
+ ], documentAttributes: nil).string
+ } catch {
+ return self
+ }
+ }
+}
diff --git a/Model/Applications/InvidiousAPI.swift b/Model/Applications/InvidiousAPI.swift
index b5c28b9d..dfc1284a 100644
--- a/Model/Applications/InvidiousAPI.swift
+++ b/Model/Applications/InvidiousAPI.swift
@@ -79,7 +79,7 @@ final class InvidiousAPI: Service, ObservableObject, VideosAPI {
configureTransformer(pathPattern("search/suggestions"), requestMethods: [.get]) { (content: Entity) -> [String] in
if let suggestions = content.json.dictionaryValue["suggestions"] {
- return suggestions.arrayValue.map(String.init)
+ return suggestions.arrayValue.map { $0.stringValue.replacingHTMLEntities }
}
return []
diff --git a/Yattee.xcodeproj/project.pbxproj b/Yattee.xcodeproj/project.pbxproj
index 54902e58..86a97ac4 100644
--- a/Yattee.xcodeproj/project.pbxproj
+++ b/Yattee.xcodeproj/project.pbxproj
@@ -568,6 +568,10 @@
3776ADD6287381240078EBC4 /* Captions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3776ADD5287381240078EBC4 /* Captions.swift */; };
3776ADD7287381240078EBC4 /* Captions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3776ADD5287381240078EBC4 /* Captions.swift */; };
3776ADD8287381240078EBC4 /* Captions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3776ADD5287381240078EBC4 /* Captions.swift */; };
+ 37772E0D2A216F8600608BD9 /* String+ReplacingHTMLEntities.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37772E0C2A216F8600608BD9 /* String+ReplacingHTMLEntities.swift */; };
+ 37772E0E2A216F8600608BD9 /* String+ReplacingHTMLEntities.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37772E0C2A216F8600608BD9 /* String+ReplacingHTMLEntities.swift */; };
+ 37772E0F2A216F8600608BD9 /* String+ReplacingHTMLEntities.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37772E0C2A216F8600608BD9 /* String+ReplacingHTMLEntities.swift */; };
+ 37772E102A216F8600608BD9 /* String+ReplacingHTMLEntities.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37772E0C2A216F8600608BD9 /* String+ReplacingHTMLEntities.swift */; };
377A20A92693C9A2002842B8 /* TypedContentAccessors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 377A20A82693C9A2002842B8 /* TypedContentAccessors.swift */; };
377A20AA2693C9A2002842B8 /* TypedContentAccessors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 377A20A82693C9A2002842B8 /* TypedContentAccessors.swift */; };
377A20AB2693C9A2002842B8 /* TypedContentAccessors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 377A20A82693C9A2002842B8 /* TypedContentAccessors.swift */; };
@@ -1353,6 +1357,7 @@
3776925129463C310055EC18 /* PlaylistsCacheModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaylistsCacheModel.swift; sourceTree = ""; };
377692552946476F0055EC18 /* ChannelPlaylistsCacheModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChannelPlaylistsCacheModel.swift; sourceTree = ""; };
3776ADD5287381240078EBC4 /* Captions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Captions.swift; path = Model/Captions.swift; sourceTree = SOURCE_ROOT; };
+ 37772E0C2A216F8600608BD9 /* String+ReplacingHTMLEntities.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+ReplacingHTMLEntities.swift"; sourceTree = ""; };
377A20A82693C9A2002842B8 /* TypedContentAccessors.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TypedContentAccessors.swift; sourceTree = ""; };
377ABC3F286E4AD5009C986F /* InstancesManifest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstancesManifest.swift; sourceTree = ""; };
377ABC43286E4B74009C986F /* ManifestedInstance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ManifestedInstance.swift; sourceTree = ""; };
@@ -2286,6 +2291,7 @@
377ABC47286E5887009C986F /* Sequence+Unique.swift */,
3782B9512755667600990149 /* String+Format.swift */,
37270F1B28E06E3E00856150 /* String+Localizable.swift */,
+ 37772E0C2A216F8600608BD9 /* String+ReplacingHTMLEntities.swift */,
377A20A82693C9A2002842B8 /* TypedContentAccessors.swift */,
37F7AB4C28A9361F00FB46B5 /* UIDevice+Cellular.swift */,
370B79CB286279BA0045DB77 /* UIViewController+HideHomeIndicator.swift */,
@@ -3233,6 +3239,7 @@
37B4E803277D0A72004BF56A /* AppDelegate.swift in Sources */,
37FD77002932C4DA00D91A5F /* URL+ByReplacingYatteeProtocol.swift in Sources */,
373CFADB269663F1003CB2C6 /* Thumbnail.swift in Sources */,
+ 37772E0D2A216F8600608BD9 /* String+ReplacingHTMLEntities.swift in Sources */,
3714166F267A8ACC006CA35D /* TrendingView.swift in Sources */,
37DCD3112A18E8150059A470 /* OrientationModel.swift in Sources */,
3782B9522755667600990149 /* String+Format.swift in Sources */,
@@ -3490,6 +3497,7 @@
37F64FE526FE70A60081B69E /* RedrawOnModifier.swift in Sources */,
377ABC45286E4B74009C986F /* ManifestedInstance.swift in Sources */,
3795593727B08538007FF8F4 /* StreamControl.swift in Sources */,
+ 37772E0E2A216F8600608BD9 /* String+ReplacingHTMLEntities.swift in Sources */,
375B8AB428B580D300397B31 /* KeychainModel.swift in Sources */,
37F7AB5528A951B200FB46B5 /* Power.swift in Sources */,
372CFD16285F2E2A00B0B54B /* ControlsBar.swift in Sources */,
@@ -3690,6 +3698,7 @@
3774124B27387D2300423605 /* ThumbnailsModel.swift in Sources */,
3774125427387D2300423605 /* Store.swift in Sources */,
37DCD31A2A191A180059A470 /* AVPlayerViewController+FullScreen.swift in Sources */,
+ 37772E102A216F8600608BD9 /* String+ReplacingHTMLEntities.swift in Sources */,
3774125027387D2300423605 /* Video.swift in Sources */,
37EF9A79275BEB8E0043B585 /* CommentView.swift in Sources */,
3774125327387D2300423605 /* Country.swift in Sources */,
@@ -3875,6 +3884,7 @@
3748186C26A764FB0084E870 /* Thumbnail+Fixtures.swift in Sources */,
3744A96228B99ADD005DE0A7 /* PlayerControlsLayout.swift in Sources */,
3710A55729488C7D006F8025 /* PlaceholderListItem.swift in Sources */,
+ 37772E0F2A216F8600608BD9 /* String+ReplacingHTMLEntities.swift in Sources */,
377A20AB2693C9A2002842B8 /* TypedContentAccessors.swift in Sources */,
3748186826A7627F0084E870 /* Video+Fixtures.swift in Sources */,
377F9F7D294403F20043F856 /* VideosCacheModel.swift in Sources */,