Created
February 4, 2026 21:02
-
-
Save omranjamal/86dfc47c196b27c96f4d8e433dfcb3ce to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env swift | |
| import Foundation | |
| let homeDir = FileManager.default.homeDirectoryForCurrentUser | |
| let sflPath = homeDir | |
| .appendingPathComponent("Library/Application Support/com.apple.sharedfilelist") | |
| let possibleFiles = [ | |
| "com.apple.LSSharedFileList.FavoriteItems.sfl4", | |
| "com.apple.LSSharedFileList.FavoriteItems.sfl3", | |
| "com.apple.LSSharedFileList.FavoriteItems.sfl2" | |
| ] | |
| var dataURL: URL? = nil | |
| for filename in possibleFiles { | |
| let url = sflPath.appendingPathComponent(filename) | |
| if FileManager.default.fileExists(atPath: url.path) { | |
| dataURL = url | |
| break | |
| } | |
| } | |
| guard let fileURL = dataURL, | |
| let data = try? Data(contentsOf: fileURL), | |
| let plist = try? PropertyListSerialization.propertyList(from: data, options: [], format: nil) as? [String: Any], | |
| let objects = plist["$objects"] as? [Any] else { | |
| print("[]") | |
| exit(1) | |
| } | |
| var favorites: [[String: String]] = [] | |
| for obj in objects { | |
| if let bookmarkData = obj as? Data { | |
| var isStale = false | |
| if let url = try? URL(resolvingBookmarkData: bookmarkData, options: .withoutUI, relativeTo: nil, bookmarkDataIsStale: &isStale) { | |
| if url.isFileURL { | |
| favorites.append([ | |
| "name": url.lastPathComponent, | |
| "path": url.path | |
| ]) | |
| } | |
| } | |
| } | |
| if let dict = obj as? [String: Any], let bookmarkData = dict["Bookmark"] as? Data { | |
| var isStale = false | |
| if let url = try? URL(resolvingBookmarkData: bookmarkData, options: .withoutUI, relativeTo: nil, bookmarkDataIsStale: &isStale) { | |
| if url.isFileURL { | |
| favorites.append([ | |
| "name": dict["Name"] as? String ?? url.lastPathComponent, | |
| "path": url.path | |
| ]) | |
| } | |
| } | |
| } | |
| } | |
| let jsonData = try! JSONSerialization.data(withJSONObject: favorites, options: .prettyPrinted) | |
| print(String(data: jsonData, encoding: .utf8)!) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment