Files
Leeksov 4647310322 GLEGram 12.5 — Initial public release
Based on Swiftgram 12.5 (Telegram iOS 12.5).
All GLEGram features ported and organized in GLEGram/ folder.

Features: Ghost Mode, Saved Deleted Messages, Content Protection Bypass,
Font Replacement, Fake Profile, Chat Export, Plugin System, and more.

See CHANGELOG_12.5.md for full details.
2026-04-06 09:48:12 +03:00

65 lines
1.9 KiB
Swift

import SensitiveContentAnalysis
import SwiftSignalKit
public enum ContentAnalysisError: Error {
case generic(_ message: String)
}
public enum ContentAnalysisMediaType {
case image
case video
}
public func canAnalyzeMedia() -> Bool {
if #available(iOS 17, *) {
let analyzer = SCSensitivityAnalyzer()
let policy = analyzer.analysisPolicy
return policy != .disabled
} else {
return false
}
}
public func analyzeMediaSignal(_ url: URL, mediaType: ContentAnalysisMediaType = .image) -> Signal<Bool, Error> {
return Signal { subscriber in
analyzeMedia(url: url, mediaType: mediaType, completion: { result, error in
if let result = result {
subscriber.putNext(result)
subscriber.putCompletion()
} else if let error = error {
subscriber.putError(error)
} else {
subscriber.putError(ContentAnalysisError.generic("Unknown response"))
}
})
return ActionDisposable {
}
}
}
private func analyzeMedia(url: URL, mediaType: ContentAnalysisMediaType, completion: @escaping (Bool?, Error?) -> Void) {
if #available(iOS 17, *) {
let analyzer = SCSensitivityAnalyzer()
switch mediaType {
case .image:
analyzer.analyzeImage(at: url) { analysisResult, analysisError in
completion(analysisResult?.isSensitive, analysisError)
}
case .video:
Task {
do {
let handler = analyzer.videoAnalysis(forFileAt: url)
let response = try await handler.hasSensitiveContent()
completion(response.isSensitive, nil)
} catch {
completion(nil, error)
}
}
}
} else {
completion(false, nil)
}
}