commit d97fdf7a200af667df3305863cff61d10f62cf7a Author: 忆海16 <> Date: Tue Sep 3 09:38:34 2024 +0800 prank diff --git a/Funny_sounds.xcodeproj/project.pbxproj b/Funny_sounds.xcodeproj/project.pbxproj new file mode 100644 index 0000000..0327462 --- /dev/null +++ b/Funny_sounds.xcodeproj/project.pbxproj @@ -0,0 +1,687 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + 0A13DE61A6D7718E348EDA13 /* Pods_Funny_sounds.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CF6BFA4ABB9C77922EA3EEE8 /* Pods_Funny_sounds.framework */; }; + 75268CF12C72E08D00C379FA /* CollectDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75268CF02C72E08D00C379FA /* CollectDefaults.swift */; }; + 7566E50D2C6EF629001FDBCC /* FS_DetailsVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7566E50C2C6EF629001FDBCC /* FS_DetailsVC.swift */; }; + 7566E50F2C6F20B0001FDBCC /* FS_DetailsCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7566E50E2C6F20B0001FDBCC /* FS_DetailsCollectionViewCell.swift */; }; + 7566E5112C6F3306001FDBCC /* CustomPickerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7566E5102C6F3306001FDBCC /* CustomPickerView.swift */; }; + 7566E5132C6F3868001FDBCC /* Timer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7566E5122C6F3868001FDBCC /* Timer.swift */; }; + 758E98B22C6C864D0079F4AF /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 758E98B12C6C864D0079F4AF /* AppDelegate.swift */; }; + 758E98B62C6C864D0079F4AF /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 758E98B52C6C864D0079F4AF /* ViewController.swift */; }; + 758E98B92C6C864E0079F4AF /* Base in Resources */ = {isa = PBXBuildFile; fileRef = 758E98B82C6C864E0079F4AF /* Base */; }; + 758E98BB2C6C86520079F4AF /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 758E98BA2C6C86520079F4AF /* Assets.xcassets */; }; + 758E98BE2C6C86520079F4AF /* Base in Resources */ = {isa = PBXBuildFile; fileRef = 758E98BD2C6C86520079F4AF /* Base */; }; + 758E98C72C6C88750079F4AF /* RootVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 758E98C62C6C88750079F4AF /* RootVC.swift */; }; + 758E98C92C6C888D0079F4AF /* RootnaVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 758E98C82C6C888D0079F4AF /* RootnaVC.swift */; }; + 758E98CB2C6C88A00079F4AF /* RootTabBarVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 758E98CA2C6C88A00079F4AF /* RootTabBarVC.swift */; }; + 758E98D12C6C89680079F4AF /* FS_HomeVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 758E98D02C6C89680079F4AF /* FS_HomeVC.swift */; }; + 758E98D42C6C89820079F4AF /* FS_SettingVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 758E98D32C6C89820079F4AF /* FS_SettingVC.swift */; }; + 758E98D62C6C898D0079F4AF /* FS_CollectVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 758E98D52C6C898D0079F4AF /* FS_CollectVC.swift */; }; + 758E98D92C6C92AC0079F4AF /* color.swift in Sources */ = {isa = PBXBuildFile; fileRef = 758E98D82C6C92AC0079F4AF /* color.swift */; }; + 758E98DB2C6C96260079F4AF /* CustomTabBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 758E98DA2C6C96260079F4AF /* CustomTabBar.swift */; }; + 75B1CD212C6D95FD0092ED40 /* CollectionViewFlowLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75B1CD202C6D95FD0092ED40 /* CollectionViewFlowLayout.swift */; }; + 75B1CD242C6D96350092ED40 /* FS_HomeCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75B1CD232C6D96350092ED40 /* FS_HomeCollectionViewCell.swift */; }; + 75B1CD272C6DA0D90092ED40 /* PaytoneOne-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 75B1CD262C6DA0D90092ED40 /* PaytoneOne-Regular.ttf */; }; + 75B1CD292C6DD21E0092ED40 /* FS_ClassificationVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75B1CD282C6DD21E0092ED40 /* FS_ClassificationVC.swift */; }; + 75B1CD2C2C6DD3DD0092ED40 /* prank.json in Resources */ = {isa = PBXBuildFile; fileRef = 75B1CD2B2C6DD3DD0092ED40 /* prank.json */; }; + 75B1CD2F2C6DD7FA0092ED40 /* prankModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75B1CD2E2C6DD7FA0092ED40 /* prankModel.swift */; }; + 75B1CD312C6DDB530092ED40 /* tyepeCollectionViewFlowLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75B1CD302C6DDB530092ED40 /* tyepeCollectionViewFlowLayout.swift */; }; + 75B1CD332C6DDBDD0092ED40 /* FS_ClassificationCollectionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75B1CD322C6DDBDD0092ED40 /* FS_ClassificationCollectionCell.swift */; }; + 75EB74742C7D6AEA00CD59E1 /* FS_CollectCollectionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75EB74722C7D6AEA00CD59E1 /* FS_CollectCollectionCell.swift */; }; + 75EB74772C7D76B500CD59E1 /* FS_PrivacyVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75EB74762C7D76B500CD59E1 /* FS_PrivacyVC.swift */; }; + 75EB747B2C7DA54200CD59E1 /* FS_RecordingVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75EB747A2C7DA54200CD59E1 /* FS_RecordingVC.swift */; }; + 75EB747E2C7DA69F00CD59E1 /* UserPreference.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75EB747D2C7DA69F00CD59E1 /* UserPreference.swift */; }; + 75EB74802C7DA6B900CD59E1 /* PreferenceManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75EB747F2C7DA6B900CD59E1 /* PreferenceManager.swift */; }; + 75EB74852C7DA9F900CD59E1 /* testRecording.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75EB74832C7DA9F900CD59E1 /* testRecording.swift */; }; + 75EB74862C7DA9F900CD59E1 /* testRecording.xib in Resources */ = {isa = PBXBuildFile; fileRef = 75EB74842C7DA9F900CD59E1 /* testRecording.xib */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 3237211DA9BE1A64037C4F1E /* Pods-Funny_sounds.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Funny_sounds.debug.xcconfig"; path = "Target Support Files/Pods-Funny_sounds/Pods-Funny_sounds.debug.xcconfig"; sourceTree = ""; }; + 75268CF02C72E08D00C379FA /* CollectDefaults.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CollectDefaults.swift; sourceTree = ""; }; + 7566E50C2C6EF629001FDBCC /* FS_DetailsVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FS_DetailsVC.swift; sourceTree = ""; }; + 7566E50E2C6F20B0001FDBCC /* FS_DetailsCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FS_DetailsCollectionViewCell.swift; sourceTree = ""; }; + 7566E5102C6F3306001FDBCC /* CustomPickerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomPickerView.swift; sourceTree = ""; }; + 7566E5122C6F3868001FDBCC /* Timer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Timer.swift; sourceTree = ""; }; + 758E98AE2C6C864D0079F4AF /* Funny_sounds.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Funny_sounds.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 758E98B12C6C864D0079F4AF /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 758E98B52C6C864D0079F4AF /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 758E98B82C6C864E0079F4AF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 758E98BA2C6C86520079F4AF /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 758E98BD2C6C86520079F4AF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 758E98BF2C6C86520079F4AF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 758E98C62C6C88750079F4AF /* RootVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootVC.swift; sourceTree = ""; }; + 758E98C82C6C888D0079F4AF /* RootnaVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootnaVC.swift; sourceTree = ""; }; + 758E98CA2C6C88A00079F4AF /* RootTabBarVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootTabBarVC.swift; sourceTree = ""; }; + 758E98D02C6C89680079F4AF /* FS_HomeVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FS_HomeVC.swift; sourceTree = ""; }; + 758E98D32C6C89820079F4AF /* FS_SettingVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FS_SettingVC.swift; sourceTree = ""; }; + 758E98D52C6C898D0079F4AF /* FS_CollectVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FS_CollectVC.swift; sourceTree = ""; }; + 758E98D82C6C92AC0079F4AF /* color.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = color.swift; sourceTree = ""; }; + 758E98DA2C6C96260079F4AF /* CustomTabBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomTabBar.swift; sourceTree = ""; }; + 75B1CD202C6D95FD0092ED40 /* CollectionViewFlowLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CollectionViewFlowLayout.swift; sourceTree = ""; }; + 75B1CD232C6D96350092ED40 /* FS_HomeCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FS_HomeCollectionViewCell.swift; sourceTree = ""; }; + 75B1CD262C6DA0D90092ED40 /* PaytoneOne-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "PaytoneOne-Regular.ttf"; sourceTree = ""; }; + 75B1CD282C6DD21E0092ED40 /* FS_ClassificationVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FS_ClassificationVC.swift; sourceTree = ""; }; + 75B1CD2B2C6DD3DD0092ED40 /* prank.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = prank.json; sourceTree = ""; }; + 75B1CD2E2C6DD7FA0092ED40 /* prankModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = prankModel.swift; sourceTree = ""; }; + 75B1CD302C6DDB530092ED40 /* tyepeCollectionViewFlowLayout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = tyepeCollectionViewFlowLayout.swift; sourceTree = ""; }; + 75B1CD322C6DDBDD0092ED40 /* FS_ClassificationCollectionCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FS_ClassificationCollectionCell.swift; sourceTree = ""; }; + 75EB74722C7D6AEA00CD59E1 /* FS_CollectCollectionCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FS_CollectCollectionCell.swift; sourceTree = ""; }; + 75EB74762C7D76B500CD59E1 /* FS_PrivacyVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FS_PrivacyVC.swift; sourceTree = ""; }; + 75EB747A2C7DA54200CD59E1 /* FS_RecordingVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FS_RecordingVC.swift; sourceTree = ""; }; + 75EB747D2C7DA69F00CD59E1 /* UserPreference.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserPreference.swift; sourceTree = ""; }; + 75EB747F2C7DA6B900CD59E1 /* PreferenceManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferenceManager.swift; sourceTree = ""; }; + 75EB74832C7DA9F900CD59E1 /* testRecording.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = testRecording.swift; sourceTree = ""; }; + 75EB74842C7DA9F900CD59E1 /* testRecording.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = testRecording.xib; sourceTree = ""; }; + 9B2FA69BF5CE4545F13C27DA /* Pods-Funny_sounds.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Funny_sounds.release.xcconfig"; path = "Target Support Files/Pods-Funny_sounds/Pods-Funny_sounds.release.xcconfig"; sourceTree = ""; }; + CF6BFA4ABB9C77922EA3EEE8 /* Pods_Funny_sounds.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Funny_sounds.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 758E98AB2C6C864D0079F4AF /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 0A13DE61A6D7718E348EDA13 /* Pods_Funny_sounds.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 3775DA2A4AEE641340499A1A /* Frameworks */ = { + isa = PBXGroup; + children = ( + CF6BFA4ABB9C77922EA3EEE8 /* Pods_Funny_sounds.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 4058B74BFD8D0DCB89016BD6 /* Pods */ = { + isa = PBXGroup; + children = ( + 3237211DA9BE1A64037C4F1E /* Pods-Funny_sounds.debug.xcconfig */, + 9B2FA69BF5CE4545F13C27DA /* Pods-Funny_sounds.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + 758E98A52C6C864D0079F4AF = { + isa = PBXGroup; + children = ( + 758E98B02C6C864D0079F4AF /* Funny_sounds */, + 758E98AF2C6C864D0079F4AF /* Products */, + 4058B74BFD8D0DCB89016BD6 /* Pods */, + 3775DA2A4AEE641340499A1A /* Frameworks */, + ); + sourceTree = ""; + }; + 758E98AF2C6C864D0079F4AF /* Products */ = { + isa = PBXGroup; + children = ( + 758E98AE2C6C864D0079F4AF /* Funny_sounds.app */, + ); + name = Products; + sourceTree = ""; + }; + 758E98B02C6C864D0079F4AF /* Funny_sounds */ = { + isa = PBXGroup; + children = ( + 75EB74782C7DA52600CD59E1 /* Recording */, + 75B1CD252C6DA0BC0092ED40 /* Customfonts */, + 758E98D72C6C92A10079F4AF /* Tool */, + 758E98CE2C6C893D0079F4AF /* Collect */, + 758E98CD2C6C89350079F4AF /* Setting */, + 758E98CC2C6C892D0079F4AF /* Home */, + 758E98C52C6C88630079F4AF /* Main */, + 758E98B12C6C864D0079F4AF /* AppDelegate.swift */, + 758E98B52C6C864D0079F4AF /* ViewController.swift */, + 758E98B72C6C864E0079F4AF /* Main.storyboard */, + 758E98BA2C6C86520079F4AF /* Assets.xcassets */, + 758E98BC2C6C86520079F4AF /* LaunchScreen.storyboard */, + 758E98BF2C6C86520079F4AF /* Info.plist */, + ); + path = Funny_sounds; + sourceTree = ""; + }; + 758E98C52C6C88630079F4AF /* Main */ = { + isa = PBXGroup; + children = ( + 758E98C62C6C88750079F4AF /* RootVC.swift */, + 758E98C82C6C888D0079F4AF /* RootnaVC.swift */, + 758E98CA2C6C88A00079F4AF /* RootTabBarVC.swift */, + 758E98DA2C6C96260079F4AF /* CustomTabBar.swift */, + ); + path = Main; + sourceTree = ""; + }; + 758E98CC2C6C892D0079F4AF /* Home */ = { + isa = PBXGroup; + children = ( + 75B1CD2D2C6DD7E70092ED40 /* M */, + 758E98CF2C6C895C0079F4AF /* C */, + 75B1CD222C6D96140092ED40 /* V */, + ); + path = Home; + sourceTree = ""; + }; + 758E98CD2C6C89350079F4AF /* Setting */ = { + isa = PBXGroup; + children = ( + 758E98D22C6C89750079F4AF /* C */, + ); + path = Setting; + sourceTree = ""; + }; + 758E98CE2C6C893D0079F4AF /* Collect */ = { + isa = PBXGroup; + children = ( + 75EB74712C7D6ACF00CD59E1 /* V */, + 758E98DC2C6CA3900079F4AF /* C */, + ); + path = Collect; + sourceTree = ""; + }; + 758E98CF2C6C895C0079F4AF /* C */ = { + isa = PBXGroup; + children = ( + 758E98D02C6C89680079F4AF /* FS_HomeVC.swift */, + 75B1CD282C6DD21E0092ED40 /* FS_ClassificationVC.swift */, + 7566E50C2C6EF629001FDBCC /* FS_DetailsVC.swift */, + ); + path = C; + sourceTree = ""; + }; + 758E98D22C6C89750079F4AF /* C */ = { + isa = PBXGroup; + children = ( + 758E98D32C6C89820079F4AF /* FS_SettingVC.swift */, + 75EB74762C7D76B500CD59E1 /* FS_PrivacyVC.swift */, + ); + path = C; + sourceTree = ""; + }; + 758E98D72C6C92A10079F4AF /* Tool */ = { + isa = PBXGroup; + children = ( + 75B1CD2A2C6DD3CD0092ED40 /* json */, + 758E98D82C6C92AC0079F4AF /* color.swift */, + 75B1CD202C6D95FD0092ED40 /* CollectionViewFlowLayout.swift */, + 75B1CD302C6DDB530092ED40 /* tyepeCollectionViewFlowLayout.swift */, + 7566E5102C6F3306001FDBCC /* CustomPickerView.swift */, + 7566E5122C6F3868001FDBCC /* Timer.swift */, + 75268CF02C72E08D00C379FA /* CollectDefaults.swift */, + 75EB747F2C7DA6B900CD59E1 /* PreferenceManager.swift */, + ); + path = Tool; + sourceTree = ""; + }; + 758E98DC2C6CA3900079F4AF /* C */ = { + isa = PBXGroup; + children = ( + 758E98D52C6C898D0079F4AF /* FS_CollectVC.swift */, + ); + path = C; + sourceTree = ""; + }; + 75B1CD222C6D96140092ED40 /* V */ = { + isa = PBXGroup; + children = ( + 75B1CD232C6D96350092ED40 /* FS_HomeCollectionViewCell.swift */, + 75B1CD322C6DDBDD0092ED40 /* FS_ClassificationCollectionCell.swift */, + 7566E50E2C6F20B0001FDBCC /* FS_DetailsCollectionViewCell.swift */, + ); + path = V; + sourceTree = ""; + }; + 75B1CD252C6DA0BC0092ED40 /* Customfonts */ = { + isa = PBXGroup; + children = ( + 75B1CD262C6DA0D90092ED40 /* PaytoneOne-Regular.ttf */, + ); + path = Customfonts; + sourceTree = ""; + }; + 75B1CD2A2C6DD3CD0092ED40 /* json */ = { + isa = PBXGroup; + children = ( + 75B1CD2B2C6DD3DD0092ED40 /* prank.json */, + ); + path = json; + sourceTree = ""; + }; + 75B1CD2D2C6DD7E70092ED40 /* M */ = { + isa = PBXGroup; + children = ( + 75B1CD2E2C6DD7FA0092ED40 /* prankModel.swift */, + ); + path = M; + sourceTree = ""; + }; + 75EB74712C7D6ACF00CD59E1 /* V */ = { + isa = PBXGroup; + children = ( + 75EB74722C7D6AEA00CD59E1 /* FS_CollectCollectionCell.swift */, + ); + path = V; + sourceTree = ""; + }; + 75EB74782C7DA52600CD59E1 /* Recording */ = { + isa = PBXGroup; + children = ( + 75EB747C2C7DA69200CD59E1 /* M */, + 75EB74792C7DA53200CD59E1 /* C */, + ); + path = Recording; + sourceTree = ""; + }; + 75EB74792C7DA53200CD59E1 /* C */ = { + isa = PBXGroup; + children = ( + 75EB747A2C7DA54200CD59E1 /* FS_RecordingVC.swift */, + 75EB74832C7DA9F900CD59E1 /* testRecording.swift */, + 75EB74842C7DA9F900CD59E1 /* testRecording.xib */, + ); + path = C; + sourceTree = ""; + }; + 75EB747C2C7DA69200CD59E1 /* M */ = { + isa = PBXGroup; + children = ( + 75EB747D2C7DA69F00CD59E1 /* UserPreference.swift */, + ); + path = M; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 758E98AD2C6C864D0079F4AF /* Funny_sounds */ = { + isa = PBXNativeTarget; + buildConfigurationList = 758E98C22C6C86520079F4AF /* Build configuration list for PBXNativeTarget "Funny_sounds" */; + buildPhases = ( + 1ACB984B83B619C40CD971D2 /* [CP] Check Pods Manifest.lock */, + 758E98AA2C6C864D0079F4AF /* Sources */, + 758E98AB2C6C864D0079F4AF /* Frameworks */, + 758E98AC2C6C864D0079F4AF /* Resources */, + 2725F519A260668C41CEEAE4 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Funny_sounds; + productName = Funny_sounds; + productReference = 758E98AE2C6C864D0079F4AF /* Funny_sounds.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 758E98A62C6C864D0079F4AF /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + CLASSPREFIX = FS_; + LastSwiftUpdateCheck = 1530; + LastUpgradeCheck = 1530; + TargetAttributes = { + 758E98AD2C6C864D0079F4AF = { + CreatedOnToolsVersion = 15.3; + }; + }; + }; + buildConfigurationList = 758E98A92C6C864D0079F4AF /* Build configuration list for PBXProject "Funny_sounds" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 758E98A52C6C864D0079F4AF; + productRefGroup = 758E98AF2C6C864D0079F4AF /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 758E98AD2C6C864D0079F4AF /* Funny_sounds */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 758E98AC2C6C864D0079F4AF /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 758E98BB2C6C86520079F4AF /* Assets.xcassets in Resources */, + 758E98BE2C6C86520079F4AF /* Base in Resources */, + 758E98B92C6C864E0079F4AF /* Base in Resources */, + 75EB74862C7DA9F900CD59E1 /* testRecording.xib in Resources */, + 75B1CD2C2C6DD3DD0092ED40 /* prank.json in Resources */, + 75B1CD272C6DA0D90092ED40 /* PaytoneOne-Regular.ttf in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 1ACB984B83B619C40CD971D2 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Funny_sounds-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 2725F519A260668C41CEEAE4 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Funny_sounds/Pods-Funny_sounds-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Funny_sounds/Pods-Funny_sounds-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Funny_sounds/Pods-Funny_sounds-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 758E98AA2C6C864D0079F4AF /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 75EB74802C7DA6B900CD59E1 /* PreferenceManager.swift in Sources */, + 75EB74852C7DA9F900CD59E1 /* testRecording.swift in Sources */, + 75B1CD332C6DDBDD0092ED40 /* FS_ClassificationCollectionCell.swift in Sources */, + 75EB74772C7D76B500CD59E1 /* FS_PrivacyVC.swift in Sources */, + 758E98CB2C6C88A00079F4AF /* RootTabBarVC.swift in Sources */, + 75EB747E2C7DA69F00CD59E1 /* UserPreference.swift in Sources */, + 7566E5112C6F3306001FDBCC /* CustomPickerView.swift in Sources */, + 758E98D42C6C89820079F4AF /* FS_SettingVC.swift in Sources */, + 75B1CD242C6D96350092ED40 /* FS_HomeCollectionViewCell.swift in Sources */, + 75EB74742C7D6AEA00CD59E1 /* FS_CollectCollectionCell.swift in Sources */, + 7566E50F2C6F20B0001FDBCC /* FS_DetailsCollectionViewCell.swift in Sources */, + 758E98D12C6C89680079F4AF /* FS_HomeVC.swift in Sources */, + 758E98C72C6C88750079F4AF /* RootVC.swift in Sources */, + 758E98C92C6C888D0079F4AF /* RootnaVC.swift in Sources */, + 758E98B62C6C864D0079F4AF /* ViewController.swift in Sources */, + 75B1CD292C6DD21E0092ED40 /* FS_ClassificationVC.swift in Sources */, + 75EB747B2C7DA54200CD59E1 /* FS_RecordingVC.swift in Sources */, + 7566E50D2C6EF629001FDBCC /* FS_DetailsVC.swift in Sources */, + 758E98DB2C6C96260079F4AF /* CustomTabBar.swift in Sources */, + 75268CF12C72E08D00C379FA /* CollectDefaults.swift in Sources */, + 75B1CD212C6D95FD0092ED40 /* CollectionViewFlowLayout.swift in Sources */, + 75B1CD2F2C6DD7FA0092ED40 /* prankModel.swift in Sources */, + 758E98D92C6C92AC0079F4AF /* color.swift in Sources */, + 758E98B22C6C864D0079F4AF /* AppDelegate.swift in Sources */, + 7566E5132C6F3868001FDBCC /* Timer.swift in Sources */, + 758E98D62C6C898D0079F4AF /* FS_CollectVC.swift in Sources */, + 75B1CD312C6DDB530092ED40 /* tyepeCollectionViewFlowLayout.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 758E98B72C6C864E0079F4AF /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 758E98B82C6C864E0079F4AF /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 758E98BC2C6C86520079F4AF /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 758E98BD2C6C86520079F4AF /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 758E98C02C6C86520079F4AF /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.4; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 758E98C12C6C86520079F4AF /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.4; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 758E98C32C6C86520079F4AF /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3237211DA9BE1A64037C4F1E /* Pods-Funny_sounds.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 6HWQW9JC74; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = Funny_sounds/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "com.520.cn.Funny-sounds"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Debug; + }; + 758E98C42C6C86520079F4AF /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9B2FA69BF5CE4545F13C27DA /* Pods-Funny_sounds.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 6HWQW9JC74; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = Funny_sounds/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "com.520.cn.Funny-sounds"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 758E98A92C6C864D0079F4AF /* Build configuration list for PBXProject "Funny_sounds" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 758E98C02C6C86520079F4AF /* Debug */, + 758E98C12C6C86520079F4AF /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 758E98C22C6C86520079F4AF /* Build configuration list for PBXNativeTarget "Funny_sounds" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 758E98C32C6C86520079F4AF /* Debug */, + 758E98C42C6C86520079F4AF /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 758E98A62C6C864D0079F4AF /* Project object */; +} diff --git a/Funny_sounds/AppDelegate.swift b/Funny_sounds/AppDelegate.swift new file mode 100644 index 0000000..457b221 --- /dev/null +++ b/Funny_sounds/AppDelegate.swift @@ -0,0 +1,26 @@ +// +// AppDelegate.swift +// Funny_sounds +// +// Created by 忆海16 on 2024/8/14. +// + +import UIKit + +@main +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + self.window?.frame = UIScreen.main.bounds + let vc = RootTabBarVC() + self.window?.rootViewController = RootnaVC(rootViewController: vc) + window?.makeKeyAndVisible() + return true + } + + + +} + diff --git a/Funny_sounds/Assets.xcassets/AccentColor.colorset/Contents.json b/Funny_sounds/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/AppIcon.appiconset/Contents.json b/Funny_sounds/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..13613e3 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,13 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/Classification/Air Horn.imageset/Air Horn.png b/Funny_sounds/Assets.xcassets/Classification/Air Horn.imageset/Air Horn.png new file mode 100644 index 0000000..9a45b83 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Classification/Air Horn.imageset/Air Horn.png differ diff --git a/Funny_sounds/Assets.xcassets/Classification/Air Horn.imageset/Air Horn@2x.png b/Funny_sounds/Assets.xcassets/Classification/Air Horn.imageset/Air Horn@2x.png new file mode 100644 index 0000000..364e2dc Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Classification/Air Horn.imageset/Air Horn@2x.png differ diff --git a/Funny_sounds/Assets.xcassets/Classification/Air Horn.imageset/Air Horn@3x.png b/Funny_sounds/Assets.xcassets/Classification/Air Horn.imageset/Air Horn@3x.png new file mode 100644 index 0000000..867820a Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Classification/Air Horn.imageset/Air Horn@3x.png differ diff --git a/Funny_sounds/Assets.xcassets/Classification/Air Horn.imageset/Contents.json b/Funny_sounds/Assets.xcassets/Classification/Air Horn.imageset/Contents.json new file mode 100644 index 0000000..daad054 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/Classification/Air Horn.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Air Horn.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Air Horn@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Air Horn@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/Classification/Contents.json b/Funny_sounds/Assets.xcassets/Classification/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/Classification/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/Classification/back.imageset/Contents.json b/Funny_sounds/Assets.xcassets/Classification/back.imageset/Contents.json new file mode 100644 index 0000000..5036384 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/Classification/back.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Group 5230.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Group 5230@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Group 5230@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/Classification/back.imageset/Group 5230.png b/Funny_sounds/Assets.xcassets/Classification/back.imageset/Group 5230.png new file mode 100644 index 0000000..bc4d23d Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Classification/back.imageset/Group 5230.png differ diff --git a/Funny_sounds/Assets.xcassets/Classification/back.imageset/Group 5230@2x.png b/Funny_sounds/Assets.xcassets/Classification/back.imageset/Group 5230@2x.png new file mode 100644 index 0000000..42e5347 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Classification/back.imageset/Group 5230@2x.png differ diff --git a/Funny_sounds/Assets.xcassets/Classification/back.imageset/Group 5230@3x.png b/Funny_sounds/Assets.xcassets/Classification/back.imageset/Group 5230@3x.png new file mode 100644 index 0000000..41af602 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Classification/back.imageset/Group 5230@3x.png differ diff --git a/Funny_sounds/Assets.xcassets/Classification/classbg.imageset/Contents.json b/Funny_sounds/Assets.xcassets/Classification/classbg.imageset/Contents.json new file mode 100644 index 0000000..0bcf9a2 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/Classification/classbg.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Ellipse 33.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Ellipse 33@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Ellipse 33@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/Classification/classbg.imageset/Ellipse 33.png b/Funny_sounds/Assets.xcassets/Classification/classbg.imageset/Ellipse 33.png new file mode 100644 index 0000000..64e2f5f Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Classification/classbg.imageset/Ellipse 33.png differ diff --git a/Funny_sounds/Assets.xcassets/Classification/classbg.imageset/Ellipse 33@2x.png b/Funny_sounds/Assets.xcassets/Classification/classbg.imageset/Ellipse 33@2x.png new file mode 100644 index 0000000..7ef10e6 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Classification/classbg.imageset/Ellipse 33@2x.png differ diff --git a/Funny_sounds/Assets.xcassets/Classification/classbg.imageset/Ellipse 33@3x.png b/Funny_sounds/Assets.xcassets/Classification/classbg.imageset/Ellipse 33@3x.png new file mode 100644 index 0000000..821e1c7 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Classification/classbg.imageset/Ellipse 33@3x.png differ diff --git a/Funny_sounds/Assets.xcassets/Classification/classificationbg.imageset/Contents.json b/Funny_sounds/Assets.xcassets/Classification/classificationbg.imageset/Contents.json new file mode 100644 index 0000000..9617363 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/Classification/classificationbg.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "背景.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "背景@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "背景@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/Classification/classificationbg.imageset/背景.png b/Funny_sounds/Assets.xcassets/Classification/classificationbg.imageset/背景.png new file mode 100644 index 0000000..f91313b Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Classification/classificationbg.imageset/背景.png differ diff --git a/Funny_sounds/Assets.xcassets/Classification/classificationbg.imageset/背景@2x.png b/Funny_sounds/Assets.xcassets/Classification/classificationbg.imageset/背景@2x.png new file mode 100644 index 0000000..b7ff477 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Classification/classificationbg.imageset/背景@2x.png differ diff --git a/Funny_sounds/Assets.xcassets/Classification/classificationbg.imageset/背景@3x.png b/Funny_sounds/Assets.xcassets/Classification/classificationbg.imageset/背景@3x.png new file mode 100644 index 0000000..6a0141a Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Classification/classificationbg.imageset/背景@3x.png differ diff --git a/Funny_sounds/Assets.xcassets/Contents.json b/Funny_sounds/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/Home/Contents.json b/Funny_sounds/Assets.xcassets/Home/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/Home/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/Home/collectionBgV.imageset/Contents.json b/Funny_sounds/Assets.xcassets/Home/collectionBgV.imageset/Contents.json new file mode 100644 index 0000000..05e9b4f --- /dev/null +++ b/Funny_sounds/Assets.xcassets/Home/collectionBgV.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Subtract.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Subtract@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Subtract@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/Home/collectionBgV.imageset/Subtract.png b/Funny_sounds/Assets.xcassets/Home/collectionBgV.imageset/Subtract.png new file mode 100644 index 0000000..3f8724d Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Home/collectionBgV.imageset/Subtract.png differ diff --git a/Funny_sounds/Assets.xcassets/Home/collectionBgV.imageset/Subtract@2x.png b/Funny_sounds/Assets.xcassets/Home/collectionBgV.imageset/Subtract@2x.png new file mode 100644 index 0000000..977e944 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Home/collectionBgV.imageset/Subtract@2x.png differ diff --git a/Funny_sounds/Assets.xcassets/Home/collectionBgV.imageset/Subtract@3x.png b/Funny_sounds/Assets.xcassets/Home/collectionBgV.imageset/Subtract@3x.png new file mode 100644 index 0000000..3807b82 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Home/collectionBgV.imageset/Subtract@3x.png differ diff --git a/Funny_sounds/Assets.xcassets/Home/collectionImageV.imageset/Contents.json b/Funny_sounds/Assets.xcassets/Home/collectionImageV.imageset/Contents.json new file mode 100644 index 0000000..8fab8f5 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/Home/collectionImageV.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Group 4894.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Group 4894@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Group 4894@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/Home/collectionImageV.imageset/Group 4894.png b/Funny_sounds/Assets.xcassets/Home/collectionImageV.imageset/Group 4894.png new file mode 100644 index 0000000..b02185d Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Home/collectionImageV.imageset/Group 4894.png differ diff --git a/Funny_sounds/Assets.xcassets/Home/collectionImageV.imageset/Group 4894@2x.png b/Funny_sounds/Assets.xcassets/Home/collectionImageV.imageset/Group 4894@2x.png new file mode 100644 index 0000000..1b2f2f0 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Home/collectionImageV.imageset/Group 4894@2x.png differ diff --git a/Funny_sounds/Assets.xcassets/Home/collectionImageV.imageset/Group 4894@3x.png b/Funny_sounds/Assets.xcassets/Home/collectionImageV.imageset/Group 4894@3x.png new file mode 100644 index 0000000..72936f9 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Home/collectionImageV.imageset/Group 4894@3x.png differ diff --git a/Funny_sounds/Assets.xcassets/Home/homebg.imageset/Contents.json b/Funny_sounds/Assets.xcassets/Home/homebg.imageset/Contents.json new file mode 100644 index 0000000..9617363 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/Home/homebg.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "背景.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "背景@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "背景@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/Home/homebg.imageset/背景.png b/Funny_sounds/Assets.xcassets/Home/homebg.imageset/背景.png new file mode 100644 index 0000000..c6d5165 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Home/homebg.imageset/背景.png differ diff --git a/Funny_sounds/Assets.xcassets/Home/homebg.imageset/背景@2x.png b/Funny_sounds/Assets.xcassets/Home/homebg.imageset/背景@2x.png new file mode 100644 index 0000000..513ba82 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Home/homebg.imageset/背景@2x.png differ diff --git a/Funny_sounds/Assets.xcassets/Home/homebg.imageset/背景@3x.png b/Funny_sounds/Assets.xcassets/Home/homebg.imageset/背景@3x.png new file mode 100644 index 0000000..a8dd06b Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Home/homebg.imageset/背景@3x.png differ diff --git a/Funny_sounds/Assets.xcassets/Home/hometitle.imageset/Contents.json b/Funny_sounds/Assets.xcassets/Home/hometitle.imageset/Contents.json new file mode 100644 index 0000000..806b882 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/Home/hometitle.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "头部.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "头部@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "头部@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/Home/hometitle.imageset/头部.png b/Funny_sounds/Assets.xcassets/Home/hometitle.imageset/头部.png new file mode 100644 index 0000000..930da34 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Home/hometitle.imageset/头部.png differ diff --git a/Funny_sounds/Assets.xcassets/Home/hometitle.imageset/头部@2x.png b/Funny_sounds/Assets.xcassets/Home/hometitle.imageset/头部@2x.png new file mode 100644 index 0000000..fb0c2a6 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Home/hometitle.imageset/头部@2x.png differ diff --git a/Funny_sounds/Assets.xcassets/Home/hometitle.imageset/头部@3x.png b/Funny_sounds/Assets.xcassets/Home/hometitle.imageset/头部@3x.png new file mode 100644 index 0000000..808efde Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Home/hometitle.imageset/头部@3x.png differ diff --git a/Funny_sounds/Assets.xcassets/Tabbar/Contents.json b/Funny_sounds/Assets.xcassets/Tabbar/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/Tabbar/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/Tabbar/collect.imageset/Contents.json b/Funny_sounds/Assets.xcassets/Tabbar/collect.imageset/Contents.json new file mode 100644 index 0000000..7bc0dca --- /dev/null +++ b/Funny_sounds/Assets.xcassets/Tabbar/collect.imageset/Contents.json @@ -0,0 +1,26 @@ +{ + "images" : [ + { + "filename" : "Group 5219.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Group 5219@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Group 5219@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "template-rendering-intent" : "original" + } +} diff --git a/Funny_sounds/Assets.xcassets/Tabbar/collect.imageset/Group 5219.png b/Funny_sounds/Assets.xcassets/Tabbar/collect.imageset/Group 5219.png new file mode 100644 index 0000000..22d2a8d Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Tabbar/collect.imageset/Group 5219.png differ diff --git a/Funny_sounds/Assets.xcassets/Tabbar/collect.imageset/Group 5219@2x.png b/Funny_sounds/Assets.xcassets/Tabbar/collect.imageset/Group 5219@2x.png new file mode 100644 index 0000000..d2db192 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Tabbar/collect.imageset/Group 5219@2x.png differ diff --git a/Funny_sounds/Assets.xcassets/Tabbar/collect.imageset/Group 5219@3x.png b/Funny_sounds/Assets.xcassets/Tabbar/collect.imageset/Group 5219@3x.png new file mode 100644 index 0000000..852c5af Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Tabbar/collect.imageset/Group 5219@3x.png differ diff --git a/Funny_sounds/Assets.xcassets/Tabbar/home.imageset/Contents.json b/Funny_sounds/Assets.xcassets/Tabbar/home.imageset/Contents.json new file mode 100644 index 0000000..09eaac9 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/Tabbar/home.imageset/Contents.json @@ -0,0 +1,26 @@ +{ + "images" : [ + { + "filename" : "Group 5217.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Group 5217@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Group 5217@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "template-rendering-intent" : "original" + } +} diff --git a/Funny_sounds/Assets.xcassets/Tabbar/home.imageset/Group 5217.png b/Funny_sounds/Assets.xcassets/Tabbar/home.imageset/Group 5217.png new file mode 100644 index 0000000..6435dbf Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Tabbar/home.imageset/Group 5217.png differ diff --git a/Funny_sounds/Assets.xcassets/Tabbar/home.imageset/Group 5217@2x.png b/Funny_sounds/Assets.xcassets/Tabbar/home.imageset/Group 5217@2x.png new file mode 100644 index 0000000..3a573df Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Tabbar/home.imageset/Group 5217@2x.png differ diff --git a/Funny_sounds/Assets.xcassets/Tabbar/home.imageset/Group 5217@3x.png b/Funny_sounds/Assets.xcassets/Tabbar/home.imageset/Group 5217@3x.png new file mode 100644 index 0000000..451004e Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Tabbar/home.imageset/Group 5217@3x.png differ diff --git a/Funny_sounds/Assets.xcassets/Tabbar/setting.imageset/Contents.json b/Funny_sounds/Assets.xcassets/Tabbar/setting.imageset/Contents.json new file mode 100644 index 0000000..32dd965 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/Tabbar/setting.imageset/Contents.json @@ -0,0 +1,26 @@ +{ + "images" : [ + { + "filename" : "Vector.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Vector@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Vector@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "template-rendering-intent" : "original" + } +} diff --git a/Funny_sounds/Assets.xcassets/Tabbar/setting.imageset/Vector.png b/Funny_sounds/Assets.xcassets/Tabbar/setting.imageset/Vector.png new file mode 100644 index 0000000..3a90b87 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Tabbar/setting.imageset/Vector.png differ diff --git a/Funny_sounds/Assets.xcassets/Tabbar/setting.imageset/Vector@2x.png b/Funny_sounds/Assets.xcassets/Tabbar/setting.imageset/Vector@2x.png new file mode 100644 index 0000000..97c95d6 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Tabbar/setting.imageset/Vector@2x.png differ diff --git a/Funny_sounds/Assets.xcassets/Tabbar/setting.imageset/Vector@3x.png b/Funny_sounds/Assets.xcassets/Tabbar/setting.imageset/Vector@3x.png new file mode 100644 index 0000000..9c5b811 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Tabbar/setting.imageset/Vector@3x.png differ diff --git a/Funny_sounds/Assets.xcassets/Tabbar/tabbarbg.imageset/Contents.json b/Funny_sounds/Assets.xcassets/Tabbar/tabbarbg.imageset/Contents.json new file mode 100644 index 0000000..6b466b1 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/Tabbar/tabbarbg.imageset/Contents.json @@ -0,0 +1,26 @@ +{ + "images" : [ + { + "filename" : "Rectangle 3530.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Rectangle 3530@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Rectangle 3530@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "template-rendering-intent" : "original" + } +} diff --git a/Funny_sounds/Assets.xcassets/Tabbar/tabbarbg.imageset/Rectangle 3530.png b/Funny_sounds/Assets.xcassets/Tabbar/tabbarbg.imageset/Rectangle 3530.png new file mode 100644 index 0000000..1f3f863 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Tabbar/tabbarbg.imageset/Rectangle 3530.png differ diff --git a/Funny_sounds/Assets.xcassets/Tabbar/tabbarbg.imageset/Rectangle 3530@2x.png b/Funny_sounds/Assets.xcassets/Tabbar/tabbarbg.imageset/Rectangle 3530@2x.png new file mode 100644 index 0000000..584a5ba Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Tabbar/tabbarbg.imageset/Rectangle 3530@2x.png differ diff --git a/Funny_sounds/Assets.xcassets/Tabbar/tabbarbg.imageset/Rectangle 3530@3x.png b/Funny_sounds/Assets.xcassets/Tabbar/tabbarbg.imageset/Rectangle 3530@3x.png new file mode 100644 index 0000000..9c3e58f Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Tabbar/tabbarbg.imageset/Rectangle 3530@3x.png differ diff --git a/Funny_sounds/Assets.xcassets/Tabbar/tabbars.imageset/Contents.json b/Funny_sounds/Assets.xcassets/Tabbar/tabbars.imageset/Contents.json new file mode 100644 index 0000000..d91527c --- /dev/null +++ b/Funny_sounds/Assets.xcassets/Tabbar/tabbars.imageset/Contents.json @@ -0,0 +1,26 @@ +{ + "images" : [ + { + "filename" : "Rectangle 3531.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Rectangle 3531@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Rectangle 3531@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "template-rendering-intent" : "original" + } +} diff --git a/Funny_sounds/Assets.xcassets/Tabbar/tabbars.imageset/Rectangle 3531.png b/Funny_sounds/Assets.xcassets/Tabbar/tabbars.imageset/Rectangle 3531.png new file mode 100644 index 0000000..a895475 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Tabbar/tabbars.imageset/Rectangle 3531.png differ diff --git a/Funny_sounds/Assets.xcassets/Tabbar/tabbars.imageset/Rectangle 3531@2x.png b/Funny_sounds/Assets.xcassets/Tabbar/tabbars.imageset/Rectangle 3531@2x.png new file mode 100644 index 0000000..4c8363d Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Tabbar/tabbars.imageset/Rectangle 3531@2x.png differ diff --git a/Funny_sounds/Assets.xcassets/Tabbar/tabbars.imageset/Rectangle 3531@3x.png b/Funny_sounds/Assets.xcassets/Tabbar/tabbars.imageset/Rectangle 3531@3x.png new file mode 100644 index 0000000..8d7de39 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/Tabbar/tabbars.imageset/Rectangle 3531@3x.png differ diff --git a/Funny_sounds/Assets.xcassets/collect/Contents.json b/Funny_sounds/Assets.xcassets/collect/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/collect/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/collect/collectBg.imageset/Contents.json b/Funny_sounds/Assets.xcassets/collect/collectBg.imageset/Contents.json new file mode 100644 index 0000000..9617363 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/collect/collectBg.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "背景.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "背景@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "背景@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/collect/collectBg.imageset/背景.png b/Funny_sounds/Assets.xcassets/collect/collectBg.imageset/背景.png new file mode 100644 index 0000000..2c4fe83 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/collect/collectBg.imageset/背景.png differ diff --git a/Funny_sounds/Assets.xcassets/collect/collectBg.imageset/背景@2x.png b/Funny_sounds/Assets.xcassets/collect/collectBg.imageset/背景@2x.png new file mode 100644 index 0000000..8dbead5 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/collect/collectBg.imageset/背景@2x.png differ diff --git a/Funny_sounds/Assets.xcassets/collect/collectBg.imageset/背景@3x.png b/Funny_sounds/Assets.xcassets/collect/collectBg.imageset/背景@3x.png new file mode 100644 index 0000000..b741ace Binary files /dev/null and b/Funny_sounds/Assets.xcassets/collect/collectBg.imageset/背景@3x.png differ diff --git a/Funny_sounds/Assets.xcassets/collect/collectCellbg.imageset/Contents.json b/Funny_sounds/Assets.xcassets/collect/collectCellbg.imageset/Contents.json new file mode 100644 index 0000000..de88070 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/collect/collectCellbg.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Rectangle 3628.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Rectangle 3628@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Rectangle 3628@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/collect/collectCellbg.imageset/Rectangle 3628.png b/Funny_sounds/Assets.xcassets/collect/collectCellbg.imageset/Rectangle 3628.png new file mode 100644 index 0000000..ba733fc Binary files /dev/null and b/Funny_sounds/Assets.xcassets/collect/collectCellbg.imageset/Rectangle 3628.png differ diff --git a/Funny_sounds/Assets.xcassets/collect/collectCellbg.imageset/Rectangle 3628@2x.png b/Funny_sounds/Assets.xcassets/collect/collectCellbg.imageset/Rectangle 3628@2x.png new file mode 100644 index 0000000..dd78780 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/collect/collectCellbg.imageset/Rectangle 3628@2x.png differ diff --git a/Funny_sounds/Assets.xcassets/collect/collectCellbg.imageset/Rectangle 3628@3x.png b/Funny_sounds/Assets.xcassets/collect/collectCellbg.imageset/Rectangle 3628@3x.png new file mode 100644 index 0000000..229d473 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/collect/collectCellbg.imageset/Rectangle 3628@3x.png differ diff --git a/Funny_sounds/Assets.xcassets/collect/tittleimage.imageset/Contents.json b/Funny_sounds/Assets.xcassets/collect/tittleimage.imageset/Contents.json new file mode 100644 index 0000000..d579d11 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/collect/tittleimage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "tittle image.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tittle image@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tittle image@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/collect/tittleimage.imageset/tittle image.png b/Funny_sounds/Assets.xcassets/collect/tittleimage.imageset/tittle image.png new file mode 100644 index 0000000..1617574 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/collect/tittleimage.imageset/tittle image.png differ diff --git a/Funny_sounds/Assets.xcassets/collect/tittleimage.imageset/tittle image@2x.png b/Funny_sounds/Assets.xcassets/collect/tittleimage.imageset/tittle image@2x.png new file mode 100644 index 0000000..9bdebb8 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/collect/tittleimage.imageset/tittle image@2x.png differ diff --git a/Funny_sounds/Assets.xcassets/collect/tittleimage.imageset/tittle image@3x.png b/Funny_sounds/Assets.xcassets/collect/tittleimage.imageset/tittle image@3x.png new file mode 100644 index 0000000..f498334 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/collect/tittleimage.imageset/tittle image@3x.png differ diff --git a/Funny_sounds/Assets.xcassets/details/Contents.json b/Funny_sounds/Assets.xcassets/details/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/details/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/details/alphabgImageV.imageset/Contents.json b/Funny_sounds/Assets.xcassets/details/alphabgImageV.imageset/Contents.json new file mode 100644 index 0000000..a6731a3 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/details/alphabgImageV.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Rectangle 3615.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Rectangle 3615@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Rectangle 3615@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/details/alphabgImageV.imageset/Rectangle 3615.png b/Funny_sounds/Assets.xcassets/details/alphabgImageV.imageset/Rectangle 3615.png new file mode 100644 index 0000000..1314ede Binary files /dev/null and b/Funny_sounds/Assets.xcassets/details/alphabgImageV.imageset/Rectangle 3615.png differ diff --git a/Funny_sounds/Assets.xcassets/details/alphabgImageV.imageset/Rectangle 3615@2x.png b/Funny_sounds/Assets.xcassets/details/alphabgImageV.imageset/Rectangle 3615@2x.png new file mode 100644 index 0000000..13e180b Binary files /dev/null and b/Funny_sounds/Assets.xcassets/details/alphabgImageV.imageset/Rectangle 3615@2x.png differ diff --git a/Funny_sounds/Assets.xcassets/details/alphabgImageV.imageset/Rectangle 3615@3x.png b/Funny_sounds/Assets.xcassets/details/alphabgImageV.imageset/Rectangle 3615@3x.png new file mode 100644 index 0000000..37231a4 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/details/alphabgImageV.imageset/Rectangle 3615@3x.png differ diff --git a/Funny_sounds/Assets.xcassets/details/camear_n.imageset/Contents.json b/Funny_sounds/Assets.xcassets/details/camear_n.imageset/Contents.json new file mode 100644 index 0000000..be14863 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/details/camear_n.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "相机.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "相机@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "相机@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/details/camear_n.imageset/相机.png b/Funny_sounds/Assets.xcassets/details/camear_n.imageset/相机.png new file mode 100644 index 0000000..27d85b5 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/details/camear_n.imageset/相机.png differ diff --git a/Funny_sounds/Assets.xcassets/details/camear_n.imageset/相机@2x.png b/Funny_sounds/Assets.xcassets/details/camear_n.imageset/相机@2x.png new file mode 100644 index 0000000..0308b05 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/details/camear_n.imageset/相机@2x.png differ diff --git a/Funny_sounds/Assets.xcassets/details/camear_n.imageset/相机@3x.png b/Funny_sounds/Assets.xcassets/details/camear_n.imageset/相机@3x.png new file mode 100644 index 0000000..13eccd3 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/details/camear_n.imageset/相机@3x.png differ diff --git a/Funny_sounds/Assets.xcassets/details/camear_s.imageset/Contents.json b/Funny_sounds/Assets.xcassets/details/camear_s.imageset/Contents.json new file mode 100644 index 0000000..be14863 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/details/camear_s.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "相机.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "相机@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "相机@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/details/camear_s.imageset/相机.png b/Funny_sounds/Assets.xcassets/details/camear_s.imageset/相机.png new file mode 100644 index 0000000..8c33124 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/details/camear_s.imageset/相机.png differ diff --git a/Funny_sounds/Assets.xcassets/details/camear_s.imageset/相机@2x.png b/Funny_sounds/Assets.xcassets/details/camear_s.imageset/相机@2x.png new file mode 100644 index 0000000..d13fc88 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/details/camear_s.imageset/相机@2x.png differ diff --git a/Funny_sounds/Assets.xcassets/details/camear_s.imageset/相机@3x.png b/Funny_sounds/Assets.xcassets/details/camear_s.imageset/相机@3x.png new file mode 100644 index 0000000..c3a25b1 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/details/camear_s.imageset/相机@3x.png differ diff --git a/Funny_sounds/Assets.xcassets/details/collect_n.imageset/Contents.json b/Funny_sounds/Assets.xcassets/details/collect_n.imageset/Contents.json new file mode 100644 index 0000000..a53cf6b --- /dev/null +++ b/Funny_sounds/Assets.xcassets/details/collect_n.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "爱心.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "爱心@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "爱心@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/details/collect_n.imageset/爱心.png b/Funny_sounds/Assets.xcassets/details/collect_n.imageset/爱心.png new file mode 100644 index 0000000..9cf9fa3 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/details/collect_n.imageset/爱心.png differ diff --git a/Funny_sounds/Assets.xcassets/details/collect_n.imageset/爱心@2x.png b/Funny_sounds/Assets.xcassets/details/collect_n.imageset/爱心@2x.png new file mode 100644 index 0000000..02ae986 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/details/collect_n.imageset/爱心@2x.png differ diff --git a/Funny_sounds/Assets.xcassets/details/collect_n.imageset/爱心@3x.png b/Funny_sounds/Assets.xcassets/details/collect_n.imageset/爱心@3x.png new file mode 100644 index 0000000..1219a3a Binary files /dev/null and b/Funny_sounds/Assets.xcassets/details/collect_n.imageset/爱心@3x.png differ diff --git a/Funny_sounds/Assets.xcassets/details/collect_s.imageset/Contents.json b/Funny_sounds/Assets.xcassets/details/collect_s.imageset/Contents.json new file mode 100644 index 0000000..a53cf6b --- /dev/null +++ b/Funny_sounds/Assets.xcassets/details/collect_s.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "爱心.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "爱心@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "爱心@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/details/collect_s.imageset/爱心.png b/Funny_sounds/Assets.xcassets/details/collect_s.imageset/爱心.png new file mode 100644 index 0000000..4463588 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/details/collect_s.imageset/爱心.png differ diff --git a/Funny_sounds/Assets.xcassets/details/collect_s.imageset/爱心@2x.png b/Funny_sounds/Assets.xcassets/details/collect_s.imageset/爱心@2x.png new file mode 100644 index 0000000..ffb9974 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/details/collect_s.imageset/爱心@2x.png differ diff --git a/Funny_sounds/Assets.xcassets/details/collect_s.imageset/爱心@3x.png b/Funny_sounds/Assets.xcassets/details/collect_s.imageset/爱心@3x.png new file mode 100644 index 0000000..7d56a9c Binary files /dev/null and b/Funny_sounds/Assets.xcassets/details/collect_s.imageset/爱心@3x.png differ diff --git a/Funny_sounds/Assets.xcassets/details/contentBg.imageset/Contents.json b/Funny_sounds/Assets.xcassets/details/contentBg.imageset/Contents.json new file mode 100644 index 0000000..d972735 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/details/contentBg.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Ellipse 39.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Ellipse 39@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Ellipse 39@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/details/contentBg.imageset/Ellipse 39.png b/Funny_sounds/Assets.xcassets/details/contentBg.imageset/Ellipse 39.png new file mode 100644 index 0000000..70a9c6d Binary files /dev/null and b/Funny_sounds/Assets.xcassets/details/contentBg.imageset/Ellipse 39.png differ diff --git a/Funny_sounds/Assets.xcassets/details/contentBg.imageset/Ellipse 39@2x.png b/Funny_sounds/Assets.xcassets/details/contentBg.imageset/Ellipse 39@2x.png new file mode 100644 index 0000000..b98d9c4 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/details/contentBg.imageset/Ellipse 39@2x.png differ diff --git a/Funny_sounds/Assets.xcassets/details/contentBg.imageset/Ellipse 39@3x.png b/Funny_sounds/Assets.xcassets/details/contentBg.imageset/Ellipse 39@3x.png new file mode 100644 index 0000000..b12fc0e Binary files /dev/null and b/Funny_sounds/Assets.xcassets/details/contentBg.imageset/Ellipse 39@3x.png differ diff --git a/Funny_sounds/Assets.xcassets/details/delayimageV.imageset/Contents.json b/Funny_sounds/Assets.xcassets/details/delayimageV.imageset/Contents.json new file mode 100644 index 0000000..df240cf --- /dev/null +++ b/Funny_sounds/Assets.xcassets/details/delayimageV.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Vector.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Vector@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Vector@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/details/delayimageV.imageset/Vector.png b/Funny_sounds/Assets.xcassets/details/delayimageV.imageset/Vector.png new file mode 100644 index 0000000..369e053 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/details/delayimageV.imageset/Vector.png differ diff --git a/Funny_sounds/Assets.xcassets/details/delayimageV.imageset/Vector@2x.png b/Funny_sounds/Assets.xcassets/details/delayimageV.imageset/Vector@2x.png new file mode 100644 index 0000000..031ac01 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/details/delayimageV.imageset/Vector@2x.png differ diff --git a/Funny_sounds/Assets.xcassets/details/delayimageV.imageset/Vector@3x.png b/Funny_sounds/Assets.xcassets/details/delayimageV.imageset/Vector@3x.png new file mode 100644 index 0000000..73fa7bc Binary files /dev/null and b/Funny_sounds/Assets.xcassets/details/delayimageV.imageset/Vector@3x.png differ diff --git a/Funny_sounds/Assets.xcassets/setting/Agreement.imageset/Agreement.png b/Funny_sounds/Assets.xcassets/setting/Agreement.imageset/Agreement.png new file mode 100644 index 0000000..c4eb838 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/setting/Agreement.imageset/Agreement.png differ diff --git a/Funny_sounds/Assets.xcassets/setting/Agreement.imageset/Agreement@2x.png b/Funny_sounds/Assets.xcassets/setting/Agreement.imageset/Agreement@2x.png new file mode 100644 index 0000000..d3d23a5 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/setting/Agreement.imageset/Agreement@2x.png differ diff --git a/Funny_sounds/Assets.xcassets/setting/Agreement.imageset/Agreement@3x.png b/Funny_sounds/Assets.xcassets/setting/Agreement.imageset/Agreement@3x.png new file mode 100644 index 0000000..1cbdd5f Binary files /dev/null and b/Funny_sounds/Assets.xcassets/setting/Agreement.imageset/Agreement@3x.png differ diff --git a/Funny_sounds/Assets.xcassets/setting/Agreement.imageset/Contents.json b/Funny_sounds/Assets.xcassets/setting/Agreement.imageset/Contents.json new file mode 100644 index 0000000..a3cb2f7 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/setting/Agreement.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Agreement.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Agreement@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Agreement@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/setting/Contents.json b/Funny_sounds/Assets.xcassets/setting/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/setting/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/setting/Privacy.imageset/Contents.json b/Funny_sounds/Assets.xcassets/setting/Privacy.imageset/Contents.json new file mode 100644 index 0000000..d175162 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/setting/Privacy.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Privacy.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Privacy@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Privacy@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/setting/Privacy.imageset/Privacy.png b/Funny_sounds/Assets.xcassets/setting/Privacy.imageset/Privacy.png new file mode 100644 index 0000000..bbd8b57 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/setting/Privacy.imageset/Privacy.png differ diff --git a/Funny_sounds/Assets.xcassets/setting/Privacy.imageset/Privacy@2x.png b/Funny_sounds/Assets.xcassets/setting/Privacy.imageset/Privacy@2x.png new file mode 100644 index 0000000..22e4d1c Binary files /dev/null and b/Funny_sounds/Assets.xcassets/setting/Privacy.imageset/Privacy@2x.png differ diff --git a/Funny_sounds/Assets.xcassets/setting/Privacy.imageset/Privacy@3x.png b/Funny_sounds/Assets.xcassets/setting/Privacy.imageset/Privacy@3x.png new file mode 100644 index 0000000..e6dc3bb Binary files /dev/null and b/Funny_sounds/Assets.xcassets/setting/Privacy.imageset/Privacy@3x.png differ diff --git a/Funny_sounds/Assets.xcassets/setting/Share.imageset/Contents.json b/Funny_sounds/Assets.xcassets/setting/Share.imageset/Contents.json new file mode 100644 index 0000000..0d6f128 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/setting/Share.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Share.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Share@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Share@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/setting/Share.imageset/Share.png b/Funny_sounds/Assets.xcassets/setting/Share.imageset/Share.png new file mode 100644 index 0000000..950376a Binary files /dev/null and b/Funny_sounds/Assets.xcassets/setting/Share.imageset/Share.png differ diff --git a/Funny_sounds/Assets.xcassets/setting/Share.imageset/Share@2x.png b/Funny_sounds/Assets.xcassets/setting/Share.imageset/Share@2x.png new file mode 100644 index 0000000..7cfce47 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/setting/Share.imageset/Share@2x.png differ diff --git a/Funny_sounds/Assets.xcassets/setting/Share.imageset/Share@3x.png b/Funny_sounds/Assets.xcassets/setting/Share.imageset/Share@3x.png new file mode 100644 index 0000000..b7d7379 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/setting/Share.imageset/Share@3x.png differ diff --git a/Funny_sounds/Assets.xcassets/setting/settingBg.imageset/Contents.json b/Funny_sounds/Assets.xcassets/setting/settingBg.imageset/Contents.json new file mode 100644 index 0000000..9617363 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/setting/settingBg.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "背景.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "背景@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "背景@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/setting/settingBg.imageset/背景.png b/Funny_sounds/Assets.xcassets/setting/settingBg.imageset/背景.png new file mode 100644 index 0000000..1445654 Binary files /dev/null and b/Funny_sounds/Assets.xcassets/setting/settingBg.imageset/背景.png differ diff --git a/Funny_sounds/Assets.xcassets/setting/settingBg.imageset/背景@2x.png b/Funny_sounds/Assets.xcassets/setting/settingBg.imageset/背景@2x.png new file mode 100644 index 0000000..8c6bc7d Binary files /dev/null and b/Funny_sounds/Assets.xcassets/setting/settingBg.imageset/背景@2x.png differ diff --git a/Funny_sounds/Assets.xcassets/setting/settingBg.imageset/背景@3x.png b/Funny_sounds/Assets.xcassets/setting/settingBg.imageset/背景@3x.png new file mode 100644 index 0000000..6dbf8dd Binary files /dev/null and b/Funny_sounds/Assets.xcassets/setting/settingBg.imageset/背景@3x.png differ diff --git a/Funny_sounds/Assets.xcassets/setting/settingTitle.imageset/Contents.json b/Funny_sounds/Assets.xcassets/setting/settingTitle.imageset/Contents.json new file mode 100644 index 0000000..7fe6059 --- /dev/null +++ b/Funny_sounds/Assets.xcassets/setting/settingTitle.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "设置.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "设置@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "设置@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Funny_sounds/Assets.xcassets/setting/settingTitle.imageset/设置.png b/Funny_sounds/Assets.xcassets/setting/settingTitle.imageset/设置.png new file mode 100644 index 0000000..46b5afe Binary files /dev/null and b/Funny_sounds/Assets.xcassets/setting/settingTitle.imageset/设置.png differ diff --git a/Funny_sounds/Assets.xcassets/setting/settingTitle.imageset/设置@2x.png b/Funny_sounds/Assets.xcassets/setting/settingTitle.imageset/设置@2x.png new file mode 100644 index 0000000..90faf0f Binary files /dev/null and b/Funny_sounds/Assets.xcassets/setting/settingTitle.imageset/设置@2x.png differ diff --git a/Funny_sounds/Assets.xcassets/setting/settingTitle.imageset/设置@3x.png b/Funny_sounds/Assets.xcassets/setting/settingTitle.imageset/设置@3x.png new file mode 100644 index 0000000..823a4df Binary files /dev/null and b/Funny_sounds/Assets.xcassets/setting/settingTitle.imageset/设置@3x.png differ diff --git a/Funny_sounds/Base.lproj/LaunchScreen.storyboard b/Funny_sounds/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..865e932 --- /dev/null +++ b/Funny_sounds/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Funny_sounds/Base.lproj/Main.storyboard b/Funny_sounds/Base.lproj/Main.storyboard new file mode 100644 index 0000000..da0f3f9 --- /dev/null +++ b/Funny_sounds/Base.lproj/Main.storyboard @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Funny_sounds/Collect/C/FS_CollectVC.swift b/Funny_sounds/Collect/C/FS_CollectVC.swift new file mode 100644 index 0000000..972738c --- /dev/null +++ b/Funny_sounds/Collect/C/FS_CollectVC.swift @@ -0,0 +1,122 @@ +// +// FS_CollectVC.swift +// Funny_sounds +// +// Created by 忆海16 on 2024/8/14. +// + +import UIKit +import SnapKit + +class FS_CollectVC: RootVC { + var collectArr = [AudioFile]() + + lazy var collectionView: UICollectionView = { + let layout = UICollectionViewFlowLayout() + let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout) + collectionView.backgroundColor = .clear + collectionView.showsVerticalScrollIndicator = false + return collectionView + }() + + + override func viewDidLoad() { + super.viewDidLoad() + setUI() + setcollectionView() + } + + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + + self.navigationController?.navigationBar.isHidden = true + collectArr = collectManager.shared.getAllFavorites() + + collectionView.reloadData() + } + + // MARK: - 收藏UI + + func setUI(){ + + lazy var bgImageV:UIImageView = { + let bgImageV = UIImageView() + bgImageV.image = UIImage(named: "collectBg") + bgImageV.contentMode = .scaleAspectFill + + return bgImageV + }() + + lazy var titleImageV:UIImageView = { + let titleImageV = UIImageView() + titleImageV.image = UIImage(named: "tittleimage") + return titleImageV + }() + + + collectionView.backgroundColor = .clear + collectionView.showsVerticalScrollIndicator = false + + self.view.addSubview(bgImageV) + self.view.addSubview(titleImageV) + self.view.addSubview(collectionView) + + bgImageV.snp.makeConstraints { make in + make.width.equalTo(self.view) + make.height.equalTo(self.view) + } + + titleImageV.snp.makeConstraints { make in + make.top.equalTo(self.view.safeAreaLayoutGuide).offset(15) + make.height.equalTo(81) + make.width.equalTo(self.view) + } + + collectionView.snp.makeConstraints { make in + make.top.equalTo(titleImageV.snp.bottom).offset(25) + make.width.equalToSuperview() + make.bottom.equalTo(self.view.safeAreaLayoutGuide) + } + + + } + // MARK: -设置collectionView + func setcollectionView(){ + collectionView.delegate = self + collectionView.dataSource = self + let layout = collectCollectionViewFlowLayout() + collectionView.collectionViewLayout = layout + layout.scrollDirection = .vertical + + collectionView.register(FS_CollectCollectionCell.self, forCellWithReuseIdentifier: "FS_CollectCollectionCell") + + } + + +} +// MARK: -设置collectionView代理 +extension FS_CollectVC:UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout{ + + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return collectArr.count + return 10 + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell{ + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "FS_CollectCollectionCell", for: indexPath)as!FS_CollectCollectionCell + cell.model = collectArr[indexPath.row] + + return cell + } + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath){ + + let vc = FS_DetailsVC() + vc.model = self.collectArr[indexPath.row] + navigationController?.pushViewController(vc, animated: true) + + } + + +} diff --git a/Funny_sounds/Collect/V/FS_CollectCollectionCell.swift b/Funny_sounds/Collect/V/FS_CollectCollectionCell.swift new file mode 100644 index 0000000..b057563 --- /dev/null +++ b/Funny_sounds/Collect/V/FS_CollectCollectionCell.swift @@ -0,0 +1,100 @@ +// +// FS_CollectCollectionCell.swift +// Funny_sounds +// +// Created by 忆海16 on 2024/8/27. + + +import UIKit +import SDWebImage + +class FS_CollectCollectionCell: UICollectionViewCell { + lazy var bgImageV:UIImageView = { + let bgImageV = UIImageView() + bgImageV.image = UIImage(named: "collectCellbg") + bgImageV.contentMode = .scaleToFill + + return bgImageV + }() + + lazy var conentImageV:UIImageView = { + let conentImageV = UIImageView() + conentImageV.image = UIImage(named: "collectionImageV") + conentImageV.contentMode = .scaleAspectFit + conentImageV.layer.cornerRadius = 10 + conentImageV.clipsToBounds = true + conentImageV.contentMode = .scaleToFill + return conentImageV + }() + + + lazy var nameLabel: BorderedLabel = { + + let nameLabel = BorderedLabel() + nameLabel.text = "Air Horn" + nameLabel.font = UIFont(name: "PaytoneOne-Regular", size: 16) + nameLabel.textColor = .hexSting(color: "#AFFF6B", alpha: 1) // 设置文本颜色为白色 + nameLabel.numberOfLines = 0 + nameLabel.textAlignment = .center + return nameLabel + + }() + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override init(frame: CGRect) { + super.init(frame: frame) + setUI() + + contentView.backgroundColor = .clear + + } + // MARK: -设置布局 + func setUI(){ + self.addSubview(bgImageV) + self.addSubview(nameLabel) + self.addSubview(conentImageV) + + + bgImageV.snp.makeConstraints { make in + make.top.equalToSuperview() + make.bottom.equalToSuperview() + make.right.equalToSuperview() + make.left.equalToSuperview() + + } + + nameLabel.snp.makeConstraints { make in + make.top.equalTo(self.snp.top).offset(7) + make.centerX.equalToSuperview() + make.width.equalToSuperview() + make.height.equalTo(17) + } + + + conentImageV.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.top.equalTo(nameLabel.snp.bottom).offset(13) + make.height.equalTo(89) + make.width.equalTo(85) + + } + + } + + var model:AudioFile?{ + didSet{ + if let imageURL = URL(string: model?.preUrl ?? "") { + conentImageV.sd_setImage(with: imageURL, placeholderImage: UIImage(named: "collectionImageV")) + } + nameLabel.text = model?.title + } + } + + +} + + + diff --git a/Funny_sounds/Customfonts/PaytoneOne-Regular.ttf b/Funny_sounds/Customfonts/PaytoneOne-Regular.ttf new file mode 100644 index 0000000..29cccb5 Binary files /dev/null and b/Funny_sounds/Customfonts/PaytoneOne-Regular.ttf differ diff --git a/Funny_sounds/Home/C/FS_ClassificationVC.swift b/Funny_sounds/Home/C/FS_ClassificationVC.swift new file mode 100644 index 0000000..ed5fc33 --- /dev/null +++ b/Funny_sounds/Home/C/FS_ClassificationVC.swift @@ -0,0 +1,150 @@ +// +// FS_ClassificationVC.swift +// Funny_sounds +// +// Created by 忆海16 on 2024/8/15. +// + +import UIKit +import SnapKit + +class FS_ClassificationVC: RootVC { + + var categoryarr = [SoundCategory]() + + var arr: [AudioFile] = [] + + lazy var collectionView: UICollectionView = { + let layout = UICollectionViewFlowLayout() + let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout) + collectionView.backgroundColor = .clear + collectionView.showsVerticalScrollIndicator = false + return collectionView + }() + + + lazy var bgimage = UIImageView() + + lazy var backBtn = UIButton() + + lazy var titLabel = UILabel() + + var typestring:String = "no hase string" + + override func viewDidLoad() { + super.viewDidLoad() + + setHomeUI() + + setcollectionView() + } + + + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + self.navigationController?.navigationBar.isHidden = true + + + } + + // MARK: -细分类布局布局 + func setHomeUI(){ + + bgimage.image = UIImage(named: "classificationbg") + bgimage.contentMode = .scaleAspectFill + self.view.addSubview(bgimage) + + backBtn.setImage(UIImage(named: "back"), for: .normal) + backBtn.addTarget(self, action: #selector(back), for: .touchUpInside) + self.view.addSubview(backBtn) + + titLabel.text = typestring + titLabel.font = UIFont(name: "PaytoneOne-Regular", size: 25) + titLabel.textColor = .white + titLabel.numberOfLines = 1 + titLabel.textAlignment = .center + self.view.addSubview(titLabel) + + + collectionView.backgroundColor = .clear + collectionView.showsVerticalScrollIndicator = false + self.view.addSubview(collectionView) + + + + + bgimage.snp.makeConstraints { make in + make.width.equalTo(self.view) + make.height.equalTo(self.view) + } + + + backBtn.snp.makeConstraints { make in + make.top.equalTo(self.view.safeAreaLayoutGuide).offset(20) + make.height.width.equalTo(36) + make.left.equalToSuperview().offset(20) + } + + titLabel.snp.makeConstraints { make in + make.centerY.equalTo(backBtn).offset(-2) + make.centerX.equalToSuperview() + make.left.equalTo(backBtn.snp.right).offset(5) + make.right.equalToSuperview().offset(10) + } + + + collectionView.snp.makeConstraints { make in + make.top.equalTo(titLabel.snp.bottom).offset(25) + make.width.equalToSuperview() + make.bottom.equalTo(self.view.safeAreaLayoutGuide) + } + + } + + + + // MARK: -设置collectionView + func setcollectionView(){ + collectionView.delegate = self + collectionView.dataSource = self + let layout = tyepeCollectionViewFlowLayout() + collectionView.collectionViewLayout = layout + layout.scrollDirection = .vertical + + collectionView.register(FS_ClassificationCollectionCell.self, forCellWithReuseIdentifier: "FS_ClassificationCollectionCell") + + } + + @objc func back(){ + self.navigationController?.popViewController(animated: true) + } + +} + +// MARK: -设置collectionView代理 +extension FS_ClassificationVC:UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout{ + + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return arr.count + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell{ + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "FS_ClassificationCollectionCell", for: indexPath)as!FS_ClassificationCollectionCell + cell.model = arr[indexPath.row] + + return cell + } + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath){ + + let vc = FS_DetailsVC() + vc.arr = self.arr + vc.model = self.arr[indexPath.row] + navigationController?.pushViewController(vc, animated: true) + + } + + +} + diff --git a/Funny_sounds/Home/C/FS_DetailsVC.swift b/Funny_sounds/Home/C/FS_DetailsVC.swift new file mode 100644 index 0000000..a9c10c0 --- /dev/null +++ b/Funny_sounds/Home/C/FS_DetailsVC.swift @@ -0,0 +1,479 @@ +// +// FS_DetailsVC.swift +// Funny_sounds +// +// Created by 忆海16 on 2024/8/16. +// + + +import UIKit +import SnapKit +import AVFoundation +import SDWebImage + +class FS_DetailsVC: RootVC { + + var backBtn = UIButton() + var collectBtn = UIButton() + var camearBtn = UIButton() + var bgimageV = UIImageView() + var conentView = UIView() + var conentBgImageV = UIImageView() + var contengImageV = UIImageView() + var nameLabel = UILabel() + var bottomView = UIView() + var bottomImageV = UIImageView() + + var delayView = UIView() + var delayLabel = BorderedLabel() + var delayBtn = UIButton() + var delayimageV = UIImageView() + + var countdown: CountdownTimer? + + lazy var collectionView: UICollectionView = { + let layout = UICollectionViewFlowLayout() + let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout) + collectionView.backgroundColor = .clear + collectionView.showsVerticalScrollIndicator = true + return collectionView + }() + + var captureSession: AVCaptureSession! + var previewLayer: AVCaptureVideoPreviewLayer! + + var arr: [AudioFile] = [] + + var model:AudioFile? + + var audioPlayer: AVPlayer? + var playerItem: AVPlayerItem? + + let cellWidth: CGFloat = 92 + let cellHeight: CGFloat = 92 + let cellSpacing: CGFloat = 10 + + override func viewDidLoad() { + super.viewDidLoad() + // 初始化捕捉会话 + captureSession = AVCaptureSession() + captureSession.sessionPreset = .high + + // 获取设备的默认视频捕捉设备 (通常是后置摄像头) + guard let camera = AVCaptureDevice.default(for: .video) else { + print("无法访问摄像头") + return + } + + do { + // 将摄像头作为输入设备添加到会话中 + let input = try AVCaptureDeviceInput(device: camera) + if captureSession.canAddInput(input) { + captureSession.addInput(input) + } else { + print("无法添加输入设备") + return + } + } catch { + print("Error: \(error.localizedDescription)") + return + } + + // 创建一个预览层,用来展示相机捕捉到的内容 + previewLayer = AVCaptureVideoPreviewLayer(session: captureSession) + previewLayer.videoGravity = .resizeAspectFill + previewLayer.frame = view.layer.bounds + view.layer.addSublayer(previewLayer) + + // 启动捕捉会话 + captureSession.startRunning() + + // 添加点击手势识别器 + let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleTap)) + bgimageV.isUserInteractionEnabled = true + bgimageV.addGestureRecognizer(tapGesture) + + setUI() + setcollectionView() + + + setEditUI() + + let audioFile = AudioFile(title: model?.title ?? "", mp3Url: model?.mp3Url ?? "", preUrl: model?.preUrl ?? "") + // 检查是否已收藏 + if collectManager.shared.isFavorite(audioFile: audioFile) { + print("音频文件已被收藏") + self.collectBtn.isSelected = true + } else { + print("音频文件未被收藏") + self.collectBtn.isSelected = false + } + + preloadAudio() + + } + + + // MARK: - Preload Audio + func preloadAudio() { + // MP3 file URL + if let url = URL(string: model!.mp3Url) { + // Create AVPlayerItem with the URL + playerItem = AVPlayerItem(url: url) + + // Initialize AVPlayer with the preloaded AVPlayerItem + audioPlayer = AVPlayer(playerItem: playerItem) + } else { + print("Invalid audio URL") + } + } + + +// MARK: - UI + + func setUI(){ + bgimageV.image = UIImage(named: "settingBg") + bgimageV.contentMode = .scaleAspectFill + self.view.addSubview(bgimageV) + + backBtn.setImage(UIImage(named: "back"), for: .normal) + backBtn.addTarget(self, action: #selector(back), for: .touchUpInside) + self.view.addSubview(backBtn) + + + collectBtn.setImage(UIImage(named: "collect_n"), for: .normal) + collectBtn.setImage(UIImage(named: "collect_s"), for: .selected) + collectBtn.addTarget(self, action: #selector(collectTouch), for: .touchUpInside) + self.view.addSubview(collectBtn) + + camearBtn.setImage(UIImage(named: "camear_n"), for: .normal) + camearBtn.setImage(UIImage(named: "camear_s"), for: .selected) + camearBtn.addTarget(self, action: #selector(camearBtnTouch), for: .touchUpInside) + self.view.addSubview(camearBtn) + + + conentView.backgroundColor = .clear + self.view.addSubview(conentView) + + + conentBgImageV.image = UIImage(named: "contentBg") + conentBgImageV.contentMode = .scaleAspectFill + self.conentView.addSubview(conentBgImageV) + + + contengImageV.image = UIImage(named: "collectionImageV") + contengImageV.layer.cornerRadius = 70 + contengImageV.contentMode = .scaleToFill + contengImageV.clipsToBounds = true + self.conentView.addSubview(contengImageV) + + nameLabel.text = "Air Horn1" + nameLabel.font = UIFont(name: "PaytoneOne-Regular", size: 25) + nameLabel.textColor = .white + nameLabel.numberOfLines = 0 + nameLabel.textAlignment = .center + self.conentView.addSubview(nameLabel) + + + bottomView.backgroundColor = .clear + self.view.addSubview(bottomView) + + bottomImageV.image = UIImage(named: "alphabgImageV") + bottomImageV.contentMode = .scaleAspectFill + self.bottomView.addSubview(bottomImageV) + + + collectionView.backgroundColor = .clear + collectionView.showsHorizontalScrollIndicator = false + self.bottomView.addSubview(collectionView) + + delayView.backgroundColor = UIColor.hexSting(color: "#4EDB96", alpha: 0.8) + delayView.layer.cornerRadius = 8 + delayView.clipsToBounds = true + self.view.addSubview(delayView) + + + delayLabel.text = "Delay: OFF" + delayLabel.font = UIFont(name: "PaytoneOne-Regular", size: 15) + delayLabel.textColor = .white // 设置文本颜色为白色 + delayLabel.numberOfLines = 0 + delayLabel.textAlignment = .center + + // 设置阴影效果 + let shadow = NSShadow() + shadow.shadowColor = UIColor.black.withAlphaComponent(1.0) // 黑色阴影 + shadow.shadowOffset = CGSize(width: 0, height: 6) // 向下偏移2个点 + shadow.shadowBlurRadius = 0 // 无模糊度 + + // 设置属性字符串并应用阴影 + let attributedText = NSMutableAttributedString(string: delayLabel.text!) + attributedText.addAttribute(.shadow, value: shadow, range: NSRange(location: 0, length: delayLabel.text!.count)) + delayLabel.attributedText = attributedText + delayLabel.sizeToFit() + self.delayView.addSubview(delayLabel) + + delayimageV.image = UIImage(named: "delayimageV") + self.delayView.addSubview(delayimageV) + + delayBtn.addTarget(self, action: #selector(delaysTouch), for: .touchUpInside) + + self.delayView.addSubview(delayBtn) + + bgimageV.snp.makeConstraints { make in + make.width.equalTo(self.view) + make.height.equalTo(self.view) + } + + + backBtn.snp.makeConstraints { make in + make.top.equalTo(self.view.safeAreaLayoutGuide).offset(20) + make.height.width.equalTo(36) + make.left.equalToSuperview().offset(20) + } + + collectBtn.snp.makeConstraints { make in + make.centerY.equalTo(backBtn) + make.right.equalToSuperview().offset(-13) + make.width.height.equalTo(48) + } + + camearBtn.snp.makeConstraints { make in + make.centerX.equalTo(collectBtn) + make.top.equalTo(collectBtn.snp.bottom).offset(18) + make.width.height.equalTo(48) + } + + conentView.snp.makeConstraints { make in + make.height.equalTo(260) + make.width.equalTo(220) + make.top.equalTo(backBtn.snp.bottom).offset(60) + make.centerX.equalToSuperview() + } + + conentBgImageV.snp.makeConstraints { make in + make.width.height.equalTo(200) + make.top.equalTo(conentView.snp.top) + make.centerX.equalTo(conentView) + } + + contengImageV.snp.makeConstraints { make in + make.height.width.equalTo(140) + make.centerX.centerY.equalTo(conentBgImageV) + } + + nameLabel.snp.makeConstraints { make in + make.top.equalTo(conentBgImageV.snp.bottom).offset(10) + make.left.equalTo(conentView.snp.left).offset(5) + make.right.equalTo(conentView.snp.right).offset(5) + } + + bottomView.snp.makeConstraints { make in + make.bottom.equalTo(self.view.safeAreaLayoutGuide).offset(0) + make.height.equalTo(120) + make.width.equalToSuperview() + } + + bottomImageV.snp.makeConstraints { make in + make.bottom.equalTo(self.view.safeAreaLayoutGuide).offset(0) + make.height.equalTo(120) + make.width.equalToSuperview() + + } + + collectionView.snp.makeConstraints { make in + make.width.height.equalTo(bottomView) + } + + delayView.snp.makeConstraints { make in + make.width.equalToSuperview().offset(-40) + make.height.equalTo(40) + make.bottom.equalTo(collectionView.snp.top).offset(-60) + make.centerX.equalToSuperview() + } + + delayLabel.snp.makeConstraints { make in + make.left.equalTo(delayView.snp.left).offset(16) + make.centerY.equalTo(delayView).offset(-4) + } + + delayimageV.snp.makeConstraints { make in + make.centerY.equalTo(delayView) +// make.width.equalTo(6) +// make.height.equalTo(7) + make.left.equalTo(delayLabel.snp.right).offset(15) + } + + delayBtn.snp.makeConstraints { make in + make.width.height.equalTo(delayView) + } + + + + } + + // MARK: -collectionView + func setcollectionView(){ + + let layout = UICollectionViewFlowLayout() + layout.scrollDirection = .horizontal + collectionView.delegate = self + collectionView.dataSource = self + collectionView.collectionViewLayout = layout + collectionView.register(FS_DetailsCollectionViewCell.self, forCellWithReuseIdentifier: "FS_DetailsCollectionViewCell") + + } +// MARK: - 修改UI + func setEditUI(){ + if let imageURL = URL(string: model?.preUrl ?? "") { + contengImageV.sd_setImage(with: imageURL, placeholderImage: UIImage(named: "collectionImageV")) + } + self.nameLabel.text = model?.title + + } + + // MARK: - 返回 + @objc func back(){ + self.navigationController?.popViewController(animated: true) + } + + // MARK: - 收藏点击 + @objc func collectTouch(){ + let audioFile = AudioFile(title: model?.title ?? "", mp3Url: model?.mp3Url ?? "", preUrl: model?.preUrl ?? "") + + collectManager.shared.toggleFavorite(audioFile: audioFile) + + // 检查是否已收藏 + if collectManager.shared.isFavorite(audioFile: audioFile) { + print("音频文件已被收藏") + self.collectBtn.isSelected = true + } else { + print("音频文件未被收藏") + self.collectBtn.isSelected = false + } + + } + + + // MARK: - 相机点击 + @objc func camearBtnTouch(){ + if self.camearBtn.isSelected == true{ + self.camearBtn.isSelected = false + self.conentView.isHidden = false + self.bgimageV.isHidden = false + }else{ + self.camearBtn.isSelected = true + self.camearBtn.isSelected = true + self.conentView.isHidden = true + self.bgimageV.isHidden = true + } + + } + + + // MARK: - 相机 + override func viewWillLayoutSubviews() { + super.viewWillLayoutSubviews() + // 确保预览层的大小在旋转或布局改变时更新 + previewLayer.frame = view.layer.bounds + } + + + // MARK: - 全屏点击 + @objc func handleTap() { + // 点击时播放音频 + playAudio() + } + // MARK: - 播放 + func playAudio() { + // MP3 文件的 URL +// if let url = URL(string: model!.mp3Url) { +// // 初始化 AVPlayer +// audioPlayer = AVPlayer(url: url) +// audioPlayer?.play() +// } else { +// print("无效的音频 URL") +// } + if let player = audioPlayer { + player.seek(to: .zero) + player.play() + } else { + print("Audio player is not ready") + } + } + +// MARK: - 点击选择倒计时 + @objc func delaysTouch() { + print("delaysTouch called") + + let pickerView = CustomPickerView() + pickerView.onValueSelected = { value in + print("Selected value: \(value)") + + // 停止旧的计时器(如果有的话) + self.countdown?.stop() + + // 创建新的计时器实例 + self.countdown = CountdownTimer(seconds: value, onTick: { remainingSeconds in + print("剩余时间: \(remainingSeconds) 秒") + + // 在主线程上更新 UI + DispatchQueue.main.async { + self.delayLabel.text = "Delay: \(remainingSeconds) S" + } + + }, onComplete: { + print("倒计时结束!") + + // 在主线程上更新 UI 和播放音频 + DispatchQueue.main.async { + self.playAudio() + self.delayLabel.text = "Delay: OFF" + } + }) + + // 在主线程上启动计时器 + DispatchQueue.main.async { + self.countdown?.start() + } + } + + pickerView.showInView(self.view) + print("pickerView shown") + } + + +} +// MARK: -设置collectionView代理 +extension FS_DetailsVC:UICollectionViewDelegateFlowLayout,UICollectionViewDataSource,UICollectionViewDelegate{ + + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return arr.count + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell{ + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "FS_DetailsCollectionViewCell", for: indexPath)as!FS_DetailsCollectionViewCell + cell.model = arr[indexPath.row] + + return cell + } + + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { + return CGSize(width: cellWidth, height: cellHeight) + } + + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { + return cellSpacing + } + + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets { + return UIEdgeInsets(top: 0, left: cellSpacing, bottom: 0, right: cellSpacing) + } + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath){ + + self.model = arr[indexPath.row] + setEditUI() + preloadAudio() + playAudio() + } +} diff --git a/Funny_sounds/Home/C/FS_HomeVC.swift b/Funny_sounds/Home/C/FS_HomeVC.swift new file mode 100644 index 0000000..4727b10 --- /dev/null +++ b/Funny_sounds/Home/C/FS_HomeVC.swift @@ -0,0 +1,151 @@ +// +// FS_HomeVC.swift +// Funny_sounds +// +// Created by 忆海16 on 2024/8/14. +// + +import UIKit +import SnapKit + +class FS_HomeVC: RootVC { + + lazy var collectionView: UICollectionView = { + let layout = UICollectionViewFlowLayout() + let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout) + collectionView.backgroundColor = .clear + collectionView.showsVerticalScrollIndicator = false + return collectionView + }() + + + lazy var bgimage = UIImageView() + lazy var hometitleImage = UIImageView() + + var typearr = [SoundCategory]() + + override func viewDidLoad() { + super.viewDidLoad() + + setHomeUI() + setcollectionView() + setprankJson() + } + + + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + self.navigationController?.navigationBar.isHidden = true + } + +// MARK: -设置首页布局 +//#warning("设置首页布局") + func setHomeUI(){ + + bgimage.image = UIImage(named: "homebg") + bgimage.contentMode = .scaleAspectFill + self.view.addSubview(bgimage) + + hometitleImage.image = UIImage(named: "hometitle") + hometitleImage.contentMode = .scaleAspectFill + self.view.addSubview(hometitleImage) + + + + collectionView.backgroundColor = .clear + collectionView.showsVerticalScrollIndicator = false + self.view.addSubview(collectionView) + + + + + bgimage.snp.makeConstraints { make in + make.width.equalTo(self.view) + make.height.equalTo(self.view) + } + + + hometitleImage.snp.makeConstraints { make in + make.top.equalTo(self.view.safeAreaLayoutGuide).offset(15) + make.height.equalTo(30) + make.width.equalTo(self.view) + } + + collectionView.snp.makeConstraints { make in + make.top.equalTo(hometitleImage.snp.bottom).offset(25) + make.width.equalToSuperview() + make.bottom.equalTo(self.view.safeAreaLayoutGuide) + } + + } + + + // MARK: -设置collectionView + + func setcollectionView(){ + collectionView.delegate = self + collectionView.dataSource = self + let layout = CustomCollectionViewFlowLayout() + collectionView.collectionViewLayout = layout + layout.scrollDirection = .vertical + + collectionView.register(FS_HomeCollectionViewCell.self, forCellWithReuseIdentifier: "FS_HomeCollectionViewCell") + + } + + // MARK: - 解析json + func setprankJson(){ + if let path = Bundle.main.path(forResource: "prank", ofType: "json") { + do { + let jsonData = try Data(contentsOf: URL(fileURLWithPath: path)) + if let categories = parseJSONData(jsonData: jsonData) { + // 现在可以访问categories数组 + self.typearr = categories + } + + } catch { + print("读取文件时出错: \(error)") + } + } + + } + +} + +// MARK: -设置collectionView代理 +extension FS_HomeVC:UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout{ + + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return typearr.count + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell{ + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "FS_HomeCollectionViewCell", for: indexPath)as!FS_HomeCollectionViewCell + cell.model = typearr[indexPath.row] + + return cell + } + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath){ + + let vc = FS_ClassificationVC() + vc.typestring = self.typearr[indexPath.row].categoryName +// vc.categoryarr = self.typearr + var arr: [AudioFile] = [] + for i in self.typearr{ + switch i.categoryId{ + case self.typearr[indexPath.row].categoryId: + arr = i.list + default: + break + } + } + vc.arr = arr + + navigationController?.pushViewController(vc, animated: true) + + } + + +} diff --git a/Funny_sounds/Home/M/prankModel.swift b/Funny_sounds/Home/M/prankModel.swift new file mode 100644 index 0000000..f005455 --- /dev/null +++ b/Funny_sounds/Home/M/prankModel.swift @@ -0,0 +1,64 @@ +// +// Prankmodel.swift +// Funny_sounds +// +// Created by 忆海16 on 2024/8/15. +// + +import Foundation + + +// 音频文件的模型 +class AudioFile:NSObject, Codable { + let title: String + let mp3Url: String + let preUrl: String + // 自定义初始化方法 + init(title: String, mp3Url: String, preUrl: String) { + self.title = title + self.mp3Url = mp3Url + self.preUrl = preUrl + } + + // 必须实现这些方法,以避免与Codable冲突 + required init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + self.title = try container.decode(String.self, forKey: .title) + self.mp3Url = try container.decode(String.self, forKey: .mp3Url) + self.preUrl = try container.decode(String.self, forKey: .preUrl) + } + + func encode(to encoder: Encoder) throws { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(title, forKey: .title) + try container.encode(mp3Url, forKey: .mp3Url) + try container.encode(preUrl, forKey: .preUrl) + } + + private enum CodingKeys: String, CodingKey { + case title + case mp3Url + case preUrl + } +} + +// 分类模型 +class SoundCategory:NSObject,Codable { + let categoryId: String + let categoryName: String + let categoryUrl: String + let list: [AudioFile] +} + + +func parseJSONData(jsonData: Data) -> [SoundCategory]? { + let decoder = JSONDecoder() + do { + // 解析数据 + let soundCategories = try decoder.decode([SoundCategory].self, from: jsonData) + return soundCategories + } catch { + print("解析JSON数据时出错: \(error)") + return nil + } +} diff --git a/Funny_sounds/Home/V/FS_ClassificationCollectionCell.swift b/Funny_sounds/Home/V/FS_ClassificationCollectionCell.swift new file mode 100644 index 0000000..f800265 --- /dev/null +++ b/Funny_sounds/Home/V/FS_ClassificationCollectionCell.swift @@ -0,0 +1,100 @@ +// +// FS_ClassificationCollectionCell.swift +// Funny_sounds +// +// Created by 忆海16 on 2024/8/15. +// + +import UIKit +import SDWebImage + +class FS_ClassificationCollectionCell: UICollectionViewCell { + + lazy var bgImageV:UIImageView = { + let bgImageV = UIImageView() + bgImageV.image = UIImage(named: "classbg") + bgImageV.contentMode = .scaleToFill + + return bgImageV + }() + + lazy var conentImageV:UIImageView = { + let conentImageV = UIImageView() + conentImageV.image = UIImage(named: "collectionImageV") + conentImageV.contentMode = .scaleAspectFit + conentImageV.layer.cornerRadius = 40 + conentImageV.clipsToBounds = true + conentImageV.contentMode = .scaleToFill + return conentImageV + }() + + + lazy var nameLabel: BorderedLabel = { + let nameLabel = BorderedLabel() + nameLabel.text = "Air Horn" + nameLabel.font = UIFont(name: "PaytoneOne-Regular", size: 16) + nameLabel.textColor = .white // 设置文本颜色为白色 + nameLabel.numberOfLines = 0 + nameLabel.textAlignment = .center + + // 设置阴影效果 + let shadow = NSShadow() + shadow.shadowColor = UIColor.black.withAlphaComponent(1.0) // 黑色阴影 + shadow.shadowOffset = CGSize(width: 0, height: 6) // 向下偏移2个点 + shadow.shadowBlurRadius = 0 // 无模糊度 + + // 设置属性字符串并应用阴影 + let attributedText = NSMutableAttributedString(string: nameLabel.text!) + attributedText.addAttribute(.shadow, value: shadow, range: NSRange(location: 0, length: nameLabel.text!.count)) + nameLabel.attributedText = attributedText + + nameLabel.sizeToFit() + + return nameLabel + }() + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override init(frame: CGRect) { + super.init(frame: frame) + setUI() + + contentView.backgroundColor = .clear + + } + // MARK: -设置布局 + func setUI(){ + self.addSubview(bgImageV) + self.addSubview(conentImageV) + self.addSubview(nameLabel) + + bgImageV.snp.makeConstraints { make in + make.width.height.equalTo(100) + make.top.equalToSuperview().offset(5) + make.centerX.equalToSuperview() + } + + conentImageV.snp.makeConstraints { make in + make.centerX.centerY.equalTo(bgImageV) + make.height.width.equalTo(80) + } + + nameLabel.snp.makeConstraints { make in + make.top.equalTo(conentImageV.snp.bottom).offset(8) + make.width.equalToSuperview() + } + + } + + var model:AudioFile?{ + didSet{ + if let imageURL = URL(string: model?.preUrl ?? "") { +// wpImagV.sd_setImage(with: imageURL, completed: nil) + conentImageV.sd_setImage(with: imageURL, placeholderImage: UIImage(named: "collectionImageV")) + } + nameLabel.text = model?.title + } + } + +} diff --git a/Funny_sounds/Home/V/FS_DetailsCollectionViewCell.swift b/Funny_sounds/Home/V/FS_DetailsCollectionViewCell.swift new file mode 100644 index 0000000..0bbbd2f --- /dev/null +++ b/Funny_sounds/Home/V/FS_DetailsCollectionViewCell.swift @@ -0,0 +1,71 @@ +// +// FS_DetailsCollectionViewCell.swift +// Funny_sounds +// +// Created by 忆海16 on 2024/8/16. +// + +import UIKit + +class FS_DetailsCollectionViewCell: UICollectionViewCell { + + lazy var bgImageV:UIImageView = { + let bgImageV = UIImageView() + bgImageV.image = UIImage(named: "contentBg") + bgImageV.contentMode = .scaleToFill + + return bgImageV + }() + + lazy var conentImageV:UIImageView = { + let conentImageV = UIImageView() + conentImageV.image = UIImage(named: "collectionImageV") + conentImageV.contentMode = .scaleAspectFit + conentImageV.layer.cornerRadius = 30 + conentImageV.clipsToBounds = true + conentImageV.contentMode = .scaleToFill + return conentImageV + }() + + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override init(frame: CGRect) { + super.init(frame: frame) + setUI() + + contentView.backgroundColor = .clear + + } + // MARK: -设置布局 + func setUI(){ + self.addSubview(bgImageV) + self.addSubview(conentImageV) + + + bgImageV.snp.makeConstraints { make in + make.width.height.equalTo(92) + make.top.equalToSuperview().offset(5) + make.centerX.equalToSuperview() + } + + conentImageV.snp.makeConstraints { make in + make.centerX.centerY.equalTo(bgImageV) + make.height.width.equalTo(60) + } + + + + } + + var model:AudioFile?{ + didSet{ + if let imageURL = URL(string: model?.preUrl ?? "") { + conentImageV.sd_setImage(with: imageURL, placeholderImage: UIImage(named: "collectionImageV")) + } + + } + } +} diff --git a/Funny_sounds/Home/V/FS_HomeCollectionViewCell.swift b/Funny_sounds/Home/V/FS_HomeCollectionViewCell.swift new file mode 100644 index 0000000..69955dd --- /dev/null +++ b/Funny_sounds/Home/V/FS_HomeCollectionViewCell.swift @@ -0,0 +1,132 @@ +// +// FS_HomeCollectionViewCell.swift +// Funny_sounds +// +// Created by 忆海16 on 2024/8/15. +// + +import UIKit +import SnapKit +import SDWebImage + +class FS_HomeCollectionViewCell: UICollectionViewCell { + + lazy var bgImageV:UIImageView = { + let bgImageV = UIImageView() + bgImageV.image = UIImage(named: "collectionBgV") + bgImageV.contentMode = .scaleToFill + + return bgImageV + }() + + lazy var conentImageV:UIImageView = { + let conentImageV = UIImageView() + conentImageV.image = UIImage(named: "collectionImageV") + conentImageV.contentMode = .scaleAspectFit + + return conentImageV + }() + + + lazy var nameLabel: BorderedLabel = { + let nameLabel = BorderedLabel() + nameLabel.text = "Air Horn" + nameLabel.font = UIFont(name: "PaytoneOne-Regular", size: 20) + nameLabel.textColor = .white // 设置文本颜色为白色 + nameLabel.numberOfLines = 0 + nameLabel.textAlignment = .center + + // 设置阴影效果 + let shadow = NSShadow() + shadow.shadowColor = UIColor.black.withAlphaComponent(1.0) // 黑色阴影 + shadow.shadowOffset = CGSize(width: 0, height: 6) // 向下偏移2个点 + shadow.shadowBlurRadius = 0 // 无模糊度 + + // 设置属性字符串并应用阴影 + let attributedText = NSMutableAttributedString(string: nameLabel.text!) + attributedText.addAttribute(.shadow, value: shadow, range: NSRange(location: 0, length: nameLabel.text!.count)) + nameLabel.attributedText = attributedText + + nameLabel.sizeToFit() + + return nameLabel + }() + + + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override init(frame: CGRect) { + super.init(frame: frame) + setUI() + + contentView.backgroundColor = .clear + + } + + // MARK: -设置布局 + func setUI(){ + self.addSubview(bgImageV) + self.addSubview(conentImageV) + self.addSubview(nameLabel) + + bgImageV.snp.makeConstraints { make in + make.width.height.equalToSuperview() + } + + conentImageV.snp.makeConstraints { make in + make.top.equalToSuperview().offset(16) + // make.left.equalToSuperview().offset(7) + // make.right.equalToSuperview().offset(7) + make.centerX.equalTo(bgImageV) + make.height.equalTo(140) + } + + nameLabel.snp.makeConstraints { make in + make.top.equalTo(conentImageV.snp.bottom).offset(4) + make.width.equalToSuperview() +// make.height.equalTo(23) + } + + + + } + + var model:SoundCategory?{ + didSet{ + if let imageURL = URL(string: model?.categoryUrl ?? "") { +// wpImagV.sd_setImage(with: imageURL, completed: nil) + conentImageV.sd_setImage(with: imageURL, placeholderImage: UIImage(named: "collectionImageV")) + } + nameLabel.text = model?.categoryName + } + } + +} + + +class BorderedLabel: UILabel { + override func drawText(in rect: CGRect) { + let context = UIGraphicsGetCurrentContext() + + // 保存原始的文本颜色 + let originalTextColor = self.textColor + + // 设置描边颜色和宽度 + context?.setLineWidth(3) // 描边宽度,这里可以调整宽度 + context?.setLineJoin(.round) // 圆角样式的描边 + context?.setTextDrawingMode(.stroke) // 设置文本绘制模式为描边 + self.textColor = UIColor.black // 设置描边颜色为黑色 + + // 绘制描边 + super.drawText(in: rect) + + // 恢复文本颜色并绘制文本内容 + context?.setTextDrawingMode(.fill) // 设置文本绘制模式为填充 + self.textColor = originalTextColor // 恢复原始的文本颜色 + + super.drawText(in: rect) + } +} diff --git a/Funny_sounds/Info.plist b/Funny_sounds/Info.plist new file mode 100644 index 0000000..ad7f963 --- /dev/null +++ b/Funny_sounds/Info.plist @@ -0,0 +1,19 @@ + + + + + NSMicrophoneUsageDescription + 需要访问麦克风来录制音频 + NSCameraUsageDescription + 需要访问相机以拍摄照片 + UIAppFonts + + PaytoneOne-Regular.ttf + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + + + diff --git a/Funny_sounds/Main/CustomTabBar.swift b/Funny_sounds/Main/CustomTabBar.swift new file mode 100644 index 0000000..6172b03 --- /dev/null +++ b/Funny_sounds/Main/CustomTabBar.swift @@ -0,0 +1,53 @@ +// +// CustomTabBar.swift +// Funny_sounds +// +// Created by 忆海16 on 2024/8/14. +// + +import UIKit + + +class CustomTabBar: UITabBar { + private let selectedBackgroundView = UIImageView(image: UIImage(named: "tabbars")) + + + override func layoutSubviews() { + super.layoutSubviews() + + // 将选中背景视图添加到 tabBar + if !subviews.contains(selectedBackgroundView) { + insertSubview(selectedBackgroundView, at: 0) + } + + + + + // 更新选中背景视图的位置 + updateSelectedBackgroundViewPosition() + } + + func updateSelectedBackgroundViewPosition() { + guard let selectedItem = self.selectedItem, let items = self.items else { + selectedBackgroundView.isHidden = true + return + } + + guard let selectedIndex = items.firstIndex(of: selectedItem) else { + selectedBackgroundView.isHidden = true + return + } + + let itemWidth = bounds.width / CGFloat(items.count) + let xPosition = itemWidth * CGFloat(selectedIndex) + selectedBackgroundView.frame = CGRect(x: xPosition, y: 0, width: itemWidth, height: bounds.height) + selectedBackgroundView.isHidden = false + } + + + override var selectedItem: UITabBarItem? { + didSet { + updateSelectedBackgroundViewPosition() + } + } +} diff --git a/Funny_sounds/Main/RootTabBarVC.swift b/Funny_sounds/Main/RootTabBarVC.swift new file mode 100644 index 0000000..86e7595 --- /dev/null +++ b/Funny_sounds/Main/RootTabBarVC.swift @@ -0,0 +1,77 @@ +// +// RootTabBarVC.swift +// Funny_sounds +// +// Created by 忆海16 on 2024/8/14. +// + +import UIKit + +class RootTabBarVC: UITabBarController { + + override func viewDidLoad() { + super.viewDidLoad() + + let collectVC = FS_CollectVC() + collectVC.tabBarItem = UITabBarItem(title: "", image: UIImage(named: "collect"), selectedImage: UIImage(named: "collect")) + collectVC.tabBarItem.imageInsets = UIEdgeInsets(top: 15, left: 0, bottom: -15, right: 0) + + let homeVC = FS_HomeVC() + homeVC.tabBarItem = UITabBarItem(title: "", image: UIImage(named: "home"), selectedImage: UIImage(named: "home")) + homeVC.tabBarItem.imageInsets = UIEdgeInsets(top: 15, left: 0, bottom: -15, right: 0) + + let settingVC = FS_SettingVC() + settingVC.tabBarItem = UITabBarItem(title: "", image: UIImage(named: "setting"), selectedImage: UIImage(named: "setting")) + settingVC.tabBarItem.imageInsets = UIEdgeInsets(top: 15, left: 0, bottom: -15, right: 0) + + let recording = testRecording() + recording.tabBarItem = UITabBarItem(title: "", image: UIImage(named: "setting"), selectedImage: UIImage(named: "setting")) + recording.tabBarItem.imageInsets = UIEdgeInsets(top: 15, left: 0, bottom: -15, right: 0) + + viewControllers = [collectVC, homeVC ,recording,settingVC] + self.delegate = self + + // 使用自定义的 CustomTabBar + let customTabBar = CustomTabBar() + setValue(customTabBar, forKey: "tabBar") + + customTabBar.backgroundImage = UIImage(named: "tabbarbg") + customTabBar.backgroundColor = UIColor.hexSting(color: "#003954", alpha: 1) + + self.selectedIndex = 1 + + } + + +// override func viewDidLayoutSubviews() { +// super.viewDidLayoutSubviews() +// +// // 更新背景视图的位置和大小 +// if let customTabBar = tabBar as? CustomTabBar { +// customTabBar.backgroundImage = UIImage(named: "tabbarbg") +// customTabBar.backgroundColor = UIColor.hexSting(color: "#003954", alpha: 1) +// } +// } + +} + +extension RootTabBarVC: UITabBarControllerDelegate { + func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool { + if let tabBarItems = tabBarController.tabBar.items, let selectedViewControllerIndex = tabBarController.viewControllers?.firstIndex(of: viewController) { + let selectedItem = tabBarItems[selectedViewControllerIndex] + // 仅对选定项目应用缩放动画 + let scaleAnimation = CABasicAnimation(keyPath: "transform.scale") + scaleAnimation.duration = 0.2 + scaleAnimation.fromValue = 0.9 + scaleAnimation.toValue = 1.1 + scaleAnimation.autoreverses = true + scaleAnimation.repeatCount = 1 + + // 将动画应用于所选项目的视图 + if let selectedView = selectedItem.value(forKey: "view") as? UIView { + selectedView.layer.add(scaleAnimation, forKey: nil) + } + } + return true + } +} diff --git a/Funny_sounds/Main/RootVC.swift b/Funny_sounds/Main/RootVC.swift new file mode 100644 index 0000000..fcbcea7 --- /dev/null +++ b/Funny_sounds/Main/RootVC.swift @@ -0,0 +1,64 @@ +// +// RootVC.swift +// Funny_sounds +// +// Created by 忆海16 on 2024/8/14. +// + +import UIKit +import SnapKit + +class RootVC: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + setNavigtionContrilerBase() + } + + //设置导航栏属性 + func setNavigtionContrilerBase(){ + self.navigationController?.navigationBar.barTintColor = .white + let titleTextAttributes = [ + NSAttributedString.Key.font: UIFont.systemFont(ofSize: 16, weight: .bold), + NSAttributedString.Key.foregroundColor: UIColor.black + ] + + ///控制导航栏的背景颜色和底部线的隐藏 + if #available(iOS 13.0, *) { + let appearance = UINavigationBarAppearance() + appearance.configureWithOpaqueBackground() //重置导航栏背景颜色和阴影 + appearance.backgroundColor = UIColor.white + appearance.shadowImage = UIImage() + appearance.shadowColor = nil + appearance.titleTextAttributes = titleTextAttributes + self.navigationController?.navigationBar.standardAppearance = appearance + self.navigationController?.navigationBar.scrollEdgeAppearance = appearance + } else { + + self.navigationController?.navigationBar.barTintColor = UIColor.white + self.navigationController?.navigationBar.titleTextAttributes = titleTextAttributes + self.navigationController?.navigationBar.shadowImage = UIImage() + self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default) + } + + } + + + //设置导航栏透明 + func setNavigationCotrollerHide(){ + // 1.设置导航栏半透明 + self.navigationController?.navigationBar.isTranslucent = false + self.navigationController?.navigationBar.barTintColor = .clear + // 2.设置导航栏背景图片 + self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default) + + // 3.设置导航栏阴影图片 + self.navigationController?.navigationBar.shadowImage = UIImage() + } + + override var preferredStatusBarStyle : UIStatusBarStyle { + return .lightContent + } + +} diff --git a/Funny_sounds/Main/RootnaVC.swift b/Funny_sounds/Main/RootnaVC.swift new file mode 100644 index 0000000..f1084ec --- /dev/null +++ b/Funny_sounds/Main/RootnaVC.swift @@ -0,0 +1,65 @@ +// +// RootnaVC.swift +// Funny_sounds +// +// Created by 忆海16 on 2024/8/14. +// + +import UIKit + +class RootnaVC: UINavigationController { + + override func viewDidLoad() { + super.viewDidLoad() + + setbackBtn() + } + + func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool { + if self.viewControllers.count <= 1 { + let viewController = RootVC() + viewController.hidesBottomBarWhenPushed = true + tabBarController?.tabBar.isHidden = true + return false + } + setbackBtn() + return true + } + + + override func pushViewController(_ viewController: UIViewController, animated: Bool) { + if viewControllers.count > 0 { + // setBackItmer()/ + viewController.hidesBottomBarWhenPushed = true + tabBarController?.tabBar.isHidden = true + } + setbackBtn() + super.pushViewController(viewController, animated: animated) + + } + func setbackBtn(){ + + let backButton = UIButton(type: .custom) + + + backButton.setBackgroundImage(#imageLiteral(resourceName: "back"), for: .normal) + + backButton.addTarget(self, action: #selector(back), for: .touchUpInside) + + + let backView = UIBarButtonItem(customView: backButton) + + let barButtonItem = UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil) + barButtonItem.width = -5 + + + navigationItem.leftBarButtonItems = [barButtonItem, backView] + + } + + @objc func back(){ + navigationController?.popViewController(animated: true) + + } + +} diff --git a/Funny_sounds/Recording/C/FS_RecordingVC.swift b/Funny_sounds/Recording/C/FS_RecordingVC.swift new file mode 100644 index 0000000..56b56df --- /dev/null +++ b/Funny_sounds/Recording/C/FS_RecordingVC.swift @@ -0,0 +1,32 @@ +// +// FS_RecordingVC.swift +// Funny_sounds +// +// Created by 忆海16 on 2024/8/27. +// + +import UIKit + +class FS_RecordingVC: RootVC { + + var arr = [UserPreference]() + + override func viewDidLoad() { + super.viewDidLoad() + + // Do any additional setup after loading the view. +// // 创建一个新的偏好设置 +// let newPreference = UserPreference(audioFileName: "audioFileName.mp3",imageFileName: "imageFileName.png",text: "这是一个示例文本") +// +// // 保存新的偏好设置 +// PreferenceManager.shared.savePreference(newPreference) + +// self.arr = PreferenceManager.shared.loadPreferences() ?? [UserPreference]() + + self.view.backgroundColor = .white + + + } + + +} diff --git a/Funny_sounds/Recording/C/testRecording.swift b/Funny_sounds/Recording/C/testRecording.swift new file mode 100644 index 0000000..8d18627 --- /dev/null +++ b/Funny_sounds/Recording/C/testRecording.swift @@ -0,0 +1,111 @@ +// +// testRecording.swift +// Funny_sounds +// +// Created by 忆海16 on 2024/8/27. +// + +import UIKit +import AVFoundation +class testRecording: RootVC { + + var audioRecorder: AVAudioRecorder? + var audioPlayer: AVAudioPlayer? + var recordingSession: AVAudioSession! + + override func viewDidLoad() { + super.viewDidLoad() + + // 初始化录音会话 + recordingSession = AVAudioSession.sharedInstance() + + do { + try recordingSession.setCategory(.playAndRecord, mode: .default) + try recordingSession.setActive(true) + recordingSession.requestRecordPermission { [unowned self] allowed in + DispatchQueue.main.async { + if allowed { + // 用户允许访问麦克风 + } else { + // 用户拒绝访问麦克风 + print("用户未授权使用麦克风") + } + } + } + } catch { + print("录音会话配置出错: \(error.localizedDescription)") + } + + } + + @IBAction func sta(_ sender: Any) { + startRecording() + } + + + @IBAction func stop(_ sender: Any) { + finishRecording(success: true) + } + + + @IBAction func play(_ sender: Any) { + playRecording() + } + + + // 开始录音 + func startRecording() { + let audioFilename = getDocumentsDirectory().appendingPathComponent("recording.m4a") + let settings = [ + AVFormatIDKey: Int(kAudioFormatMPEG4AAC), + AVSampleRateKey: 12000, + AVNumberOfChannelsKey: 1, + AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue + ] + + do { + audioRecorder = try AVAudioRecorder(url: audioFilename, settings: settings) + audioRecorder?.delegate = self + audioRecorder?.record() + print("开始录音") + } catch { + finishRecording(success: false) + } + } + // 停止录音 + func finishRecording(success: Bool) { + audioRecorder?.stop() + audioRecorder = nil + + if success { + print("录音成功结束") + } else { + print("录音失败") + } + } + // 播放录音 + func playRecording() { + let audioFilename = getDocumentsDirectory().appendingPathComponent("recording.m4a") + + do { + audioPlayer = try AVAudioPlayer(contentsOf: audioFilename) + audioPlayer?.play() + print("开始播放录音") + } catch { + print("播放录音出错: \(error.localizedDescription)") + } + } + // 获取文档目录路径 + func getDocumentsDirectory() -> URL { + let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask) + return paths[0] + } + +} +extension testRecording: AVAudioRecorderDelegate { + func audioRecorderDidFinishRecording(_ recorder: AVAudioRecorder, successfully flag: Bool) { + if !flag { + finishRecording(success: false) + } + } +} diff --git a/Funny_sounds/Recording/C/testRecording.xib b/Funny_sounds/Recording/C/testRecording.xib new file mode 100644 index 0000000..14326c8 --- /dev/null +++ b/Funny_sounds/Recording/C/testRecording.xib @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Funny_sounds/Recording/M/UserPreference.swift b/Funny_sounds/Recording/M/UserPreference.swift new file mode 100644 index 0000000..765a983 --- /dev/null +++ b/Funny_sounds/Recording/M/UserPreference.swift @@ -0,0 +1,15 @@ +// +// UserPreference.swift +// Funny_sounds +// +// Created by 忆海16 on 2024/8/27. +// + +import Foundation +import UIKit + +struct UserPreference: Codable { + var audioFileName: String? // 音频文件名 + var imageFileName: String? // 图片文件名 + var text: String? // 文本内容 +} diff --git a/Funny_sounds/Setting/C/FS_PrivacyVC.swift b/Funny_sounds/Setting/C/FS_PrivacyVC.swift new file mode 100644 index 0000000..f763830 --- /dev/null +++ b/Funny_sounds/Setting/C/FS_PrivacyVC.swift @@ -0,0 +1,45 @@ +// +// FS_PrivacyVC.swift +// Funny_sounds +// +// Created by 忆海16 on 2024/8/27. +// + +import UIKit +import WebKit + +class FS_PrivacyVC: RootVC { + + var privarURL = "https://daycount.bitbucket.io/privacy.html" + var termsURL = "https://daycount.bitbucket.io/terms.html" + + var type:Int = 0 + var webView: WKWebView! + + override func viewDidLoad() { + super.viewDidLoad() + + webView = WKWebView() + view = webView + + } + + + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + self.navigationController?.navigationBar.isHidden = true + if self.type == 0{ + if let url = URL(string: termsURL) { + let request = URLRequest(url: url) + webView.load(request) + } + }else{ + if let url = URL(string: privarURL) { + let request = URLRequest(url: url) + webView.load(request) + } + } + } + +} diff --git a/Funny_sounds/Setting/C/FS_SettingVC.swift b/Funny_sounds/Setting/C/FS_SettingVC.swift new file mode 100644 index 0000000..d472750 --- /dev/null +++ b/Funny_sounds/Setting/C/FS_SettingVC.swift @@ -0,0 +1,138 @@ +// +// FS_SettingVC.swift +// Funny_sounds +// +// Created by 忆海16 on 2024/8/14. +// + +import UIKit +import SnapKit + +class FS_SettingVC: RootVC { + + override func viewDidLoad() { + super.viewDidLoad() + + setUI() + } + + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + self.navigationController?.navigationBar.isHidden = true + } + +// MARK: - 设置UI + + func setUI(){ + + lazy var bgImageV:UIImageView = { + let bgImageV = UIImageView() + bgImageV.image = UIImage(named: "settingBg") + bgImageV.contentMode = .scaleAspectFill + + return bgImageV + }() + + + lazy var titleImageV:UIImageView = { + let titleImageV = UIImageView() + titleImageV.image = UIImage(named: "settingTitle") + titleImageV.contentMode = .scaleAspectFit + + return titleImageV + }() + + + lazy var privacyBtn:UIButton = { + let privacyBtn = UIButton() + privacyBtn.setBackgroundImage(UIImage(named: "Privacy"), for: .normal) + privacyBtn.addTarget(self, action: #selector(privacyTouch), for: .touchUpInside) + privacyBtn.imageView?.contentMode = .scaleToFill + + return privacyBtn + }() + + lazy var agreementBtn:UIButton = { + let agreementBtn = UIButton() + agreementBtn.setBackgroundImage(UIImage(named: "Agreement"), for: .normal) + agreementBtn.addTarget(self, action: #selector(agreementTouch), for: .touchUpInside) + agreementBtn.imageView?.contentMode = .scaleToFill + return agreementBtn + }() + + + lazy var shareBtn:UIButton = { + let shareBtn = UIButton() + shareBtn.setBackgroundImage(UIImage(named: "Share"), for: .normal) + shareBtn.addTarget(self, action: #selector(hareTouch), for: .touchUpInside) + shareBtn.imageView?.contentMode = .scaleToFill + return shareBtn + }() + + self.view.addSubview(bgImageV) + self.view.addSubview(titleImageV) + self.view.addSubview(privacyBtn) + self.view.addSubview(agreementBtn) + self.view.addSubview(shareBtn) + + bgImageV.snp.makeConstraints { make in + make.width.equalTo(self.view) + make.height.equalTo(self.view) + } + + + titleImageV.snp.makeConstraints { make in + make.top.equalTo(self.view.safeAreaLayoutGuide).offset(15) + make.height.equalTo(37.5) + make.width.equalTo(self.view) + } + + privacyBtn.snp.makeConstraints { make in + make.top.equalTo(titleImageV.snp.bottom).offset(50) + make.height.equalTo(70) + make.width.equalTo(self.view.bounds.width - 92) + make.centerX.equalToSuperview() + } + + agreementBtn.snp.makeConstraints { make in + make.top.equalTo(privacyBtn.snp.bottom).offset(32) + make.height.equalTo(70) + make.width.equalTo(self.view.bounds.width - 92) + make.centerX.equalToSuperview() + } + shareBtn.snp.makeConstraints { make in + make.top.equalTo(agreementBtn.snp.bottom).offset(32) + make.height.equalTo(70) + make.width.equalTo(self.view.bounds.width - 92) + make.centerX.equalToSuperview() + } + + + } + + + @objc func privacyTouch(){ + let vc = FS_PrivacyVC() + vc.type = 1 + self.present(vc, animated: true) + + } + + @objc func agreementTouch(){ + + let vc = FS_PrivacyVC() + vc.type = 0 + self.present(vc, animated: true) + + } + + + @objc func hareTouch(){ + let vc = testRecording() + + self.navigationController?.pushViewController(vc, animated: true) + + } + +} diff --git a/Funny_sounds/Tool/CollectDefaults.swift b/Funny_sounds/Tool/CollectDefaults.swift new file mode 100644 index 0000000..e421039 --- /dev/null +++ b/Funny_sounds/Tool/CollectDefaults.swift @@ -0,0 +1,75 @@ +// +// CollectDefaults.swift +// Funny_sounds +// +// Created by 忆海16 on 2024/8/19. +// + +import Foundation +class collectManager { + static let shared = collectManager() // 单例模式 + + private let favoritesKey = "favoriteAudioFiles" // UserDefaults的key + + private init() {} // 私有化构造方法 + + // 切换收藏状态 + func toggleFavorite(audioFile: AudioFile) { + var favorites = loadFavorites() + + if let index = favorites.firstIndex(where: { $0.title == audioFile.title }) { + // 如果音频文件已经被收藏,则取消收藏 + favorites.remove(at: index) + print("音频文件已从收藏中移除") + } else { + // 如果音频文件未被收藏,则添加到收藏 + favorites.append(audioFile) + print("音频文件已添加到收藏") + } + + // 更新收藏列表到UserDefaults + saveFavorites(favorites) + } + + // 检查音频文件是否已收藏 + func isFavorite(audioFile: AudioFile) -> Bool { + let favorites = loadFavorites() + return favorites.contains(where: { $0.title == audioFile.title }) + } + + // 获取所有收藏的音频文件 + func getAllFavorites() -> [AudioFile] { + return loadFavorites() + } + + // 清空所有收藏的音频文件 + func clearFavorites() { + saveFavorites([]) + print("所有收藏已清空") + } + + // 私有方法:保存收藏列表 + private func saveFavorites(_ audioFiles: [AudioFile]) { + let encoder = JSONEncoder() + do { + let data = try encoder.encode(audioFiles) + UserDefaults.standard.set(data, forKey: favoritesKey) + } catch { + print("保存AudioFile数据时出错: \(error)") + } + } + + // 私有方法:加载收藏列表 + private func loadFavorites() -> [AudioFile] { + if let data = UserDefaults.standard.data(forKey: favoritesKey) { + let decoder = JSONDecoder() + do { + let audioFiles = try decoder.decode([AudioFile].self, from: data) + return audioFiles + } catch { + print("读取AudioFile数据时出错: \(error)") + } + } + return [] + } +} diff --git a/Funny_sounds/Tool/CollectionViewFlowLayout.swift b/Funny_sounds/Tool/CollectionViewFlowLayout.swift new file mode 100644 index 0000000..cdf4973 --- /dev/null +++ b/Funny_sounds/Tool/CollectionViewFlowLayout.swift @@ -0,0 +1,24 @@ +// +// CollectionViewFlowLayout.swift +// Funny_sounds +// +// Created by 忆海16 on 2024/8/15. +// + +import Foundation +import UIKit + +class CustomCollectionViewFlowLayout: UICollectionViewFlowLayout { + override func prepare() { + super.prepare() + + guard let collectionView = collectionView else { return } + + let itemWidth = (collectionView.bounds.width - minimumInteritemSpacing * 3) / 2 + + itemSize = CGSize(width: itemWidth, height: 230) // 设置每个单元格的大小 + minimumLineSpacing = 10 // 设置行间距 + minimumInteritemSpacing = 10 // 设置列间距 + sectionInset = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 10) + } +} diff --git a/Funny_sounds/Tool/CustomPickerView.swift b/Funny_sounds/Tool/CustomPickerView.swift new file mode 100644 index 0000000..f79490a --- /dev/null +++ b/Funny_sounds/Tool/CustomPickerView.swift @@ -0,0 +1,169 @@ +// +// CustomPickerView.swift +// Funny_sounds +// +// Created by 忆海16 on 2024/8/16. +// + +import UIKit +import SnapKit + +class CustomPickerView: UIView, UIPickerViewDelegate, UIPickerViewDataSource { + + private let pickerValues = [5, 10,15,20,30,35,45,55,60,70,80,90] + private var selectedValue: Int = 15 + + private let pickerView = UIPickerView() + private let cancelButton = UIButton() + private let okButton = UIButton() + + var onValueSelected: ((Int) -> Void)? + + override init(frame: CGRect) { + super.init(frame: frame) + setupView() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + setupView() + } + + private func setupView() { + self.backgroundColor = .white + self.layer.cornerRadius = 10 + self.clipsToBounds = true + + setupPickerView() + setupButtons() + } + + private func setupPickerView() { + pickerView.delegate = self + pickerView.dataSource = self + pickerView.translatesAutoresizingMaskIntoConstraints = false + addSubview(pickerView) + + NSLayoutConstraint.activate([ + pickerView.centerXAnchor.constraint(equalTo: self.centerXAnchor), + pickerView.centerYAnchor.constraint(equalTo: self.centerYAnchor), + pickerView.widthAnchor.constraint(equalTo: self.widthAnchor), + pickerView.heightAnchor.constraint(equalTo: self.heightAnchor, constant: -50) // Adjust for buttons + ]) + + pickerView.selectRow(pickerValues.firstIndex(of: selectedValue)!, inComponent: 0, animated: false) + } + + private func setupButtons() { + + var topView = UIView() + topView.backgroundColor = UIColor.hexSting(color: "#4EDB96", alpha: 1) + self.addSubview(topView) + + topView.snp.makeConstraints { make in + make.width.equalToSuperview() + make.height.equalTo(46) + make.top.equalTo(self.snp.top) + } + + + + cancelButton.setTitle("Cancel", for: .normal) + cancelButton.titleLabel?.font = UIFont(name: "PaytoneOne-Regular", size: 18) + cancelButton.setTitleColor(.white, for: .normal) + cancelButton.translatesAutoresizingMaskIntoConstraints = false + topView.addSubview(cancelButton) + + cancelButton.addTarget(self, action: #selector(cancelButtonTapped), for: .touchUpInside) + + okButton.setTitle("OK", for: .normal) + okButton.setTitleColor(.white, for: .normal) + okButton.titleLabel?.font = UIFont(name: "PaytoneOne-Regular", size: 18) + okButton.translatesAutoresizingMaskIntoConstraints = false + topView.addSubview(okButton) + + okButton.addTarget(self, action: #selector(okButtonTapped), for: .touchUpInside) + + + cancelButton.snp.makeConstraints { make in + make.left.equalTo(topView.snp.left).offset(20) + make.centerY.equalTo(topView) + + } + + okButton.snp.makeConstraints { make in + make.right.equalTo(topView.snp.right).offset(-20) + make.centerY.equalTo(topView) + + } + + } + + @objc private func cancelButtonTapped() { + dismissView() + } + + @objc private func okButtonTapped() { + onValueSelected?(selectedValue) + dismissView() + } + + private func dismissView() { + UIView.animate(withDuration: 0.3, animations: { + self.alpha = 0 + self.transform = CGAffineTransform(translationX: 0, y: self.frame.height) + }) { _ in + self.removeFromSuperview() + } + } + + func showInView(_ parentView: UIView) { + self.frame = CGRect(x: 0, y: parentView.bounds.height, width: parentView.bounds.width, height: 262) + parentView.addSubview(self) + + UIView.animate(withDuration: 0.3) { + self.alpha = 1 + self.transform = CGAffineTransform(translationX: 0, y: -self.frame.height) + } + } + + // Picker View Delegate & Data Source methods + func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { + return pickerValues.count + } + + func numberOfComponents(in pickerView: UIPickerView) -> Int { + return 1 + } + + func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { + return "\(pickerValues[row])s" + } + + func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView { + let label = BorderedLabel() + label.textAlignment = .center + label.text = "\(pickerValues[row]) s" + + if row == pickerView.selectedRow(inComponent: component) { + label.font = UIFont.systemFont(ofSize: 24) + label.textColor = UIColor.black + } else { + label.font = UIFont.systemFont(ofSize: 18) + label.textColor = UIColor.white + } + + return label + } + + func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { + selectedValue = pickerValues[row] + pickerView.reloadAllComponents() + } + + + func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat { + return 40 + } +} + diff --git a/Funny_sounds/Tool/PreferenceManager.swift b/Funny_sounds/Tool/PreferenceManager.swift new file mode 100644 index 0000000..538f82a --- /dev/null +++ b/Funny_sounds/Tool/PreferenceManager.swift @@ -0,0 +1,86 @@ +// +// PreferenceManager.swift +// Funny_sounds +// +// Created by 忆海16 on 2024/8/27. +// + +import Foundation +import UIKit + +class PreferenceManager { + static let shared = PreferenceManager() + private let preferencesKey = "userPreferences" // 偏好设置的键值 + + private init() {} + // MARK: - 保存一个新的偏好设置 + func savePreference(_ preference: UserPreference) { + var preferences = loadPreferences() ?? [UserPreference]() + preferences.append(preference) // 将新偏好设置添加到数组中 + savePreferences(preferences) // 保存更新后的数组 + } + + // MARK: - 保存所有偏好设置 + private func savePreferences(_ preferences: [UserPreference]) { + if let encodedPreferences = try? JSONEncoder().encode(preferences) { + UserDefaults.standard.set(encodedPreferences, forKey: preferencesKey) // 将偏好设置数组保存到UserDefaults中 + } + } + + // MARK: - 加载所有偏好设置 + func loadPreferences() -> [UserPreference]? { + guard let savedData = UserDefaults.standard.data(forKey: preferencesKey), + let preferences = try? JSONDecoder().decode([UserPreference].self, from: savedData) else { + return nil // 如果未找到数据或解码失败,返回nil + } + return preferences // 返回偏好设置数组 + } + + // MARK: - 清除所有偏好设置 + func clearPreferences() { + UserDefaults.standard.removeObject(forKey: preferencesKey) // 从UserDefaults中移除偏好设置 + } + + // MARK: - 保存音频 + func saveAudio(data: Data, fileName: String) -> Bool { + let fileURL = getDocumentsDirectory().appendingPathComponent(fileName) + do { + try data.write(to: fileURL) // 将音频数据写入文件 + return true + } catch { + print("保存音频失败: \(error.localizedDescription)") + return false + } + } + + // MARK: - 保存图片 + func saveImage(image: UIImage, fileName: String) -> Bool { + guard let data = image.pngData() else { return false } + let fileURL = getDocumentsDirectory().appendingPathComponent(fileName) + do { + try data.write(to: fileURL) // 将图片数据写入文件 + return true + } catch { + print("保存图片失败: \(error.localizedDescription)") + return false + } + } + + // MARK: - 加载音频 + func loadAudio(fileName: String) -> Data? { + let fileURL = getDocumentsDirectory().appendingPathComponent(fileName) + return try? Data(contentsOf: fileURL) // 从文件中加载音频数据 + } + + // MARK: - 加载图片 + func loadImage(fileName: String) -> UIImage? { + let fileURL = getDocumentsDirectory().appendingPathComponent(fileName) + guard let data = try? Data(contentsOf: fileURL) else { return nil } + return UIImage(data: data) // 从文件中加载图片数据 + } + + // MARK: - 获取文档目录路径 + private func getDocumentsDirectory() -> URL { + return FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first! + } +} diff --git a/Funny_sounds/Tool/Timer.swift b/Funny_sounds/Tool/Timer.swift new file mode 100644 index 0000000..342d187 --- /dev/null +++ b/Funny_sounds/Tool/Timer.swift @@ -0,0 +1,44 @@ +// +// Timeer.swift +// Funny_sounds +// +// Created by 忆海16 on 2024/8/16. +// + +import Foundation +class CountdownTimer { + private var timer: Timer? + private var remainingSeconds: Int + private var onTick: ((Int) -> Void)? + private var onComplete: (() -> Void)? + + init(seconds: Int, onTick: @escaping (Int) -> Void, onComplete: @escaping () -> Void) { + self.remainingSeconds = seconds + self.onTick = onTick + self.onComplete = onComplete + } + + func start() { + timer?.invalidate() // 确保没有其他计时器在运行 + onTick?(remainingSeconds) // 立即触发一次 + timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { [weak self] _ in + guard let self = self else { return } + self.remainingSeconds -= 1 + self.onTick?(self.remainingSeconds) + + if self.remainingSeconds <= 0 { + self.timer?.invalidate() + self.onComplete?() + } + } + } + + func stop() { + timer?.invalidate() + } + + func reset(with seconds: Int) { + stop() + remainingSeconds = seconds + } +} diff --git a/Funny_sounds/Tool/color.swift b/Funny_sounds/Tool/color.swift new file mode 100644 index 0000000..62a3363 --- /dev/null +++ b/Funny_sounds/Tool/color.swift @@ -0,0 +1,49 @@ +// +// color.swift +// Funny_sounds +// +// Created by 忆海16 on 2024/8/14. +// + +import Foundation +import UIKit + +extension UIColor{ + + class func hexSting(color:String,alpha:CGFloat)->UIColor{ + + var cString:String = color.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines).uppercased() + if cString.count < 6{ + return UIColor.white + } + if cString.hasPrefix("OX") { + let temstr:NSString = cString as NSString + cString = temstr.substring(from: 2)as String + } + if cString.hasPrefix("#") { + let temstr:NSString = cString as NSString + cString = temstr.substring(from: 1) as String + } + if cString.count != 6{ + return UIColor.white + } + var range:NSRange = NSMakeRange(0, 2) + let temstr2:NSString = cString as NSString + let rString = temstr2.substring(with: range)as String + range = NSMakeRange(2, 2) + let gString = temstr2.substring(with: range)as String + range = NSMakeRange(4, 2) + let bString = temstr2.substring(with: range)as String + var r:UInt32 = 0,g:UInt32 = 0,b:UInt32 = 0 + Scanner(string: rString).scanHexInt32(&r) + Scanner(string: gString).scanHexInt32(&g) + Scanner(string: bString).scanHexInt32(&b) + + return self.init(red: CGFloat(r)/255.0, green: CGFloat(g)/255.0, blue: CGFloat(b)/255.0, alpha: alpha) + } + + class func colorWithHexString(color:String)->UIColor{ + return hexSting(color: color, alpha: 1.0) + } + +} diff --git a/Funny_sounds/Tool/json/prank.json b/Funny_sounds/Tool/json/prank.json new file mode 100644 index 0000000..49830a3 --- /dev/null +++ b/Funny_sounds/Tool/json/prank.json @@ -0,0 +1,3899 @@ +[ + { + "categoryId": "625f83491fea07887e619063", + "categoryName": "Airhorn", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/3807ddc86891d2f6994cebcc82773f20.png", + "list": [ + { + "title": "Airhorn 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/f6f15687ea2f414192c0b473714985fb.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7111dbef323985fa5ce40cc001efc06b.png" + }, + { + "title": "Airhorn 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/3e4d4574dc0ca65457ed1635d8d8a35f.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7111dbef323985fa5ce40cc001efc06b.png" + }, + { + "title": "Airhorn 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/4d62db79c5ce22e4af02a728df11fea3.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7111dbef323985fa5ce40cc001efc06b.png" + }, + { + "title": "Airhorn 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/18423e3b40a7abe5b13fef44a090279d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7111dbef323985fa5ce40cc001efc06b.png" + }, + { + "title": "Airhorn 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/a1bdfca1db5913e0889320d039db069d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7111dbef323985fa5ce40cc001efc06b.png" + }, + { + "title": "Airhorn 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/b188a56dd6f4d96081dbdc55c9d8189e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7111dbef323985fa5ce40cc001efc06b.png" + }, + { + "title": "Airhorn 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/dd803e0943de2f23e345f7a333ef50f0.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7111dbef323985fa5ce40cc001efc06b.png" + }, + { + "title": "Airhorn 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/c7a498cd8ebe972a0d9d290967b0c217.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7111dbef323985fa5ce40cc001efc06b.png" + }, + { + "title": "Airhorn 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/7247df90396f71742a19b17cd4b44007.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7111dbef323985fa5ce40cc001efc06b.png" + }, + { + "title": "Airhorn 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/b234c324d5ad721eb8d0ee8eb2ca6586.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7111dbef323985fa5ce40cc001efc06b.png" + }, + { + "title": "Airhorn 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/afc85b998457d1401bc942538c834dd4.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7111dbef323985fa5ce40cc001efc06b.png" + }, + { + "title": "Airhorn 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/890fd4c730bf1d22cd47074c9f3f2024.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7111dbef323985fa5ce40cc001efc06b.png" + }, + { + "title": "Airhorn 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/a5f49085cfd96acf9af9ae3b0d40d767.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7111dbef323985fa5ce40cc001efc06b.png" + } + ] + }, + { + "categoryId": "625f83491fea07887e619069", + "categoryName": "Fart Sound", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/9a338a79cd2cd19fe9cd33ef789a5508.png", + "list": [ + { + "title": "Fart Sound 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/fd670b056455266357f2a9da86027f92.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9d13c716cd8627cbb385fbddf58c6f9f.png" + }, + { + "title": "Fart Sound 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/5b57dca5528a8b918f2e0ccbfa3ad7f8.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9d13c716cd8627cbb385fbddf58c6f9f.png" + }, + { + "title": "Fart Sound 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/5ee055b13bf0b80f3b327f88bbc3a342.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9d13c716cd8627cbb385fbddf58c6f9f.png" + }, + { + "title": "Fart Sound 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/671e5a10b64b37afe8d782d2c2b61111.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9d13c716cd8627cbb385fbddf58c6f9f.png" + }, + { + "title": "Fart Sound 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/e00eaeafb7dfd572371a74c7c67774b9.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9d13c716cd8627cbb385fbddf58c6f9f.png" + }, + { + "title": "Fart Sound 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/25915fb137e5a205d893b84302bd97ea.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9d13c716cd8627cbb385fbddf58c6f9f.png" + }, + { + "title": "Fart Sound 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/9576b7c63248788024ac421dfe6549ec.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9d13c716cd8627cbb385fbddf58c6f9f.png" + }, + { + "title": "Fart Sound 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/7c6a693b6554482cf03fbe7e8d89b0f7.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9d13c716cd8627cbb385fbddf58c6f9f.png" + }, + { + "title": "Fart Sound 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/841a885f366574f6cff1d4965b0cea54.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9d13c716cd8627cbb385fbddf58c6f9f.png" + }, + { + "title": "Fart Sound 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/37afe86493a5f5a31c6c18cdc476b530.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9d13c716cd8627cbb385fbddf58c6f9f.png" + }, + { + "title": "Fart Sound 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/4bf94832c6a6ff55053a96327ee22e8e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9d13c716cd8627cbb385fbddf58c6f9f.png" + }, + { + "title": "Fart Sound 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/7608e95747aa442b7135b79e7abc6791.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9d13c716cd8627cbb385fbddf58c6f9f.png" + }, + { + "title": "Fart Sound 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/edb1357822ad7266389e4e6bc558c515.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9d13c716cd8627cbb385fbddf58c6f9f.png" + }, + { + "title": "Fart Sound 14", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/1230e6751807de13cec5821ed232971b.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9d13c716cd8627cbb385fbddf58c6f9f.png" + }, + { + "title": "Fart Sound 15", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/02b7143a9c8b4d49155a4af7e14002c6.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9d13c716cd8627cbb385fbddf58c6f9f.png" + }, + { + "title": "Fart Sound 16", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/39b42fcebac74d4a68887c413107de32.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9d13c716cd8627cbb385fbddf58c6f9f.png" + }, + { + "title": "Fart Sound 17", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/a5645abdfe28fcf5a4bfb1a091511ee0.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9d13c716cd8627cbb385fbddf58c6f9f.png" + } + ] + }, + { + "categoryId": "625f83491fea07887e61906b", + "categoryName": "Hair Clipper", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/01e97185a794005a5cd5a8ca6903d68d.png", + "list": [ + { + "title": "Hair Clipper 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/df05f0cb432e9c3fddcc505d37bdc596.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e40b8da118eb07fbd3c6de7fa6749e39.png" + }, + { + "title": "Hair Clipper 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/ae5266af93d2af046777529549da69a2.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e40b8da118eb07fbd3c6de7fa6749e39.png" + }, + { + "title": "Hair Clipper 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/df5e55461640aa6326bd1f27bc961abb.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e40b8da118eb07fbd3c6de7fa6749e39.png" + }, + { + "title": "Hair Clipper 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/ad5285afce500ae8b05d104cd70c16e0.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e40b8da118eb07fbd3c6de7fa6749e39.png" + }, + { + "title": "Hair Clipper 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/173c711dda00a1a683a3e64cb73a01a5.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e40b8da118eb07fbd3c6de7fa6749e39.png" + }, + { + "title": "Hair Clipper 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/7ac57b43913e8077e5e9db31426194fe.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e40b8da118eb07fbd3c6de7fa6749e39.png" + }, + { + "title": "Hair Clipper 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/a3248ae7e08e69d499dbd50f99a39b22.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e40b8da118eb07fbd3c6de7fa6749e39.png" + }, + { + "title": "Hair Clipper 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/2d43e87e8d312bc0174814dacf15a2bc.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e40b8da118eb07fbd3c6de7fa6749e39.png" + }, + { + "title": "Hair Clipper 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/48828fd5b702259e0bb4a31cb38c002d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e40b8da118eb07fbd3c6de7fa6749e39.png" + }, + { + "title": "Hair Clipper 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/64a3a3936d9083c3fb0cb8af63b62db1.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e40b8da118eb07fbd3c6de7fa6749e39.png" + }, + { + "title": "Hair Clipper 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/f4d989eca3644062185bd21f0a7eac98.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e40b8da118eb07fbd3c6de7fa6749e39.png" + }, + { + "title": "Hair Clipper 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/76de9aeaa070bc2bb6010270ef7c91ef.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e40b8da118eb07fbd3c6de7fa6749e39.png" + } + ] + }, + { + "categoryId": "625f83491fea07887e619064", + "categoryName": "Baby Sneeze", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/682a213c4545f1434398667dcc20f521.png", + "list": [ + { + "title": "Baby Sneeze 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/29f85dec03af4f531192de0fb7032966.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7f35214ab21c8edb7afd193442126aca.png" + }, + { + "title": "Baby Sneeze 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/cc1dd5582eee73c3a5baf05f9df160c0.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7f35214ab21c8edb7afd193442126aca.png" + }, + { + "title": "Baby Sneeze 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/24da16229efbc50b16fc4a93a297300b.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7f35214ab21c8edb7afd193442126aca.png" + }, + { + "title": "Baby Sneeze 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/bc0ad31930b2b80f09586f9cb055f687.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7f35214ab21c8edb7afd193442126aca.png" + }, + { + "title": "Baby Sneeze 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/da26d31187d2a2eb789398e533318bbe.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7f35214ab21c8edb7afd193442126aca.png" + }, + { + "title": "Baby Sneeze 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/0c5f7c296c0f168e11cefc6634918c4a.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7f35214ab21c8edb7afd193442126aca.png" + } + ] + }, + { + "categoryId": "625f83491fea07887e619065", + "categoryName": "Breaking", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/253556740e135a243df384d2bc216757.png", + "list": [ + { + "title": "Breaking 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/d5e25e6c6f9bd1316067910ae3f07f96.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/5f3bc85e0c23dcb07546b098c3964da7.png" + }, + { + "title": "Breaking 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/777effb7b006cc507c54df2d3ae97956.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/5f3bc85e0c23dcb07546b098c3964da7.png" + }, + { + "title": "Breaking 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/12200195df885df378ab7097e3d5e8b5.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/5f3bc85e0c23dcb07546b098c3964da7.png" + }, + { + "title": "Breaking 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/9512b4aa0bcf477b8b1ee9de6a50428b.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/5f3bc85e0c23dcb07546b098c3964da7.png" + }, + { + "title": "Breaking 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/61bd13d8cbb5150a7a477bd28d70a4e3.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/5f3bc85e0c23dcb07546b098c3964da7.png" + }, + { + "title": "Breaking 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/c1d49295a8bd5d84fe7c1ce9e84e09fb.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/5f3bc85e0c23dcb07546b098c3964da7.png" + }, + { + "title": "Breaking 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/9c34aa3d5c4d338958c71a25ca27f687.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/5f3bc85e0c23dcb07546b098c3964da7.png" + }, + { + "title": "Breaking 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/3b3c248b515e8c3a95114e43ff5a4d1a.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/5f3bc85e0c23dcb07546b098c3964da7.png" + }, + { + "title": "Breaking 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/e0f0d1f6a131699cbfd25c00192af3cd.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/5f3bc85e0c23dcb07546b098c3964da7.png" + }, + { + "title": "Breaking 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/95ea3be095fd6794270ed7dc5adf0da3.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/5f3bc85e0c23dcb07546b098c3964da7.png" + } + ] + }, + { + "categoryId": "625f83491fea07887e619066", + "categoryName": "Burp", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/c515c437f6ed4f62906fc002cc0db056.png", + "list": [ + { + "title": "Burp 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/2b0a79866b3ff7f526be74f9ece5fa0c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/13119b2bafba96a97062cf0070ac2edd.png" + }, + { + "title": "Burp 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/240512d87919eca52e158ca1c394f52a.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/13119b2bafba96a97062cf0070ac2edd.png" + }, + { + "title": "Burp 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/72bb5de165e71bfd9f718070ea610ca0.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/13119b2bafba96a97062cf0070ac2edd.png" + }, + { + "title": "Burp 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/c1531b085072be1f0707aa86b90d3efe.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/13119b2bafba96a97062cf0070ac2edd.png" + }, + { + "title": "Burp 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/1a2796d86150bf0588f570da12450d62.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/13119b2bafba96a97062cf0070ac2edd.png" + }, + { + "title": "Burp 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/73e22e498d75b1ef991b927b1ce60ab6.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/13119b2bafba96a97062cf0070ac2edd.png" + }, + { + "title": "Burp 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/ffa51c717f144800474472cca3856658.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/13119b2bafba96a97062cf0070ac2edd.png" + }, + { + "title": "Burp 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/56ae2848fa2cf163fc2fbd454699bc8c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/13119b2bafba96a97062cf0070ac2edd.png" + }, + { + "title": "Burp 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/be6771406a30e73aa62bb02157d6c402.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/13119b2bafba96a97062cf0070ac2edd.png" + }, + { + "title": "Burp 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/de622186e8b2b35ae43097db2bb20b45.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/13119b2bafba96a97062cf0070ac2edd.png" + }, + { + "title": "Burp 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/7014be86f0fe5c09b796e65340e6df47.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/13119b2bafba96a97062cf0070ac2edd.png" + }, + { + "title": "Burp 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/24c6df56ea75d4cbd467a7352d3faeb1.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/13119b2bafba96a97062cf0070ac2edd.png" + } + ] + }, + { + "categoryId": "625f83491fea07887e619067", + "categoryName": "Car", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/052d4199504f4fcb97b7cc9e07401c54.png", + "list": [ + { + "title": "Car 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/0619759e8da1730d7ccaa0431221b072.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/18af2d20fca7882d644ac1745a63ea6d.png" + }, + { + "title": "Car 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/e5b05a82fab3e76d3d3a150ea7c524e0.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/18af2d20fca7882d644ac1745a63ea6d.png" + }, + { + "title": "Car 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/6ab888f3cd83e13da07fa38ecd586e82.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/18af2d20fca7882d644ac1745a63ea6d.png" + }, + { + "title": "Car 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/43e740a0298fcb564abaebd3ae888f09.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/18af2d20fca7882d644ac1745a63ea6d.png" + }, + { + "title": "Car 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/6b72963c235449841157ff07d3110651.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/18af2d20fca7882d644ac1745a63ea6d.png" + }, + { + "title": "Car 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/9f32990305af872e1cd04316ea4dcc92.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/18af2d20fca7882d644ac1745a63ea6d.png" + }, + { + "title": "Car 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/6445a57d610fe55393f63409a383e62c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/18af2d20fca7882d644ac1745a63ea6d.png" + }, + { + "title": "Car 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/4adf39e09c07a08f9fa2e03108db395e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/18af2d20fca7882d644ac1745a63ea6d.png" + }, + { + "title": "Car 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/a2ad7ce685cc1baf74e7425c5ba4eb28.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/18af2d20fca7882d644ac1745a63ea6d.png" + }, + { + "title": "Car 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/298d731cc3b0f698088227385549ffa3.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/18af2d20fca7882d644ac1745a63ea6d.png" + }, + { + "title": "Car 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/f1696474e6482b97d58b2dc577c8d474.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/18af2d20fca7882d644ac1745a63ea6d.png" + }, + { + "title": "Car 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/a98205a6a5a837813a0161446baacadb.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/18af2d20fca7882d644ac1745a63ea6d.png" + }, + { + "title": "Car 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/ec59ac304495a098c3930ca4cf5f376f.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/18af2d20fca7882d644ac1745a63ea6d.png" + }, + { + "title": "Car 14", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/a089153bbbaf1d0ea6b71fe94f02eb18.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/18af2d20fca7882d644ac1745a63ea6d.png" + } + ] + }, + { + "categoryId": "625f83491fea07887e619068", + "categoryName": "Door Bell", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/382fcff17bbe80ad45aed28c9d1ae26e.png", + "list": [ + { + "title": "Door Bell 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/038780ebadb3249009710b1781b24871.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/f337efcb0e67418bc4f40c67d9914b3d.png" + }, + { + "title": "Door Bell 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/e96b5d06eebb2d6001a17293942e4f83.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/f337efcb0e67418bc4f40c67d9914b3d.png" + }, + { + "title": "Door Bell 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/93a1fb12fbfd65419677c380cd1ceac3.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/f337efcb0e67418bc4f40c67d9914b3d.png" + }, + { + "title": "Door Bell 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/e926d86a2b234756af495542f020a4e1.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/f337efcb0e67418bc4f40c67d9914b3d.png" + }, + { + "title": "Door Bell 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/c7e489164f640e750671868b8d5cf177.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/f337efcb0e67418bc4f40c67d9914b3d.png" + }, + { + "title": "Door Bell 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/5bc2eeab953d604d4400ceaad1ac4809.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/f337efcb0e67418bc4f40c67d9914b3d.png" + }, + { + "title": "Door Bell 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/9de866aeb7da2605341c3c69a3b1ee46.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/f337efcb0e67418bc4f40c67d9914b3d.png" + }, + { + "title": "Door Bell 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/8005cab6c5e7c0f64e243fd0960712ba.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/f337efcb0e67418bc4f40c67d9914b3d.png" + }, + { + "title": "Door Bell 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/2a7ded6caaa4d0e601d8066bd5cab926.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/f337efcb0e67418bc4f40c67d9914b3d.png" + }, + { + "title": "Door Bell 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/0f4ec6a3a7844c3843f5013fd236cb03.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/f337efcb0e67418bc4f40c67d9914b3d.png" + } + ] + }, + { + "categoryId": "625f83491fea07887e61906a", + "categoryName": "Gun", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/e7500deb0a551a15118c87e5cddd8fe0.png", + "list": [ + { + "title": "Gun 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/1b70d7932349c66053c18170fc34c483.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0b502b9482b4983cea9d0016222eb151.png" + }, + { + "title": "Gun 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/e41bcaab807dce68e4fdf0c8ad3050bd.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0b502b9482b4983cea9d0016222eb151.png" + }, + { + "title": "Gun 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/3adc00280653c1f3801ca604447e1ac2.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0b502b9482b4983cea9d0016222eb151.png" + }, + { + "title": "Gun 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/10bf11c673df6ad35e2c0091c0274b75.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0b502b9482b4983cea9d0016222eb151.png" + }, + { + "title": "Gun 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/9ae299c7048214c816051d89b64e73e0.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0b502b9482b4983cea9d0016222eb151.png" + }, + { + "title": "Gun 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/06eb4dad128dc0b38fd9a894e330d18e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0b502b9482b4983cea9d0016222eb151.png" + }, + { + "title": "Gun 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/eca3917ea4bb05de3738e6d56992e068.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0b502b9482b4983cea9d0016222eb151.png" + }, + { + "title": "Gun 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/6b6a94f60770a0eed81e2a6cceac990e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0b502b9482b4983cea9d0016222eb151.png" + }, + { + "title": "Gun 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/8217ef2b02efcc620a7693609e763272.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0b502b9482b4983cea9d0016222eb151.png" + }, + { + "title": "Gun 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/7ff1c0b254f99647bc15b8d0257c77e1.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0b502b9482b4983cea9d0016222eb151.png" + }, + { + "title": "Gun 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/54d7e3165add3b311cc52e42e2ac358e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0b502b9482b4983cea9d0016222eb151.png" + }, + { + "title": "Gun 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/fab9360f83cd2adedbccf863eef4c00e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0b502b9482b4983cea9d0016222eb151.png" + }, + { + "title": "Gun 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/8aa3109b806dd3af5a19e01cd92eedd7.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0b502b9482b4983cea9d0016222eb151.png" + } + ] + }, + { + "categoryId": "625f83491fea07887e61906c", + "categoryName": "Laughing & Clapping", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/f5f20f7b929d1895646fa53a11b6e713.png", + "list": [ + { + "title": "Laughing & Clapping 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/53976e14d9dcd04d66a2231dbefa2d25.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d2660175f92e9d66c5ea2438c998f96b.png" + }, + { + "title": "Laughing & Clapping 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/bf5865743949d55a2e60f76e54f406f3.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d2660175f92e9d66c5ea2438c998f96b.png" + }, + { + "title": "Laughing & Clapping 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/d4b7ac581f1e29e91873fb444bf4a650.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d2660175f92e9d66c5ea2438c998f96b.png" + }, + { + "title": "Laughing & Clapping 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/d2d86df37a19d3ba49ee576c9827507e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d2660175f92e9d66c5ea2438c998f96b.png" + }, + { + "title": "Laughing & Clapping 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/4b0ad3c4370ef58c65eda79c4ed5da77.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d2660175f92e9d66c5ea2438c998f96b.png" + }, + { + "title": "Laughing & Clapping 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/8ef8e563cbf9fd21d2d692f15e5872fa.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d2660175f92e9d66c5ea2438c998f96b.png" + }, + { + "title": "Laughing & Clapping 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/25e598b57e0b8b1c3577bc79a1f46d8d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d2660175f92e9d66c5ea2438c998f96b.png" + }, + { + "title": "Laughing & Clapping 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/3a890019e262b16ee4347cc8a813992e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d2660175f92e9d66c5ea2438c998f96b.png" + } + ] + }, + { + "categoryId": "625f83491fea07887e61906d", + "categoryName": "Man Cough", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/5ca252ff3bf4df8997dea29778a7b5a2.png", + "list": [ + { + "title": "Man Cough 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/a8e5b8919a9d48dc554478ea8f1c4439.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0c1d0ccc9575b1bfcb90709eaca2d87c.png" + }, + { + "title": "Man Cough 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/6e70e991809ed445964e664e7aaa9712.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0c1d0ccc9575b1bfcb90709eaca2d87c.png" + }, + { + "title": "Man Cough 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/488555f76ecd73f81fba44ce79735e6a.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0c1d0ccc9575b1bfcb90709eaca2d87c.png" + }, + { + "title": "Man Cough 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/5a9bb0bf2c45728baaed0802ffcc3785.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0c1d0ccc9575b1bfcb90709eaca2d87c.png" + }, + { + "title": "Man Cough 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/83a38883a26c16352c5ecdc75e895016.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0c1d0ccc9575b1bfcb90709eaca2d87c.png" + }, + { + "title": "Man Cough 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/53ca05546106e9dc029d15791c479c0b.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0c1d0ccc9575b1bfcb90709eaca2d87c.png" + } + ] + }, + { + "categoryId": "625f83491fea07887e61906e", + "categoryName": "Man Sneeze", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/3ab4be4f087c6105283b1fce000219d8.png", + "list": [ + { + "title": "Man Sneeze 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/da8ecb9ac9aeed016f19995362a52dda.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/abd829a1371fed85427195644bdecc50.png" + }, + { + "title": "Man Sneeze 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/a0283a7c16693263d16dceb903d72876.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/abd829a1371fed85427195644bdecc50.png" + }, + { + "title": "Man Sneeze 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/2d89cf3b56a45040b6a3dd772ddb5ca0.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/abd829a1371fed85427195644bdecc50.png" + }, + { + "title": "Man Sneeze 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/9d8cc900cd41b19bf110fc305e1ca23a.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/abd829a1371fed85427195644bdecc50.png" + }, + { + "title": "Man Sneeze 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/3063a0e734865ffb985ddccbfb6d8f2a.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/abd829a1371fed85427195644bdecc50.png" + }, + { + "title": "Man Sneeze 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/3fe129338e5f251b86ad1e462b3a02be.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/abd829a1371fed85427195644bdecc50.png" + } + ] + }, + { + "categoryId": "625f83491fea07887e61906f", + "categoryName": "Police", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/337c43b1284f89cd5fb01ba72b70bbe0.png", + "list": [ + { + "title": "Police 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/00758055f21c7c847eb17111fbd4fde1.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/b14f740e38a3027b0e07809ea3cd9e6a.png" + }, + { + "title": "Police 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/62fd647b38f9085b04388302ec6be903.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/b14f740e38a3027b0e07809ea3cd9e6a.png" + }, + { + "title": "Police 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/6c1b0258ee9d8d1a8944fade13d299b9.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/b14f740e38a3027b0e07809ea3cd9e6a.png" + }, + { + "title": "Police 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/709c8dd0669775acff861c3833f1380f.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/b14f740e38a3027b0e07809ea3cd9e6a.png" + }, + { + "title": "Police 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/2c0bafc776d3513f4cd84e30581673c6.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/b14f740e38a3027b0e07809ea3cd9e6a.png" + }, + { + "title": "Police 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/949fd589e776f0f497755b36b20725be.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/b14f740e38a3027b0e07809ea3cd9e6a.png" + } + ] + }, + { + "categoryId": "64b617f06d7b94ebbe2a20fa", + "categoryName": "Siren Head", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/66f62ff246444e7f216b3e3145436ba2.png", + "list": [ + { + "title": "Siren Head 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/f1c48bfe7199564a4f65cd366e5bbee1.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/71d4d9da20e9c77932ef1f8e360528b9.png" + }, + { + "title": "Siren Head 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/dd95a7600e0183928a90c9454125b9da.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d0f866a2c593c3d673a5b7c3c5ff65a3.png" + }, + { + "title": "Siren Head 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/717fee29f9cb3771f40eb611fa68ddb7.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/bc39a8d7dc21405b4c9d90bcd4bb763d.png" + }, + { + "title": "Siren Head 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/4055968c7925dc385780e5085e87e668.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/11c95a75b76c58e0b7fe948619bf90d5.png" + }, + { + "title": "Siren Head 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/7740dcc10a55fd19a9f535117267d167.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/c3532129a7e0c7a90ff1d7f5c840a588.png" + }, + { + "title": "Siren Head 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/9cee309d020b9057d3e3817f7bd3c9f6.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/57662e423e3572d248fe25c18e297571.png" + }, + { + "title": "Siren Head 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/76142b5831d017ae2a79bf6f21701848.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/1e2c6f0f9a02a7f16f101d2641dafdfc.png" + }, + { + "title": "Siren Head 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/ea514c12f3c2d600acc25764294d0e36.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/6336d43fda0f23102ed71ab253efd223.png" + }, + { + "title": "Siren Head 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/e9b29fb3222e26f98f513495aa94b07f.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d1c6f6b2a9954b1c86d9653a6176d3e1.png" + }, + { + "title": "Siren Head 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/c67c90fd97b0ff58b663b88b25f5d9c6.mp3", + "preUrl": "https://prank-sound-abi.pranksound.com/icons/icon-sounds/SIREN HEAD/Horror toilet head.png" + }, + { + "title": "Siren Head 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/5bf293da0ae9defb3ff22f2633c4e8a7.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/40ae0ffc0d72ff35a667c252c57bc21b.png" + }, + { + "title": "Siren Head 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/3e514f44b1a924784e70516f5c14676b.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/484c5a84e39b4cf8a89eaf6c0ce33058.png" + }, + { + "title": "Siren Head 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/f2d6521b93cb4708c90bc7411e3efe8d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/4ad530a9cd082b6718fc6b0c6314e117.png" + }, + { + "title": "Siren Head 14", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/b783ff32874fab37c529674008d094de.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/8daffdde57d1f112a0c8fa085e5dd342.png" + }, + { + "title": "Siren Head 15", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/39ea5814f83dad94fa03813765cd7be2.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/312a7a167f65006ae12a9c0835381a32.png" + }, + { + "title": "Siren Head 16", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/50ab76c335620fc019b3456ebd998dde.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/25fb210025fef2caf179b6e674132beb.png" + }, + { + "title": "Siren Head 17", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/0d24bfb2863ecd141bf531f8c10f4825.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/b16a10b771a10c6de7bbe6fc788ad29e.png" + }, + { + "title": "Siren Head 18", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/7a5c47c0a3eee16839d5152cc2534b9a.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/641a2ca25cab24bc625bf357ca068cf9.png" + }, + { + "title": "Siren Head 19", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/0ecdb52645d0183434c4adf54c5aa1c2.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/cc034d34f4b651dee403836573953798.png" + }, + { + "title": "Siren Head 20", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/cf4a85cff1bca293fc70ca99413ba3a3.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/1ea8ed30ad14f35b8c5414248e71168c.png" + }, + { + "title": "Siren Head 21", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/46b35ad55405ec55ab660f45ab342135.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/bda071bed3d6a2f27b451a0e23529cb8.png" + }, + { + "title": "Siren Head 22", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/98e6b123b0e4b8626be248d9570a0893.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d47035746f6540a7050a6401adabcd5d.png" + }, + { + "title": "Siren Head 23", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/f86502f566001ba59633f9e4b436a120.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/20d0f271ccb54260e6fd787e337d54d9.png" + }, + { + "title": "Siren Head 24", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/ca9deeed39c238efa15039fc6c504249.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/6b85ae163ea1702b837e6cef65f4e72d.png" + }, + { + "title": "Siren Head 25", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/a11ad1489c9bdcd019f424de3757ceb2.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/40291b6f6ce00d1e5870cf49b2deb169.png" + }, + { + "title": "Siren Head 26", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/2f18cb66ae66f52db7e5f7f7d720614b.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/3fa55b1e54a5e3a0e8b5aba438989ebf.png" + }, + { + "title": "Siren Head 27", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/dd392b80f13294931fd3cba97837c1b4.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/c1be056dabc3a43ed1e2fd6dd11e1186.png" + }, + { + "title": "Siren Head 28", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/1794f5474e0eecc863dcfbe37e7799ea.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/6af3cd32bcb76a0f9f31aef2697b65be.png" + }, + { + "title": "Siren Head 29", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/caff07c26ba52bbb40d0f6e9375d5117.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e184c7165caae221ba6dd2ed4f14e4da.png" + }, + { + "title": "Siren Head 30", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/feb2a49dc93e4c615e564658550562a4.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/a4cd82ea68f707cb87681545786fe1fd.png" + } + ] + }, + { + "categoryId": "625f83491fea07887e619070", + "categoryName": "Scary", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/6278fe84a68fcd4460cdd386c6e416a9.png", + "list": [ + { + "title": "Scary 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/528d36e86c6c907fcd269dfb11d36e7f.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/45dd88855533ed768453de20d00e24d2.png" + }, + { + "title": "Scary 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/017425f1d43d5d5a2ddb30d5c98b833e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/45dd88855533ed768453de20d00e24d2.png" + }, + { + "title": "Scary 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/6d4cad59de5cde890f3ad91fc97a01bf.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/45dd88855533ed768453de20d00e24d2.png" + }, + { + "title": "Scary 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/81bd6eccee3776b9f0739c844900589f.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/45dd88855533ed768453de20d00e24d2.png" + }, + { + "title": "Scary 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/10e36b4a6be36d66da6e8a412fe2dc38.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/45dd88855533ed768453de20d00e24d2.png" + }, + { + "title": "Scary 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/03be97cf98b8fdfe2bfc6192ca38e295.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/45dd88855533ed768453de20d00e24d2.png" + }, + { + "title": "Scary 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/2c234ea6d1714c5f921a11a0cb04b959.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/45dd88855533ed768453de20d00e24d2.png" + }, + { + "title": "Scary 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/e0f85cd581a950931ccd70c0a8f18284.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/45dd88855533ed768453de20d00e24d2.png" + }, + { + "title": "Scary 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/eec0a36a322ba705914de17be1844902.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/45dd88855533ed768453de20d00e24d2.png" + }, + { + "title": "Scary 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/c9b387e84b03367983b8c5956c027fd3.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/45dd88855533ed768453de20d00e24d2.png" + }, + { + "title": "Scary 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/81950f0fe7a87a8d919f90f6c7a126ac.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/45dd88855533ed768453de20d00e24d2.png" + }, + { + "title": "Scary 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/b490c3b6de2845d27f785cc038651a7d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/45dd88855533ed768453de20d00e24d2.png" + }, + { + "title": "Scary 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/54faf2f18d3aa3fdd1cf6288280dee33.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/45dd88855533ed768453de20d00e24d2.png" + }, + { + "title": "Scary 14", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/ffae2d80b33be19ce3ed46b71fa2e89c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/45dd88855533ed768453de20d00e24d2.png" + }, + { + "title": "Scary 15", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/32469294894ddb9e7f0d0470944c96ef.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/45dd88855533ed768453de20d00e24d2.png" + } + ] + }, + { + "categoryId": "625f83491fea07887e619071", + "categoryName": "Toilet Flushing", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/33b7620ad25844786a8fc223527f5ef6.png", + "list": [ + { + "title": "Toilet Flushing 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/4869b8d235565ae0dcfb417730fadfd3.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/cb67455649424c9e527ffb8cbe1d4720.png" + }, + { + "title": "Toilet Flushing 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/75fbdd7d378d68bcf9c5265c416d2ea7.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/cb67455649424c9e527ffb8cbe1d4720.png" + }, + { + "title": "Toilet Flushing 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/05b018ec588b59a7ae6aeacffebd090c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/cb67455649424c9e527ffb8cbe1d4720.png" + }, + { + "title": "Toilet Flushing 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/d99d871d2b71c2748a4b50a9e412a003.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/cb67455649424c9e527ffb8cbe1d4720.png" + }, + { + "title": "Toilet Flushing 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/569d98c887e4713a8f2ab75d94335471.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/cb67455649424c9e527ffb8cbe1d4720.png" + }, + { + "title": "Toilet Flushing 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/0d784187286cbdad0b86906b0ecf468c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/cb67455649424c9e527ffb8cbe1d4720.png" + }, + { + "title": "Toilet Flushing 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/2b83531021f3adfe140576edaa6ae64a.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/cb67455649424c9e527ffb8cbe1d4720.png" + } + ] + }, + { + "categoryId": "625f83491fea07887e619072", + "categoryName": "Woman Cough", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/f2bdfbc0e64c5fc58d2cfb97807760b4.png", + "list": [ + { + "title": "Woman Cough 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/f7752eaa1925eae9f35baa413473d947.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/5cdfcb21202fd7c0758fd4358ab5388c.png" + }, + { + "title": "Woman Cough 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/d12628bab0220fec1f2adfcd11059eee.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/5cdfcb21202fd7c0758fd4358ab5388c.png" + }, + { + "title": "Woman Cough 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/d328c92c428b9deb701e5ce62e29c3aa.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/5cdfcb21202fd7c0758fd4358ab5388c.png" + }, + { + "title": "Woman Cough 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/4924914999fdedb0b8805dd3bb351c1c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/5cdfcb21202fd7c0758fd4358ab5388c.png" + }, + { + "title": "Woman Cough 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/2bc4822253cec9bea5b1ebc58d864bf5.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/5cdfcb21202fd7c0758fd4358ab5388c.png" + }, + { + "title": "Woman Cough 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/1f76eff7125e748fe8cbbe9a75bbf065.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/5cdfcb21202fd7c0758fd4358ab5388c.png" + } + ] + }, + { + "categoryId": "625f83491fea07887e619073", + "categoryName": "Woman Sneeze", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/53ff3c33cb2978848ad158f5f503f44f.png", + "list": [ + { + "title": "Woman Sneeze 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/5e3372221ee2d524c09ea1453241f2ec.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/b9d608c945508adf3af63dd897b87962.png" + }, + { + "title": "Woman Sneeze 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/aa62d571978100034f075aa0e6fdfac1.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/b9d608c945508adf3af63dd897b87962.png" + }, + { + "title": "Woman Sneeze 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/e0cfbb8a8a73b8204faa50c83928c602.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/b9d608c945508adf3af63dd897b87962.png" + }, + { + "title": "Woman Sneeze 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/29f9bc8ea11b407997a732036867b690.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/b9d608c945508adf3af63dd897b87962.png" + }, + { + "title": "Woman Sneeze 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/6ee013abc51374d888d692cbc3dd0113.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/b9d608c945508adf3af63dd897b87962.png" + }, + { + "title": "Woman Sneeze 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/6d114f02275389c9e2804742e03589f8.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/b9d608c945508adf3af63dd897b87962.png" + } + ] + }, + { + "categoryId": "6260b076d7ddc35b5bd96175", + "categoryName": "Fart Song", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/597048640f9327fdf80a9b8c57d1875d.png", + "list": [ + { + "title": "Fart Song 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/7f57e37ad26c9340e9f2c4e9513ad16b.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/2a6fd612ee2d23f205720be5a47b8f0d.png" + }, + { + "title": "Fart Song 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/d48603d0f885f0bfb92908dff279fc74.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/2a6fd612ee2d23f205720be5a47b8f0d.png" + }, + { + "title": "Fart Song 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/a0c91808e3c3f82dde9c4f0c213c277b.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/2a6fd612ee2d23f205720be5a47b8f0d.png" + }, + { + "title": "Fart Song 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/a6402c906f706a2d8ca90623ae25959d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/2a6fd612ee2d23f205720be5a47b8f0d.png" + }, + { + "title": "Fart Song 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/6e076b6f5cc6b28206855438f5ae1ae8.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/2a6fd612ee2d23f205720be5a47b8f0d.png" + }, + { + "title": "Fart Song 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/fe8e179b2cbee41df3307fe986f6c5c3.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/2a6fd612ee2d23f205720be5a47b8f0d.png" + }, + { + "title": "Fart Song 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/12ffa7d48d8d09603cdd083c35011f07.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/2a6fd612ee2d23f205720be5a47b8f0d.png" + }, + { + "title": "Fart Song 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/1c57006820d6f0c33bfd98da3876aea6.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/2a6fd612ee2d23f205720be5a47b8f0d.png" + }, + { + "title": "Fart Song 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/dca2cd758468a24b069c8fbcf1c58822.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/2a6fd612ee2d23f205720be5a47b8f0d.png" + }, + { + "title": "Fart Song 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/7197d999f98a8dac6c1db1b1b102bbaa.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/2a6fd612ee2d23f205720be5a47b8f0d.png" + }, + { + "title": "Fart Song 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/02d51fe34d1ea224e21a6e81d82d6b34.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/2a6fd612ee2d23f205720be5a47b8f0d.png" + }, + { + "title": "Fart Song 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/03f3ae3aad6de892fab252ab1105de9f.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/2a6fd612ee2d23f205720be5a47b8f0d.png" + } + ] + }, + { + "categoryId": "62be51874d4edd56b588d54d", + "categoryName": "Hair Dryer", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/0cbc3e7ca3f59e483987ada3bf66092b.png", + "list": [ + { + "title": "Hair Dryer 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/ab62180a31684ba85e6ae1ba49969105.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d923a0b99a094f3aa46706d7f4a1adcb.png" + }, + { + "title": "Hair Dryer 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/2ccabf9031bcfa21d48551e79fc83415.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d923a0b99a094f3aa46706d7f4a1adcb.png" + }, + { + "title": "Hair Dryer 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/2c646ee341779cb9c6cbd333fa32d964.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d923a0b99a094f3aa46706d7f4a1adcb.png" + }, + { + "title": "Hair Dryer 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/877dc85a9dfa2fb89a50d14ff78555c4.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d923a0b99a094f3aa46706d7f4a1adcb.png" + }, + { + "title": "Hair Dryer 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/41e6c807cbc7a5121bd85e20c51e2dcf.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d923a0b99a094f3aa46706d7f4a1adcb.png" + }, + { + "title": "Hair Dryer 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/0bcfafc6a6cee193b81dc776ee8978a5.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d923a0b99a094f3aa46706d7f4a1adcb.png" + }, + { + "title": "Hair Dryer 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/0bc4403a27bd81be77ca974858880814.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d923a0b99a094f3aa46706d7f4a1adcb.png" + }, + { + "title": "Hair Dryer 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/7fb10282eaf2abd213e5b0748c249c3f.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d923a0b99a094f3aa46706d7f4a1adcb.png" + }, + { + "title": "Hair Dryer 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/8fd15fe2cd50c03de4e2e9099b64b605.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d923a0b99a094f3aa46706d7f4a1adcb.png" + }, + { + "title": "Hair Dryer 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/e43c49428ea8d722e3f899fa751db5a4.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d923a0b99a094f3aa46706d7f4a1adcb.png" + } + ] + }, + { + "categoryId": "62be51cc4d4edd56b588d54e", + "categoryName": "Scissors", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/b5d48ccbd106fbd1d7c626f91727fa10.png", + "list": [ + { + "title": "Scissors 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/383b87e66571b7d1d61e26559e78c1af.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/ad58f8cfd6ddf45319b2c74c5ec3e338.png" + }, + { + "title": "Scissors 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/f097fbde71b2d02a5fa7d82c80b2178f.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/ad58f8cfd6ddf45319b2c74c5ec3e338.png" + }, + { + "title": "Scissors 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/fb3004acf9a716bc01811fe575fc8fa4.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/ad58f8cfd6ddf45319b2c74c5ec3e338.png" + }, + { + "title": "Scissors 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/010f00d576f839b749ea679de5071304.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/ad58f8cfd6ddf45319b2c74c5ec3e338.png" + }, + { + "title": "Scissors 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/2ec031ff389789dad863624fbe0daa84.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/ad58f8cfd6ddf45319b2c74c5ec3e338.png" + }, + { + "title": "Scissors 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/1720a6fffea45b1e85960c0e2882e533.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/ad58f8cfd6ddf45319b2c74c5ec3e338.png" + }, + { + "title": "Scissors 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/9b4263d5ad2bae68cb5bec90119b1677.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/ad58f8cfd6ddf45319b2c74c5ec3e338.png" + }, + { + "title": "Scissors 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/1a58702466094a2e8f22c357cd6651b7.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/ad58f8cfd6ddf45319b2c74c5ec3e338.png" + }, + { + "title": "Scissors 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/534eff4250e113d0b9c9c160f83e7daa.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/ad58f8cfd6ddf45319b2c74c5ec3e338.png" + }, + { + "title": "Scissors 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/fd206198f0d10bafd81909ffb1948f7b.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/ad58f8cfd6ddf45319b2c74c5ec3e338.png" + } + ] + }, + { + "categoryId": "62be51f84d4edd56b588d54f", + "categoryName": "Stun Gun", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/6dbc249836ba3c26eaea8a65246ba007.png", + "list": [ + { + "title": "Stun Gun 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/36714df03c6662fe87bf66775b79e290.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/93ca289c09f6940321e6649e36f1b4b8.png" + }, + { + "title": "Stun Gun 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/5ea760c046e892a87572f6ff4b574b21.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/93ca289c09f6940321e6649e36f1b4b8.png" + }, + { + "title": "Stun Gun 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/3c445de6e2182f8bd84dc2013e0c92c6.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/93ca289c09f6940321e6649e36f1b4b8.png" + }, + { + "title": "Stun Gun 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/efb342b94e6705a542bf81b897884891.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/93ca289c09f6940321e6649e36f1b4b8.png" + }, + { + "title": "Stun Gun 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/217cb15dd95d75de47be5ecc25903bc9.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/93ca289c09f6940321e6649e36f1b4b8.png" + }, + { + "title": "Stun Gun 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/3c57ac18cda86a1c64497c5bf71a5df9.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/93ca289c09f6940321e6649e36f1b4b8.png" + }, + { + "title": "Stun Gun 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/71804861ad4c4b9a87cc55233cab13f1.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/93ca289c09f6940321e6649e36f1b4b8.png" + }, + { + "title": "Stun Gun 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/14e0f7d9d2e90455332dbf1fc48f164b.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/93ca289c09f6940321e6649e36f1b4b8.png" + }, + { + "title": "Stun Gun 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/86525c1bb7cd3a5c32b8f75d1d246ca1.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/93ca289c09f6940321e6649e36f1b4b8.png" + }, + { + "title": "Stun Gun 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/b30e4e8b2f568e68fafe97f020f9cc03.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/93ca289c09f6940321e6649e36f1b4b8.png" + } + ] + }, + { + "categoryId": "636b8e5415831ec42fc7d802", + "categoryName": "Animal Sound", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/9eab1c832da8af19c8d8a965cb8dd9bb.png", + "list": [ + { + "title": "Animal Sound 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/1afe880865096daa30ac460e38d2dfb6.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/b00eb30b4074c81b8ee60c5128564f8b.png" + }, + { + "title": "Animal Sound 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/4396f666acdaaef21f5ccbfd881a3220.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/972d923d65fcb1d499d224e791c90965.png" + }, + { + "title": "Animal Sound 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/2d52f6367b0c76e4ce5b304905ce3b53.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/4ea60f5da4fdd3d93315b875a3a0b8f3.png" + }, + { + "title": "Animal Sound 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/9da6c28275d3df58a24b68285a0e50f6.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/8d6fc1569e50244255c50ee867d54086.png" + }, + { + "title": "Animal Sound 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/76619d0d0eeea55767680c5a9557f747.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7cb7f14b4482d12ee09ff818f4af6bed.png" + }, + { + "title": "Animal Sound 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/328f0baaf04f0279ae2747bc1351f07f.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/423e1213b1c1c45257ec4b0cb62f654c.png" + }, + { + "title": "Animal Sound 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/995aa4e18e9c777fecbc6ff5aa9f2caf.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0dbd9f5c7825f8878f58011a8e5e2133.png" + }, + { + "title": "Animal Sound 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/2dafd4c792b437f7d1af14632430e0c2.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/c2c763709327a297d33c6c64356c385f.png" + }, + { + "title": "Animal Sound 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/fcc01cdae98a746f30affbf1cd1deb28.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/c66663eeadaa8a19b773d7d23718bddf.png" + }, + { + "title": "Animal Sound 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/72aa14cbcdd13418c388b20be652d03e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/adc4726c063a9025c5b236fefd80ce12.png" + }, + { + "title": "Animal Sound 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/1e242e032f40addf7f8f514418ab0046.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/fcf52097aac130ae953cfb838f91e08f.png" + }, + { + "title": "Animal Sound 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/f4bb28424bb7d75f0137a241db72dbe8.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/8a1b5251e46f583e4415c09cd49d51ea.png" + }, + { + "title": "Animal Sound 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/75aa9d534f4e50859e608edec37f950a.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/998735e65b4c8e082bc8563e75dd6528.png" + }, + { + "title": "Animal Sound 14", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/86239f77d6c4d8ccd17a788351251891.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/3ef36af4f9497a71e375df758df8244d.png" + }, + { + "title": "Animal Sound 15", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/cbbe804094b71741f94cd9f34ca1e3b3.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/971fd2b266d2deaecf7999e5c5846adb.png" + }, + { + "title": "Animal Sound 16", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/299eff3a880de444bbc8641a7dd65dbb.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/22bbde4a6fc418fc9ef66750d0d5400e.png" + } + ] + }, + { + "categoryId": "636b8e5415831ec42fc7d803", + "categoryName": "Business & Office", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/310d539f09087c633febe6bb47dcbe9d.png", + "list": [ + { + "title": "Business & Office 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/dac34a1833dbc36e5485c9ad605186f9.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/f285409f669ec89b073aa32da7c689b5.png" + }, + { + "title": "Business & Office 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/30986c5ed073a225c4f2ecc4e18df94e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d3d198ec14f12000e8000e1e7ca3c2b2.png" + }, + { + "title": "Business & Office 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/15bb74cacee7e2e6774b0486f6f119fd.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/4d4295326110cbc8970c2d5b045fdddc.png" + }, + { + "title": "Business & Office 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/71248827a62bdc2e09f40ac4dafbdddc.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7f79dd59ee84130d97935a6809ee8932.png" + }, + { + "title": "Business & Office 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/de4c54a2e4734ce622e6c0650bee4e29.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0e2bdbf65f930c724f177379cf6e1433.png" + }, + { + "title": "Business & Office 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/f7ca6b14b56ea73b369b6bae7c4e4e2c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/4d04e30956a94b46a0ff3f6f3679c668.png" + }, + { + "title": "Business & Office 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/89e347a79b3bdc50302fc921702bb656.wav", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/ebf9fc1c3f19a38b04e48051190e98b9.png" + }, + { + "title": "Business & Office 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/4b8b9230ad1c31f315d98c04005b9007.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/c2812f24bfc3e17940bd5e8dba2c384d.png" + }, + { + "title": "Business & Office 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/711b2bf9ef1f12f325a1e4a06b67e71a.wav", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/97d22c85cd7c616d6fa304cc24a2d4d2.png" + }, + { + "title": "Business & Office 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/b9a2ba10a8c49185f81e9a098b7d8e9e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/a3b2eee907c7e17e2153d0278e844565.png" + }, + { + "title": "Business & Office 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/4dad8196b944eb9d7f4aa5ba9fafb1ea.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/02f87fce069b516fabc7cee0b8042380.png" + }, + { + "title": "Business & Office 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/4de94407c7b019b4f28e7e47aeaba821.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7170defe4afbac8f2e3adc1c7786efe7.png" + }, + { + "title": "Business & Office 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/75d78fdb2025ffe47867d0c66f940c1d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/17b3e93b2eeff9b952012cf2d77ede26.png" + }, + { + "title": "Business & Office 14", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/9cccbb6715861dedc1d5d788a315cd91.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/baa5002f8777087d433be6c3e27f6407.png" + }, + { + "title": "Business & Office 15", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/804f1003e1a900f0ed58fa855f6b74f5.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/17e051287b5c7d6d2871d169f84b0120.png" + }, + { + "title": "Business & Office 16", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/dc19db1639480a2837bb8fb2e815f3d1.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/29a072366d8a98a411d8b6e979c4ead9.png" + } + ] + }, + { + "categoryId": "636b8e5415831ec42fc7d804", + "categoryName": "Doors", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/fc4acd4d2f4c93c94c65fa122e4bf945.png", + "list": [ + { + "title": "Doors 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/5dd61ae1dcaf73548d6fa3b46630c94f.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7eb41be957ec7d8b0ecd7584221cbd43.png" + }, + { + "title": "Doors 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/72a49b6da900a94ee9bbf81ea97eebcc.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/abbdcebf90efbfa947b8b65deef8bbf0.png" + }, + { + "title": "Doors 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/b532a5815df6aa83d42eee075b7fd0cb.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7a9b205da4fd1cbaee96251bcc72723d.png" + }, + { + "title": "Doors 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/61c804feb9791b324240794466bbecfb.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/b2748764ffb0b3f6adee8bec72bc23a7.png" + }, + { + "title": "Doors 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/8196950a7900e1dc7f89e16d884532f7.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/dceaa1d13a61589b26d1984dc43aa935.png" + }, + { + "title": "Doors 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/467373a534d5828b3cfc40e7e15f4c29.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/97e82065e38da733e3873be883680045.png" + }, + { + "title": "Doors 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/4d6021931f2cc965b8f4618518519825.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/870c966054eb8e5c8599c87760edf1a0.png" + }, + { + "title": "Doors 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/bc1b8cad303726345b57d53875eb3829.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/87732e14f894bffe1e1037cfec2ab1bd.png" + }, + { + "title": "Doors 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/969d1046fb8e89b08d489ac649710389.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/f623e0b8b10afef6a1d5803cdc71c4e5.png" + }, + { + "title": "Doors 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/253cd4367452afe514185d206c880da6.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/1d903b54414d65351897d1d3bc5931d1.png" + }, + { + "title": "Doors 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/484faca48a560a2735e5f263c269dd85.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d526bec2aba09fcc2ef2ffc3d4be162d.png" + }, + { + "title": "Doors 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/fdfadf1f67a7f0fe84fc8fe415b3e780.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/8fcbebdf66ce047de184cbe06a033add.png" + }, + { + "title": "Doors 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/4256003d4e427cad1a9d6c91e124c70e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9c1013485295e5f6d7e187b8dbf18d72.png" + }, + { + "title": "Doors 14", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/53b4d94372e6ad1f00e2588c4a2e6d5a.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/b1f8e3b5c189c6722080cbfa8e339324.png" + }, + { + "title": "Doors 15", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/976b47bbd63271953dbaa1571af18b33.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e2b7ee1365748dbe029e397b5552a2d2.png" + }, + { + "title": "Doors 16", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/faea69992fb7827e14d58cbc11b48e5c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0996dfe242956c469972c799d5c29838.png" + } + ] + }, + { + "categoryId": "636b8e5415831ec42fc7d80a", + "categoryName": "Tools", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/b52b8ff860d9faa3f1ebfcce9674146a.png", + "list": [ + { + "title": "Tools 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/8ecd92c12f58b998a1995b1165fedb2f.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/61bac61bf374b774bada2f2ff2a4c5a9.png" + }, + { + "title": "Tools 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/c6b83c50a9ffa835f85a33fbd5456378.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/8236f1eb51b7c1664bc12576904c20dd.png" + }, + { + "title": "Tools 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/f87a533bd42391c05919cf42217d0881.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d5dc76bec49925af9eddfae717771d21.png" + }, + { + "title": "Tools 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/b60bab2e7a6aa07a1ea7a8cfadb9eb2a.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/c230585234a87c66eb77d14d409f314f.png" + }, + { + "title": "Tools 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/749997c97f26bbd68d126063a73e020d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d33fc684d1b061c48198a9fe06a6a435.png" + }, + { + "title": "Tools 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/7ac292b1e7e08aa9deac5336c98672c8.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/ebd488945e45cb8f9bc4fab61777226f.png" + }, + { + "title": "Tools 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/d24fa096945aad87e4e7e826b951cb47.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/87758a660d803d1993163a6174337e86.png" + }, + { + "title": "Tools 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/44d2fa94e973155b6eafc2ebd98a48b5.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/31099ab082cf0c33257ba55b6f158d2d.png" + }, + { + "title": "Tools 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/3d2bb144b89a0f17694976d7c0752fbf.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/bf4f23309c1e286ac774bd7ea905fec2.png" + }, + { + "title": "Tools 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/5ca71e456e6fc165ce80670096441054.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/313943eb3bca880b256eb60817bbe794.png" + }, + { + "title": "Tools 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/9f6568788aafed3a4e94666556e063a3.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/03448a48e39357ff4cb0e5353eb2d84b.png" + }, + { + "title": "Tools 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/d598154f78de11d670556446024fe75c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e8e2c49b654cac07f1b9aa435e94a4fd.png" + }, + { + "title": "Tools 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/74e4fb931e8b23db2429b0540206b735.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/4874e00bba3ccdc19fdce2caaa42abe5.png" + }, + { + "title": "Tools 14", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/8bc825c756c4bc3c650638f00906d8a2.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/c3fbde9b26562ebf3dfa26663caf905e.png" + }, + { + "title": "Tools 15", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/637463e2cb3b2dc56857803be51e740b.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d7236b203518ad4d663a77cfe9605797.png" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd33", + "categoryName": "Blowing Nose", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/10ae4d6081899ea2e9a669d984803af1.png", + "list": [ + { + "title": "Blowing Nose 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/c21ee72ff053b9af5446a144f3a8f5d9.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/3d852de32ef2cee953cc0052c5434d7c.png" + }, + { + "title": "Blowing Nose 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/d8bc2062013cf3898ba22339e05f8937.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/815a8c9f75c08462e5056293b4ac03d6.png" + }, + { + "title": "Blowing Nose 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/738053f0fd11e2e78ebc6982a0ce8d94.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/5230615041ab079bc44b5ab4651689ac.png" + }, + { + "title": "Blowing Nose 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/8b39b3c764aa9f24d793ef7ca9b47766.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/5db6a01b77d6bec1e77e27ed0250538d.png" + }, + { + "title": "Blowing Nose 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/1dec038dcf27e131f378152b6cca19aa.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/c1f25a36e5be3f5e89548ca2df68ec7d.png" + }, + { + "title": "Blowing Nose 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/e3ca312da6ccf6c045cf54a3053ec64d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/2c70c41bf20ab79c047ab83eb073c7f1.png" + }, + { + "title": "Blowing Nose 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/d27f5ee9a14e7abb8647df98bdf78d6d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/615db5ca94702e352df5fe7160405987.png" + }, + { + "title": "Blowing Nose 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/f8b89b279b92dcc07fdd21c57b274939.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/335130a491ceb6544dc06030a9099b72.png" + }, + { + "title": "Blowing Nose 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/524df318fb89468b47ecdd24fee0abb3.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/cb3589f2bcc4de916b93f1d645bd609c.png" + }, + { + "title": "Blowing Nose 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/85df353b75274d23379db28c793bcda2.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/071640b3fbc881af55fc345aefbcfb8f.png" + }, + { + "title": "Blowing Nose 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/3323d20bae58fba6564d20dddbf54344.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d64135b9fc82bdf24691ba3cd0d219fe.png" + }, + { + "title": "Blowing Nose 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/fec8cf2ef7810aa77c535d30deb424a9.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/be6f421cd6252c727d0849b0485872c7.png" + }, + { + "title": "Blowing Nose 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/181b424184ee04268e010b2d57fc7b3c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e535a74ddb58cd6061b3d12bec3d8108.png" + }, + { + "title": "Blowing Nose 14", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/8e408532f99f796ca6ef4ddb2536ccb2.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/6200c6c8db8192e6adf9870e6fb3d66c.png" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd34", + "categoryName": "Boom", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/5b1491b8aaf758881c67c8c2b558c2dc.png", + "list": [ + { + "title": "Boom 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/5306947bccc61b844e2e6727b457379a.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/82c5ab1a9f451de342f3f09216e1fbee.png" + }, + { + "title": "Boom 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/1b3cc658778a2341f0d6552f7f4f5962.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/1974c458e5f8872ad86b965695d2099b.png" + }, + { + "title": "Boom 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/f86bc4ffc1eaabd2981caee1f0e99340.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/6bae28d8c8769199edafe4131b300fc0.png" + }, + { + "title": "Boom 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/289af25a549128d5283adad2beba9bab.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/c9f3f6a9ffda61356fe9eaba57bbd4f6.png" + }, + { + "title": "Boom 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/479ebd96e9487ff97aab59db83ae7d8a.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/a6c2da6f9026bd769cd0839c9e63120a.png" + }, + { + "title": "Boom 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/edb83ff1f94ba7ed4022c9592372f717.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/30312fa0068c7d5b2eb5be68373e2ac9.png" + }, + { + "title": "Boom 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/bee0244d6a055138352e20fc9e657fd1.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/f7de1f306d8688582603f28d3f1d2b5b.png" + }, + { + "title": "Boom 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/9aa4c5eea7cb1df76482151cfec7143b.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/500c164ef2359970562876e7be6f3a69.png" + }, + { + "title": "Boom 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/1d1a8d15f3bd34210b32a15fc01e357e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/05af0a4257212c0d05a428bd12f702ea.png" + }, + { + "title": "Boom 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/26979e70465520b90166a19db093b678.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/6ad99a9bc42d9200f5e62a62fdaf263a.png" + }, + { + "title": "Boom 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/5c5581b9ef71e552db551b817c6face0.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/056e4e4bcedc33a049702bf2136ce246.png" + }, + { + "title": "Boom 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/2ceff4497dd839813c8180e5b1e85daf.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9d3ff691c62a65fddd11b1971001387e.png" + }, + { + "title": "Boom 14", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/5a01d5adf7cda433c436825285c476c3.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/2f36ab0b9b3c8d2f3ac825d4cf98ca40.png" + }, + { + "title": "Boom 15", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/68d1372b68af614f0d8a13088c5f997e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/5d5f6d6ef003d5ac9aa219cf5e457f1d.png" + }, + { + "title": "Boom 16", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/319b39b164ee36a13d42add262409225.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/b1e1e983e25f064323fffa945987ee39.png" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd35", + "categoryName": "Clocking", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/e3541e200135977e948a25f3fa3cf9ae.png", + "list": [ + { + "title": "Clocking 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/032d4c70e10ccc9a058784834525abf0.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/455bb3313b0fbe49583f8d08342d7be9.png" + }, + { + "title": "Clocking 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/0ebcd92a879c0747ca396b7056fc0d77.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0072b82cbe704d382d94163e8a4d7ea5.png" + }, + { + "title": "Clocking 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/6c3b8867d8dc5ddae8f6f4dfae2e161c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d1b160240044e24c4d70c1e6e9c13a08.png" + }, + { + "title": "Clocking 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/22a5efd130ecc59ae5b572e411383215.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/54708a377b13ca9220c98d67bb2b05b3.png" + }, + { + "title": "Clocking 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/83d7123a865e59111c8e21c9e84d6f7d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/952339c7f8b628c0076aa67d3a91fe3c.png" + }, + { + "title": "Clocking 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/5a6bae02f1218a65bce425a394d359bd.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/c810ed9b81a8d117e976595a79545a1f.png" + }, + { + "title": "Clocking 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/d6364d7a241e6229efd69025f64ef4af.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/1222c2c9548466ded15941e3ec870cff.png" + }, + { + "title": "Clocking 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/ffeefb8ac458b79227bd16321bf6141d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/ed63edf33b1729c9bda6b3d4cbaa6e95.png" + }, + { + "title": "Clocking 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/62120a53252484f25d5d137f1e414925.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/1fe48f5bc261f2bc56bb74960af59fb0.png" + }, + { + "title": "Clocking 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/072cbbb01d6067011cd5661676c15bec.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/3f1ac1219fbaee5a369325654a4236f3.png" + }, + { + "title": "Clocking 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/35267eb03b6c63b878287ea0a58b465d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/f0b356181df23e939e48fd0dbfbde77c.png" + }, + { + "title": "Clocking 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/b6bd31db371b35e3e0413b7a1bcaa526.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/2679e3065f4b7b1c53706bdbce5db3b7.png" + }, + { + "title": "Clocking 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/657cf0b4daad0b890dad532224eff264.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/58aa57c5a6a2145ef55a91eed36d94bb.png" + }, + { + "title": "Clocking 14", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/e6ec30d7e2328312cec2f81aa4ee8cfd.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/09af64443514248717d999cd3de025a1.png" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd36", + "categoryName": "Fun Anime", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/aaeefafde067a8a581e092da1bded504.png", + "list": [ + { + "title": "Fun Anime 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/82e23478a39727b64319ea9a24305c44.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e531963223deb322b6c1cd82ca35e592.png" + }, + { + "title": "Fun Anime 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/4c96810a77998e69fc26c7db700943ba.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/564ed41ed1c50939f678c6ce1615a6e6.png" + }, + { + "title": "Fun Anime 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/abb51fb03ffff3df365a52e1a7909a6e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/4ad9020fbea3aa257808155ab0126d4b.png" + }, + { + "title": "Fun Anime 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/e19805327c2fef5e45d7980907e1bff3.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7689e7a20fad1560264d4958ca171bb6.png" + }, + { + "title": "Fun Anime 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/c581f4a448d6e3a2664400409dd7f1d5.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/f957d27cdfed60da55a6c8f19e77d3ad.png" + }, + { + "title": "Fun Anime 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/c6768509557bfa64aabf3a50ebec11a2.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/476fa332cc8aa7d52fdee4e7f09b9efe.png" + }, + { + "title": "Fun Anime 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/bc839deec4b513f5ff140d6f10399a82.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/eb251b99ea2a75bd894bba66b06eefa7.png" + }, + { + "title": "Fun Anime 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/f39bc98cd9378aae577317073a83a292.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/ef6b03b866a7403d1b866e844d2ea0e7.png" + }, + { + "title": "Fun Anime 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/d53fc0ae81afeac96df388f6a46b596d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/78a92bcb099672e7410382f5ffb96ebb.png" + }, + { + "title": "Fun Anime 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/0623826682a9e23342ad643442901586.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/dd7baccea4b5f4ec1034ccbf409d0255.png" + }, + { + "title": "Fun Anime 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/f871f8a0248e4c72ec23eabe1c5a1c26.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/1b74cfe553a4100f6a2880face866a9b.png" + }, + { + "title": "Fun Anime 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/c3c889815549d64a75e8fd4dfbd19ad1.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/95486a7e21e90c104089d0ead67d1b4a.png" + }, + { + "title": "Fun Anime 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/1a5f1250826de847860c616847abadc5.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/99eae612ce6f2c0bfb88124494e365ce.png" + }, + { + "title": "Fun Anime 14", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/1d891ffebbdb80288e29e01a0ef3ff06.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/f1e484fa2f68496eb14e884a7f1b5193.png" + }, + { + "title": "Fun Anime 15", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/9e6efaa721456378dc7f2fd9a4b80431.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/fa29b5549d0dc2922ab022daf74d0618.png" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd37", + "categoryName": "Gurgting", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/340f7ef92a7578f79e6bd46a312f33f7.png", + "list": [ + { + "title": "Gurgting 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/e83587c797c63bda5ba0ba6e9661c10e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/92ebcaceca2f01bc0c5b17685260fab5.png" + }, + { + "title": "Gurgting 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/54a2ae6b7b3a6dade1fb653bee78d725.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/c4bd65ec05dc758a167089ccc70dbc99.png" + }, + { + "title": "Gurgting 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/d79da14a8674221c299c546ae5279a0e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/67ff60b6706cba7005666ea00b42a567.png" + }, + { + "title": "Gurgting 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/7231f3e4c77dfe4e187ce9567a91a396.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/188336dc146d580464df78f639840322.png" + }, + { + "title": "Gurgting 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/9ab0294593e0d91ad4898bed9ac7d07c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/81c9fc90426a5f09550aefaebec609ec.png" + }, + { + "title": "Gurgting 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/d92ab4e402006c717d2661db13197f09.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/47f677ab3d76036aeeb7d883143acc35.png" + }, + { + "title": "Gurgting 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/9d70e3f7bb5972e369376e594a3a187b.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/51b2150f404124ca10d97e4a6810e912.png" + }, + { + "title": "Gurgting 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/d30ad11811d29696445ab82646c8948c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/db6626e843b7e7be6fd3b8fab03bb3c6.png" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd38", + "categoryName": "Snoring", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/90513d7237ab90669be0049f8a093fac.png", + "list": [ + { + "title": "Snoring 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/d997397b7b670deb5eb3db3e5a0d116b.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/71a53b72f1fc60996f118ab40bf7b743.png" + }, + { + "title": "Snoring 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/7c5ec7e1aa8dc82d9a65cebd3ccc2f2d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/32d9f31db6f6c4f3cf91bb53c2a329ad.png" + }, + { + "title": "Snoring 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/ddcc94754a778ff7eb96a6d4723e6537.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/1e3ecb4ef600dacaa302349b4c47c8bc.png" + }, + { + "title": "Snoring 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/9dd4fda080ab2c3a8fce79d2bc53477f.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/4b402486f7c161195d2a59d63710df01.png" + }, + { + "title": "Snoring 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/6557e92d1ae88b26aa3fa12297fb57d7.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e1c1ac226e6bd3fdc0b347dc88d83554.png" + }, + { + "title": "Snoring 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/2743eabb2a90c80fdd88521b1d20af58.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/a65b43dafc79ddb0e20db297e479b02f.png" + }, + { + "title": "Snoring 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/727733ca746f831e9ddd2a54d9cb747c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/cfa2e6cbfa5790163388f2532672ad29.png" + }, + { + "title": "Snoring 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/4d37ebc5baa7f6dac1d35b5795e017b8.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/6081e93fecf535ad88645553308fe912.png" + }, + { + "title": "Snoring 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/5814b09bb3eea1ae7529c922de188b8c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/2b922803e5f21b96548c103b2cf36481.png" + }, + { + "title": "Snoring 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/58270fc0616e08a132642f291a655f87.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/c768c8dd29f9d69024b09b1b99b9b0a4.png" + }, + { + "title": "Snoring 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/f10bccfc57aec1dac59868d5c3510765.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/210933cae9708dd88bb4e74939a3fc50.png" + }, + { + "title": "Snoring 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/6a00470a867d76515fd0e319c2e7d2b1.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7b6b47f6dcde9f9183e4d25208fef6ff.png" + }, + { + "title": "Snoring 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/8dac9187468e2968e732716ef459da70.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/5a750988a6584326de4c0060ceedee62.png" + }, + { + "title": "Snoring 14", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/fc973109aa07c0795d7739caee934c3c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/6cdbd0f5c65ff9e1821e72238f848c4b.png" + } + ] + }, + { + "categoryId": "636b8e5415831ec42fc7d805", + "categoryName": "Meme sound 1", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/3f20b20d6eb55d2c150bfdaab3146d5b.png", + "list": [ + { + "title": "Meme sound 1 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/4cd17db699d08db7a00410aa44cfdae6.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/4e54a92c280899133f5748cfcb9ad94f.jpg" + }, + { + "title": "Meme sound 1 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/6f4f5d8793fefd662d605051e882e308.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/6ce34decfb7d58cf510ab82dc78aa5b5.jpg" + }, + { + "title": "Meme sound 1 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/83dd4438485bc75d1c2512d211c29e94.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/508463f2dffc6aadc6d97f0dbf0e0f54.jpg" + }, + { + "title": "Meme sound 1 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/f72c46ffaa2eb922a5d3862154e4d7da.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/768f3032a5b4d5f108d38315021369b7.jpg" + }, + { + "title": "Meme sound 1 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/49f4f9589e5bc7fccb5025c3bbbf6370.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/5145b39e4f37e5e7b19b3eb044da4ca6.jpg" + }, + { + "title": "Meme sound 1 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/b70fb22c26fd2b3ede119ed8211c87cb.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/674b7013980d4de4a298d29cf4a453bd.jpg" + }, + { + "title": "Meme sound 1 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/14893595f107aa2400451448d4657dce.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/6201f052d753abc2a69ad0c2193b0021.jpg" + }, + { + "title": "Meme sound 1 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/e707fa24de58599a20208974a6104205.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/b839257eb37854499a4e40d51cbd6aa2.jpg" + }, + { + "title": "Meme sound 1 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/85eeb4bfb625a5925f4c93a981bbcdec.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9bb5966682457978dd2b13141d1c565b.jpg" + }, + { + "title": "Meme sound 1 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/b483172e127951c58db64d47c9446a84.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/881be3402237e08c78e9afd5702ffc0d.jpg" + }, + { + "title": "Meme sound 1 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/cb1a3597611e266d9567e407e89c5805.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/6b569aafac50aa1065d82218effbdd09.jpg" + }, + { + "title": "Meme sound 1 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/f6a2966af445835d771d208c656f75e3.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/4882cb64aa7f02fccaa771bd3132f320.jpg" + }, + { + "title": "Meme sound 1 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/6812b5abf6e98ef65f8b9061baf3a0b3.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/4780f9b372215392caf39459ce3b499f.jpg" + }, + { + "title": "Meme sound 1 14", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/0afec4a83197261ea8c28ecae784b726.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/f30debf012bb78a8f80f81884471cec7.jpg" + }, + { + "title": "Meme sound 1 15", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/86cdd28d82081e0d76c4f6091e830792.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/8c1f4b8d2d50d2720531d5ce10f8feb1.jpg" + }, + { + "title": "Meme sound 1 16", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/3651d0108fcb04f43cbdb3923f773c54.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9f1b1cb0b619a9e2ab06df6109a98d36.jpg" + }, + { + "title": "Meme sound 1 17", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/ad0f4afbbba444f44adca6c8f4ef0b1b.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/c3ef842c2e46738780d099c66764f7e0.jpg" + }, + { + "title": "Meme sound 1 18", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/a1350b1481b1cc8a7e6c9a97c929eb91.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/dcf787322d2f21f06d472ee29f575c42.jpg" + }, + { + "title": "Meme sound 1 19", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/5192333458fb60fe9c5234d2f322f32b.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/42b905a9bc320ae65ae0e8129bd793d0.jpg" + } + ] + }, + { + "categoryId": "636b8e5415831ec42fc7d806", + "categoryName": "Meme sound 2", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/4ce8347fa345ab501c9f3af2f10b2f72.png", + "list": [ + { + "title": "Meme sound 2 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/d3aba7a2f9224139f1b28b72d3afbf61.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/4c9ef927a9222babeb120236f86d8703.jpg" + }, + { + "title": "Meme sound 2 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/371d5e520c35b9d1d85f1422f3107e06.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/22eeccfd81d0c1250e815d1b7cfaeed0.jpg" + }, + { + "title": "Meme sound 2 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/9220b4f67e33bc6d9065f0044a5f7540.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9122797892df0cbc618c8f82951f26e1.jpg" + }, + { + "title": "Meme sound 2 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/00f68bdb9de929d4388975d2bb522e52.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/41039b3970942cb52a11ab1b00b1b82b.jpg" + }, + { + "title": "Meme sound 2 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/43b262159fd2c422679e0b069b19fd02.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9e1031d234f6e41034fac222a1bd736d.jpg" + }, + { + "title": "Meme sound 2 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/e8984bcbb510fb580b743e63f5302f25.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/8f3f247d3761aad7a8ae1258891b015c.jpg" + }, + { + "title": "Meme sound 2 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/da87964537c41e74dd79877fa0477f5a.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/13bcf55c08382797c5e3692f91fb183f.jpg" + }, + { + "title": "Meme sound 2 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/9583852f8b38ff95c31362abd1b971eb.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9b1ba9e18d100d573ec8eb4460537dd6.jpg" + }, + { + "title": "Meme sound 2 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/321cf948ef4521b6d25bb4760c183c73.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/be20800a7b112260564585eb30d4e158.jpg" + }, + { + "title": "Meme sound 2 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/cdefab3966d462745c1734a6b4c8d6bc.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/2a5d76c4c4485fbe8148c4d1d366fd74.jpg" + }, + { + "title": "Meme sound 2 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/4b3c0d029aaf8d89b144dad3282b3919.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/c480137f6e71f38cafcdd03440c69901.jpg" + }, + { + "title": "Meme sound 2 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/f15b37e84d953464b92053417e4ca579.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e9f831f381978012560e046ce68c69d9.jpg" + }, + { + "title": "Meme sound 2 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/cfe4de2e2c7bc52bf4c6abce869c0e21.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/da5173be065c93376a8d51d6de963183.jpg" + }, + { + "title": "Meme sound 2 14", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/f0dfb8bbdcced07296c6245995cb7a76.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e9aa4066c75f80de11ad4df4f80849d5.jpg" + }, + { + "title": "Meme sound 2 15", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/9a36ed578c106c63a5554b4d76429f57.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/211df0d52a525b827d6c188eefbf634a.jpg" + }, + { + "title": "Meme sound 2 16", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/84498bb4dc3030de465e10d280f7e409.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/2e13fe9fee06d9048d1b92f37e392602.jpg" + }, + { + "title": "Meme sound 2 17", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/c38d6a583c7e23f8b054851e4b6fa37e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/3ec03e51b2a71153a7af4a0e2e947e97.jpg" + }, + { + "title": "Meme sound 2 18", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/833b37c1be0d7e45e02df03782045bc4.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0e80619eb10ab775ec48616ab695d597.jpg" + }, + { + "title": "Meme sound 2 19", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/2f5d347f0a8938e727d7b67e604810e9.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/22645a92d965b54f0635924c7dd7a047.jpg" + }, + { + "title": "Meme sound 2 20", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/c3a2d9d4e3ef4ebea19dbfb172176c74.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/8b31f0bf6ca513ab5e90d37ec710aa3b.jpg" + }, + { + "title": "Meme sound 2 21", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/0dc955a722a13654b1f9f4cd0f19fadc.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/4fb6bf4fed2964f6ee424d9e5ad06ade.jpg" + } + ] + }, + { + "categoryId": "636b8e5415831ec42fc7d807", + "categoryName": "Meme sound 3", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/991f4d7e0b8ce3ca9ebc5f9e7f5cf68f.png", + "list": [ + { + "title": "Meme sound 3 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/a927e26b9e9b0f0d734249f42a43ca0e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/000a7d3d6afda260f4f60f8dcc9d3819.jpg" + }, + { + "title": "Meme sound 3 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/2c270e44c922586edb6d2aa4538ed485.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/fcd952d3919aae04fb61f1fd7754c96c.jpg" + }, + { + "title": "Meme sound 3 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/921b2c1bbc72295b480c3191f864c56d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/b17746bbf7adad92b3903361864464e1.jpg" + }, + { + "title": "Meme sound 3 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/4a376e86dfd73ae191757a9ee4e3336f.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/3f08146406c3ec54a260b36d99b70213.jpg" + }, + { + "title": "Meme sound 3 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/c8fc4acb5ed591f485a4c05dbe47d196.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/281cd3eb809510959f769a92cbef14bf.jpg" + }, + { + "title": "Meme sound 3 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/1d09fa4e130a83895110bacf9936bc08.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7a3c9d99c62804210d83a46c2ef483d9.jpg" + }, + { + "title": "Meme sound 3 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/4f1e59550b0740b5121509f0ca14c53b.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/faa047812fea681a7ca99c41eb26af0c.jpg" + }, + { + "title": "Meme sound 3 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/009a7f043aeb65538abb6e0b851161fc.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d65babaa76e14d9936aedf26aad3eb0e.jpg" + }, + { + "title": "Meme sound 3 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/c42f9de360823efa5f282cdaa8dcdfb2.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/6a048ae07699d2b920be0ef461e2cb1f.jpg" + }, + { + "title": "Meme sound 3 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/95fc6616ee24aa28012b08a26f22aa8a.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/bd39e5ae04c6f513d98d7ef7ab5e6fce.jpg" + }, + { + "title": "Meme sound 3 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/14082ceb9f18ced4335183efea0ec8a5.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e2c63eade56ee2d0e1ba41eb151e3114.jpg" + }, + { + "title": "Meme sound 3 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/79b6d68b0964b18b1ffd7a18d62f07c6.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/1a45d50ab697bbbd06d4d5dcee2e676b.jpg" + }, + { + "title": "Meme sound 3 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/763faab8987cb8ed00313ec3e91b705d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/c27dbdd362cdb5e6f892cb3902be7f21.jpg" + }, + { + "title": "Meme sound 3 14", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/956727fb2bfebb355f10c8b9076cf36d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/93731efe64afad808776b97c0aacbf5c.jpg" + }, + { + "title": "Meme sound 3 15", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/66713b1c3d8306d0ff6b3f553b36c56c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/79d5d5fe3ab51fcbda216fd2b16c3caf.jpg" + }, + { + "title": "Meme sound 3 16", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/d78e9acea8e9855870f169b399dd4ad9.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/1ffb2974cfbebc108780ef6c09d114ba.jpg" + }, + { + "title": "Meme sound 3 17", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/69de8ea564a97aedc05ea3de558e21f1.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/060c0d5afba0eb61f48ab6ae3d1cfa94.jpg" + }, + { + "title": "Meme sound 3 18", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/5c6d26321b4885f77dc57071d6e26f00.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/b23b98c3514f214578f6ec5cd810047e.jpg" + }, + { + "title": "Meme sound 3 19", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/adb8153b33811cc86661adfba3b02a36.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/370af28996b90fb6998f0173e8e9d34a.jpg" + }, + { + "title": "Meme sound 3 20", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/9e63caaf95df5b1f01d6b5648c3824af.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7ebeaf99e3cc7df5442227efc7e1453c.jpg" + } + ] + }, + { + "categoryId": "636b8e5415831ec42fc7d808", + "categoryName": "Meme sound 4", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/9050e970de5939d5358be1e58cc139d6.png", + "list": [ + { + "title": "Meme sound 4 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/7a649f4231c33e3afbc1c22474d06048.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/5a47376faeef054e9aa4ea61ce14b427.jpg" + }, + { + "title": "Meme sound 4 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/bee98ad260c5a66823d7a09bd5a423e2.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/bfdda888e4d95a7223c861ffde959898.jpg" + }, + { + "title": "Meme sound 4 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/ee49eb67378e93ec563d1f715dd5ac04.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/72146479be8c97cd6f92589d378f1ff8.jpg" + }, + { + "title": "Meme sound 4 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/6b267b5aa6e0e7e2683509618fc70c8e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/55a85177ed6c1f6797aa53bb56261c46.jpg" + }, + { + "title": "Meme sound 4 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/28e3bb6e134f0c4ed50c79b46dc7d3e8.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/50d1c9bb32c01cf6c4eb4d1718a89555.jpg" + }, + { + "title": "Meme sound 4 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/40922d865af722072a2930634ee3deb4.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/022b3ad8abb7d4f7c9ce7e581f3eae35.jpg" + }, + { + "title": "Meme sound 4 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/5a67630338114fa5e6549add918255d0.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/1d7113c73fde73c318f3056d10194fac.jpg" + }, + { + "title": "Meme sound 4 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/c7a574daa8527fbdefa8711ee432a760.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/6ff4d677150bbade9299359a612bd0a8.jpg" + }, + { + "title": "Meme sound 4 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/062e1014a3ce5f793bdfa6926d366782.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/02da4270d96b090050c6f5d12e7a3b92.jpg" + }, + { + "title": "Meme sound 4 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/97921af860a1b8a4608c93eaf698d7b5.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/bcfeb56c90258f205bb7c138e39e6686.jpg" + }, + { + "title": "Meme sound 4 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/87bc2c2f0549adccfcb7efd60f08d5c3.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/ed9baa1d9e965163768e63dca828b7d8.jpg" + }, + { + "title": "Meme sound 4 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/1fde554f6df05257c47c60c52b152a1d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/70db7c9770c5a6d7f2d4e0997c754baa.jpg" + }, + { + "title": "Meme sound 4 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/eed5df84833eb3fc0f88040e6d935f68.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/3225f4c4434e4df454211d831a38dbe8.jpg" + }, + { + "title": "Meme sound 4 14", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/33ab611bf307198983cb5bad90271f69.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/de2b05ba8d73bd08e8521591ca535610.jpg" + }, + { + "title": "Meme sound 4 15", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/39ebde0e167962507a6cc0a1b2b0a43e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/5f3c1b6225474f24e03b3cbffe09bad9.jpg" + }, + { + "title": "Meme sound 4 16", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/fce825de32f3e45a25c2723bf77886a9.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/25c365d77f0840c49fb062b65bb828c0.jpg" + }, + { + "title": "Meme sound 4 17", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/c7b605aace3b5857014eb16397b73d9c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/a52864c67d2614a08b0a97a618e1959e.jpg" + }, + { + "title": "Meme sound 4 18", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/c874245574d11fd62aa751f40094d8c8.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/36ea58b8c21f4ac9fd9543d3bc5b9e47.jpg" + }, + { + "title": "Meme sound 4 19", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/ec2d800276d384e791916cb70259120d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0e705cd5fa0a17f71d77a8e37ef8647a.jpg" + } + ] + }, + { + "categoryId": "636b8e5415831ec42fc7d809", + "categoryName": "Meme sound 5", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/486bcff3b4204d11d27491f6a0396c32.png", + "list": [ + { + "title": "Meme sound 5 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/df1364d0cca16387a2ff6cca6657ac1f.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/2248bf4fcf37993cc44cb82424db2657.jpg" + }, + { + "title": "Meme sound 5 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/1cc6c524e42d360b6a56cff2480ba91f.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/baae381c25e4ca322741e6ba8364f763.jpg" + }, + { + "title": "Meme sound 5 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/b4816c8aaab1d38e4901a0612e93ed85.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/91ef63792e1798257b419417fff9085b.jpg" + }, + { + "title": "Meme sound 5 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/4c8ec18b28eded15dd8b9cc1835551cc.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/56dda319ca17d121ffe832abaf926722.jpg" + }, + { + "title": "Meme sound 5 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/98e9cb08552c2b37a58b87a9a8fd4016.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/eda73b290e6e36066093ade43f51e866.jpg" + }, + { + "title": "Meme sound 5 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/e5c80db1cd021c350edacce011fa07ae.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/865a57b3178bb2d63871d2b969d02acc.jpg" + }, + { + "title": "Meme sound 5 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/a0a1302a9935730523c12d818d9f5c2c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/aab3694ae673abd0bb796a3be334ecc2.jpg" + }, + { + "title": "Meme sound 5 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/6d80d3382e19a88f7cb2758405aa8ec3.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/6b739bb2fd94ac6191179aebf9517cf7.jpg" + }, + { + "title": "Meme sound 5 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/a37b517544de85a3b46926653c576ddb.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/f3f17c2449cc493230b4ce544edbed84.jpg" + }, + { + "title": "Meme sound 5 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/03b755d19aaf70298b0bde80d76697c0.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/17de2a9f9d2ba2d00b811a73434fc39d.jpg" + }, + { + "title": "Meme sound 5 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/c4b476329f1a068c9079944b95e4902e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/98d5e8f63db98f1031d85d98bad58789.jpg" + }, + { + "title": "Meme sound 5 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/48c266caee8713b9ea8ecd5ae907e7ce.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/22462e07cac52085b88908ea0f52df96.jpg" + }, + { + "title": "Meme sound 5 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/68e04987c9d6146193d50924f32155d1.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/515eabde6f14f99a3836d1d306ca7da4.jpg" + }, + { + "title": "Meme sound 5 14", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/36de922e96ea35e0a7dbeec28582149d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/4cc1f4b1f73d9c733f51e99133f0086d.jpg" + }, + { + "title": "Meme sound 5 15", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/28be734d0308fc1daa7b2b48633a005c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/1dde0416ca1029f97af69f09b8fea308.jpg" + }, + { + "title": "Meme sound 5 16", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/358ad1d838fce93140d2f734ae8e8c39.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7c0ee4c968cd91b0716854cf4ea40afa.jpg" + }, + { + "title": "Meme sound 5 17", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/4b27861df9e9bfa746fd086699a5bdac.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/69a0969d26e493eff313dda5f7596a2c.jpg" + }, + { + "title": "Meme sound 5 18", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/8abd444948560a3c7de7246b6b7775d4.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/5705366bf926b9a4fa853f16356f4f17.jpg" + }, + { + "title": "Meme sound 5 19", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/1f1d09dcb6bfb6920f17bd2a0c154ce8.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9b67bf20689f3c9599f722c0683aa62f.jpg" + }, + { + "title": "Meme sound 5 20", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/0c1f249ae7e908c19b3465cd81d094e3.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/fe89c5bd836852a95636a87730674c4c.jpg" + } + ] + }, + { + "categoryId": "636dc88cf512f266a311768d", + "categoryName": "Meme sound 6", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/e6936b3979a284fc32cfade30c6bf4b7.png", + "list": [ + { + "title": "Meme sound 6 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/329971602548f5fdda85ddfcf4d4750e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0868668e6ac9aac537aa5d748ec59120.jpg" + }, + { + "title": "Meme sound 6 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/0d44d826d2e1aaa96b6bc8b7efbcfec3.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e59535a07a4f3c49864dc7292952a2d0.jpg" + }, + { + "title": "Meme sound 6 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/675d7aa8adfbbd77a3907014a92a0350.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/486fac53d977b93150890e6a412b8e58.jpg" + }, + { + "title": "Meme sound 6 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/bcf2fd56c6bc1e99d7816bbb653afda1.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/695cf4294618c4f44d5a4ed24b962884.jpg" + }, + { + "title": "Meme sound 6 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/f2313c970059bd82560b912e3e796cf3.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e80f216e9be298a7ac73169403b71ee1.jpg" + }, + { + "title": "Meme sound 6 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/f33fab082b968a9f1b7655fac27cccd8.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7aa63ab3392d0e172a6dbc8653e39fad.jpg" + }, + { + "title": "Meme sound 6 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/19b13cbe8aa919b7a659c67112a32677.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/09e3e8716641ba9685e6a2f668ab7392.jpg" + }, + { + "title": "Meme sound 6 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/320da723c98724cbd2e16278655040f6.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/6c2c1bc64c3c3e7c42a8a6531bef4e8b.jpg" + }, + { + "title": "Meme sound 6 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/bd99b8121af03eb7ff7c656c1b17bf82.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/08660c22eb77ab2eed9720bf0f62dbab.jpg" + }, + { + "title": "Meme sound 6 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/d0081e4584ec2544ce12b321b2c76e5a.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0766f75be34db4fe4c365dbcd6484d2d.jpg" + }, + { + "title": "Meme sound 6 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/11bf03ddedc8132b325bacf036587433.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/f494ceb2062cd947a3ee9fee5f7a98c8.jpg" + }, + { + "title": "Meme sound 6 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/b3403a619232ac76a6d7fae3792c6c64.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/caf286fc28088eff04869ffc55ff670e.jpg" + }, + { + "title": "Meme sound 6 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/0509a6574615013c1b1b5e159762ff7a.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/627b28437b4b2580161128213a8ca0c2.jpg" + }, + { + "title": "Meme sound 6 14", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/21db05bf5ecae4ddefd79ca45f571043.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/05b4c395a970af05cfcb12ca7b9e7a39.jpg" + }, + { + "title": "Meme sound 6 15", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/5048c14e0b0fb6fa3d7f8cb3f20fe3a3.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/304a9f457796f1d6efc947b98e239e06.jpg" + }, + { + "title": "Meme sound 6 16", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/14a7721964d399fb1ff14046aaa8a05f.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/24b920a2609777defbccd5a672dbcb42.jpg" + }, + { + "title": "Meme sound 6 17", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/c669a98436b196ee02aa9feec12157a4.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/dc58e5c0f632283ea4c47f2d7d48dcd0.jpg" + }, + { + "title": "Meme sound 6 18", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/c3a78fe4c0cbcd409ad96f544b78eabc.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/465ccef137a5cd239a6203853cc7b84c.jpg" + }, + { + "title": "Meme sound 6 19", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/b0abaf45811bcaf63a2cc72f9eb3bf6f.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9161ad4d1a4f2863ca5b9224d4ea5eac.jpg" + }, + { + "title": "Meme sound 6 20", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/f11e6556bf48d1d24b8ff040020e6f43.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/b9a7ab2203e7a458eb00ae06a5be7090.jpg" + }, + { + "title": "Meme sound 6 21", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/dd972b4b9493dcd5f7670c2ebb8bcdf7.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/58d469e7ea485dd84ea9daa1148002ea.jpg" + }, + { + "title": "Meme sound 6 22", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/b0e4fa13785f91d52a0620196081a13f.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/228c8e61babff3a1cbd9fb9b0223fb13.jpg" + }, + { + "title": "Meme sound 6 23", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/cfda72d5b5f3c130831d75d7e000782e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/2a2217e353c80547fa5155b31758860d.jpg" + }, + { + "title": "Meme sound 6 24", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/b31fc1bfcda231ba0cabbe7aa393e05f.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/02dc8c61d8bcdd4aa5d3c6345e1419c7.jpg" + }, + { + "title": "Meme sound 6 25", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/b470760f4647f924418cbc65790277ae.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/15f0f8521da1aea52878d45b712e6a39.jpg" + }, + { + "title": "Meme sound 6 26", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/5fb1770c6a9d95453dd4055c08c7aee0.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0a7d2e597715db7a9577ac21686c576b.jpg" + }, + { + "title": "Meme sound 6 27", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/a401d8a439641e01380944f5e9479631.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/f313c74f55856f223f46df7081e3599e.jpg" + }, + { + "title": "Meme sound 6 28", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/7b3691ddd8b7003f94dad485575f29c8.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/48975447ad46b8b2df53a8fb47476009.jpg" + }, + { + "title": "Meme sound 6 29", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/41131b267c4cf1e66935d8a89f829380.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/654621faf8e63ef7e10b7064f3d721fb.jpg" + }, + { + "title": "Meme sound 6 30", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/06130956631b9114acc5689507ad13dd.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/8065992bf5d7b1c65ecc3a6439f85c00.jpg" + }, + { + "title": "Meme sound 6 31", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/8d4b16a2bb5c7923b990aad974d366de.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/195afbf628564ea641adb7942bfe3bf6.jpg" + }, + { + "title": "Meme sound 6 32", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/dbda8c77a6ca41482982f5e9e0eadfc8.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/1c0227a8c0449471e9bcba1f69316199.jpg" + }, + { + "title": "Meme sound 6 33", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/7176264d231269074b8b9534f1feb9bb.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/2912730820f802440298c5e5a8162eee.jpg" + }, + { + "title": "Meme sound 6 34", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/672a2686241722ee369fbbaf168af90b.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/a74204ad259b2709176bd5dbb9daccc5.jpg" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd47", + "categoryName": "Anime meme", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/e3b711902ebeab5aa59ba28c0d8239e5.png", + "list": [ + { + "title": "Anime meme 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/a7107c3791c029153b6447df5bbdbf93.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/c072fdee79639ad62037e5ce65293953.png" + }, + { + "title": "Anime meme 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/c44b237dc9bf64e745ebb11f279cfdf8.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/8dcb4de77e8d9647cf238f7b794b8bf1.png" + }, + { + "title": "Anime meme 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/2056dbf4ed3fb5e869ff64325a242570.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/5e189c0b758d1a3d50c1b181976098ba.png" + }, + { + "title": "Anime meme 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/b22b46a0e6c64e42daace075aa58159a.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/a6bbe5e5dfa3aa803463fe640e1149eb.png" + }, + { + "title": "Anime meme 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/5f0e00363737b68c8e6469355fe0887d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/b34bea898b6fa4937a8f76537828d79f.png" + }, + { + "title": "Anime meme 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/ca3fc9fed78a2f4b9c4f1ff4a1b65b1e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/3c1dceb38be61d063008b964f12d158d.png" + }, + { + "title": "Anime meme 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/181ffe52f8e7525b19196dc0eafbc6c0.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/144bf1628d8649f985ff73aa7722b5aa.png" + }, + { + "title": "Anime meme 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/84defddcf3327f93c63f142e7ab37908.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/6caa05b728c8a180cbcf5a1086761d24.png" + }, + { + "title": "Anime meme 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/065c97cdfa10eca952c862c561477e74.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/dba1d239bc0dda7d1d52d6537ba2b7b7.png" + }, + { + "title": "Anime meme 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/b2f1a1f221a0ffa1986ef5ea109f3bd1.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d0cefe5b4b205290c1958e5550f88075.png" + }, + { + "title": "Anime meme 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/388a0f22fcab6261338b897a67cf18db.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/f5cf1d7bce8c0ab1243a94e6004054c9.png" + }, + { + "title": "Anime meme 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/342ac706dd55e3d12fd56cda4f9a7d1a.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/95c662aac956e395f1bdcdc0e0bbdf26.png" + }, + { + "title": "Anime meme 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/0aeafdd0a4f706c5fb3f36f659ad1601.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d501f4d7bde34fbcaedb06520d876963.png" + }, + { + "title": "Anime meme 14", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/6f90dd5e43fb8d486830a97914d485db.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/65fe1c01b27186bd437633529baf5ee1.png" + }, + { + "title": "Anime meme 15", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/a0a4d785b7b1f3f30dc7bad4625e9b19.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e8dbec69a3906d4afcdd2e094a641e38.png" + }, + { + "title": "Anime meme 16", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/5f057a0ef2f0d38436b17e6c0886e668.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/85c3f3ea2c28848336409c979be0fa64.png" + }, + { + "title": "Anime meme 17", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/e06141603a431b19d9ae9af19badac64.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/56097d4a5ac7cd104d8c0d396db60c9c.png" + }, + { + "title": "Anime meme 18", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/114001c35080918434c4b982555d12f5.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/91cc168e4b2769ed530aa937be13378b.png" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd48", + "categoryName": "Baby sound meme", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/93355cc4b4d2108513e764041fd27720.png", + "list": [ + { + "title": "Baby sound meme 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/e36478882b2f5f493bd022dee19ad875.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/f6e065c0eb1b6c0fe2fb6b831ec3e5f4.png" + }, + { + "title": "Baby sound meme 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/166853db0ac561ffd0c83f3a0cb5e1bb.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7e570711d2b6f07eda4d0b172e74aa68.png" + }, + { + "title": "Baby sound meme 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/33af250f30a986ed24e2b498501d4883.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/30787227f36d39eebc9b378dd71293da.png" + }, + { + "title": "Baby sound meme 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/697b6b673325d605cabdfc4521054f9b.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/21f3ea470ef348105b659a9992068384.png" + }, + { + "title": "Baby sound meme 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/d2e35dd452300450e4fe23453ae46360.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/44b211bd5bc16d7fdf600073a8dc230b.png" + }, + { + "title": "Baby sound meme 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/8f090358f50150868b8ede696772b5cd.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/eae2a4c827d909ea990ef6cd158e6410.png" + }, + { + "title": "Baby sound meme 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/25394f67ceee104fa2b13d570267f45a.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/554bdf27d13f4eca3564f02b841b761e.png" + }, + { + "title": "Baby sound meme 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/f726856f62556cc81b8c3f9ee43d8780.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/3a5752af101611459c3a51d3a9a9415b.png" + }, + { + "title": "Baby sound meme 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/2ec44494b7a2d8ff15b62010a5aac06b.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/a7075742a438707148e63ae7da75a651.png" + }, + { + "title": "Baby sound meme 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/8a359a498f9e84e684d77e7c2b02408b.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/27c27d9a3884d7291eac041785b0fd78.png" + }, + { + "title": "Baby sound meme 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/b03bfb5804c059ae4c94e77be89f689d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9d6751d2636b4dba11653cb40ae05a7f.png" + }, + { + "title": "Baby sound meme 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/9eb404ffe973397aa6eb2aff3b2f961e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/88318f061c212d09dc6ed1ae013cbab6.png" + }, + { + "title": "Baby sound meme 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/d5601befe1763009a9397315f616a6f6.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/b927e628c418ef942ac79fa1e3a915a0.png" + }, + { + "title": "Baby sound meme 14", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/d8649253668666bf2cca47187131e3df.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/29cdb07c669929fe22a32f56c5d5a5f2.png" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd49", + "categoryName": "Laughing meme", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/423099070cc5c92aaec95c5d7c090307.png", + "list": [ + { + "title": "Laughing meme 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/b4cb447b860354cec570325a11f71a8d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/01536a53628daacf6062406e99e31fbc.png" + }, + { + "title": "Laughing meme 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/0c2431340568d80e58aba6a07c41425f.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7936b296c7f9c7e76ca6d9e2e8c5af28.png" + }, + { + "title": "Laughing meme 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/92c8b2e7b99aaf7ee7c0e3f0948cd83b.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/3f34fb2705784bbd15253d6cc5ed8df0.png" + }, + { + "title": "Laughing meme 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/4c02f87b34ea2d082c1993a678d64d55.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/35baba3942bf6801f9ee7a7b753910d4.png" + }, + { + "title": "Laughing meme 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/6691d33ad9c4f61805c12f2fff1ca912.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9edc9040260b40e4a56e702fadb0b8b5.png" + }, + { + "title": "Laughing meme 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/1c7c99b1a63fb03a4ca4b68329ee814a.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/bcb252e4c0518a4f65ccc83daea498d1.png" + }, + { + "title": "Laughing meme 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/23c8a8ba802b6e66f4141d2fcaf53d0d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/05cbb8d81900840e62789a617795942f.png" + }, + { + "title": "Laughing meme 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/5474a770d53fba645d462e4377ea87c8.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/dad70f170d826bb985905dafa70a9291.png" + }, + { + "title": "Laughing meme 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/f94aba6f1c0c8d93c2f6b1d928b27e12.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d94b52a7f791c078e2fad9abd0271e0b.png" + }, + { + "title": "Laughing meme 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/0807dda5995ecb102c45622a45501cce.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/70c9bd2a1cec4ec53f10679f992edc86.png" + }, + { + "title": "Laughing meme 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/0a7eaf35fa6aaaf62aa3f128fab8f04f.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/c227353b580998e4681d094d3dec78c6.png" + }, + { + "title": "Laughing meme 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/9d2ea6b802b104c5fe2868c257cbfe31.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/b551c5055a4efe19ecf521afeb953c6f.png" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd50", + "categoryName": "Video effect", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/f30322429a15f99fafac651af6601a1e.png", + "list": [ + { + "title": "Video effect 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/be127a651be21c9d9543551427930e65.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/fb11cf86c9b4317187b2f8d20e813a52.png" + }, + { + "title": "Video effect 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/3fbba72e271c7e245f95be440ae89502.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/affec1cd3b1acf3534f2b1dd54b6e11f.png" + }, + { + "title": "Video effect 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/b1ce43dedf92ecf79663f064198d05c8.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e4efb19584a4c6df9292df3d171d96ed.png" + }, + { + "title": "Video effect 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/65003244adcad85bc4f866435208d856.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/55dfa8097e3554f3ff921d4bae1c6360.png" + }, + { + "title": "Video effect 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/242ebe659af90fbb24b35a3de82c86d6.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/ae2cfb2a5f2c291e5adc3ec1a6b86fd3.png" + }, + { + "title": "Video effect 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/cb8152a74bb4571725157bf40c8be677.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/776aace8ed0f04dd9957a6f3edd83925.png" + }, + { + "title": "Video effect 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/cbdc15cf69a945d0598dd8ac78325c5f.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/5f490886e570a860b89dfd7e26e4b7bc.png" + }, + { + "title": "Video effect 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/380b993ecadff751c64a0fb622de439a.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d3f15a89bfcfa46acdad754ca8b2d736.png" + }, + { + "title": "Video effect 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/f76c37498bb9fca60563d8b2a67653c6.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/be0edab4d77cb56d90db71b7a7d7fec8.png" + }, + { + "title": "Video effect 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/bc09237302c352a08446a7cb194d076d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/f033ac2536cf4a0a341e2c00029afec6.png" + }, + { + "title": "Video effect 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/a5f431d51547344c66ccdae1eebad93f.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e5bb75fff945bac8b3c4070b831fb8bd.png" + }, + { + "title": "Video effect 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/789cdce4f59c71ef84c32cac4896f00e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/82295cecfe039e891067bba2b9012fe3.png" + }, + { + "title": "Video effect 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/fd865eaaaa48796b89e054b112be0774.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/66c604a7978a5390701e1aaadf5b26a7.png" + }, + { + "title": "Video effect 14", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/ae1f54af64ee5cc1e145b3096604b7b4.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/566156ee20f5dd4825eee2b29ebef57c.png" + }, + { + "title": "Video effect 15", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/382871ca218f1384a012850e610bd0f5.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d982297cd7148a9a8201a7e5db52e2dd.png" + }, + { + "title": "Video effect 16", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/7e22a15803c6c18ba1020fb7a12c2ac9.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/176f813f19d83391cc3a94714b3c33e3.png" + }, + { + "title": "Video effect 17", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/f3e9cec93ce50e08a61324017e53474b.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/cb6fb89351ea96dad75fe012977e9a8d.png" + }, + { + "title": "Video effect 18", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/e49c5b23079f42061fc13bc0ec2d96c2.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/609557bbd566aaee85787039d827a8e6.png" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd40", + "categoryName": "Church Bell", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/2b0b47180f68099bd4e3f20f2738a553.png", + "list": [ + { + "title": "Church Bell 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/264749515174f71fc385edc3c58f6dc6.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/bd3dbeb14c909851c9d55a0522ffeb02.png" + }, + { + "title": "Church Bell 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/43663417104a737de0ad75058b3d7dd7.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/00d1bf22be137338977a68288c1e39e3.png" + }, + { + "title": "Church Bell 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/9905c68f7a6fac7d90d5075d12462f59.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/f16b1bcf9bb12fc1773d7574d6e19198.png" + }, + { + "title": "Church Bell 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/8be3c1a2dbd6ba2b8baa1ea3cdf48590.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/6b2aa96e01e20f0fbfd9d3ad4b1d48da.png" + }, + { + "title": "Church Bell 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/4b2cac435ff33013e4a8c6bb5be6408c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d7da9541816f730c7cbd5173e81072a4.png" + }, + { + "title": "Church Bell 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/debe07c42709ac424a015405ab9876c0.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/66aaded545b6bee1925c9736c7533ed4.png" + }, + { + "title": "Church Bell 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/849a9ab93006b3a6fbd462a38deca497.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/bf37e5bb7c3c17e6814082204cbe49a2.png" + }, + { + "title": "Church Bell 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/4e4459bd7dc3e50e4fcbd256a49f9e7d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/85d18158e371a44acffd83307945accc.png" + }, + { + "title": "Church Bell 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/57480a9f7da1e52f9aefe12dab66578e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/25a96e9ee7e5e2c1969caf290a7091df.png" + }, + { + "title": "Church Bell 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/6176ef1954a68a705732987d08895bbc.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/09dad424c8103bb12dd2027ff035efb0.png" + }, + { + "title": "Church Bell 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/362939d0d5d7139a5c64b1cf6c52016a.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/cb702949346a19dbc4af662a21cd9dc5.png" + }, + { + "title": "Church Bell 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/21dff1513a841b9761bc972e4bdd45af.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/631574c422eae411794dfc0963fdb7d5.png" + }, + { + "title": "Church Bell 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/0e83c42bd8d0e7c22dc35db0f6a4a13e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d8bf12721c58819f5429ec3a68f3cc21.png" + }, + { + "title": "Church Bell 14", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/6cfb5ecbb898054a1964aedb6894d926.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/1ff22218aebe79a5294a8e86215062f7.png" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd44", + "categoryName": "Santa Claus", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/7c198c1a650d403d78f82665c68b6c10.png", + "list": [ + { + "title": "Santa Claus 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/a5ac14d6e05101031dc318c8a6510eef.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/c941a30c44283cdd239713c7c7819acd.png" + }, + { + "title": "Santa Claus 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/1fafc74f32876dc1614fce79a06b6227.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/c80f15e3f2645b51bdd6f363a32d8057.png" + }, + { + "title": "Santa Claus 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/8c4b28e516d7fb8fef5284736f30a27c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/50b68f3447c91199dab40da541b12f65.png" + }, + { + "title": "Santa Claus 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/089d559947b2d8d7f79d6a462718438f.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/7de8c9070ec88ea72aca544da1486627.png" + }, + { + "title": "Santa Claus 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/0749b4d8f6a096363212509145aa1365.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/13013f0ad0780f8651127ffca1a79782.png" + }, + { + "title": "Santa Claus 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/3656d1b69dae381e84a96d293a4610e9.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/b86ead087e20150f157842c2d4beeff7.png" + }, + { + "title": "Santa Claus 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/d2cc9a8e630b6672135758a07747c13d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/277d6a534252ab8909a53b1a34e33f78.png" + }, + { + "title": "Santa Claus 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/570176aa8386fc19c9c243328a84c6c7.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/08f5c7bcba2efbb40cc091b8edcb34bf.png" + }, + { + "title": "Santa Claus 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/51e64a813a3ecb0d08fa357fd72d3cd0.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/c815cafe919817b44d5d8f7385b9f415.png" + }, + { + "title": "Santa Claus 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/859126da23c7844d7b438ee3afb91186.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/92b87df10bb97a531f5e2923050556c4.png" + }, + { + "title": "Santa Claus 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/b2515f57a6e182491b361070b7d3b42f.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/f71619e0ecc447bca17360489536de86.png" + }, + { + "title": "Santa Claus 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/a077b2859ade85edbeb83d73338f9c95.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/4aade06620b4a99f7d4d22acbff83a22.png" + }, + { + "title": "Santa Claus 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/517437e69a1093e1ff1506a992080eef.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/6caa8e7faed1fd1d2c6bbe4ffcf853e2.png" + }, + { + "title": "Santa Claus 14", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/135a1932ccb6f7379fcb7cd6c7dffa21.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/710d6339285349d25493ded05b76d12c.png" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd45", + "categoryName": "Sleigh bell", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/d88b456a3b22b9c1c568607f8446f92d.png", + "list": [ + { + "title": "Sleigh bell 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/7894de3f5eccca96cda8b9255f6f1284.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/f78569ffd9ec0812a33103abbe0ec93c.png" + }, + { + "title": "Sleigh bell 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/e40d7d4c5f3891aba402689eeab08445.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/507c32b9188a8909fa910fcad9133089.png" + }, + { + "title": "Sleigh bell 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/87ed63890b10af8775a76076e7b19d9c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/a296dde79632a1dc8bad83a2e6aca98d.png" + }, + { + "title": "Sleigh bell 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/e7a8528fb0de921f38904173ce0d1d61.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/b3ff51059a4eafc54b2e761e0aa077a9.png" + }, + { + "title": "Sleigh bell 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/ac108c0a6c73082a2d42c51758e6f1cc.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/dde2f61f991629cbddbc977f7e6a11c1.png" + }, + { + "title": "Sleigh bell 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/c257e4f7dcb608cf75849eaf247554a0.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/1728c24ae7e0604a605c620f95870811.png" + }, + { + "title": "Sleigh bell 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/29fc63f28f1daa7968201df1d024e3b1.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/6c43ff94d54dac047efe5c6e9bd863a5.png" + }, + { + "title": "Sleigh bell 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/30154567abca5c12f08b1b330aaf572b.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d665b973d66ed85d8bcfc3b031b37974.png" + }, + { + "title": "Sleigh bell 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/cb8988e737058bdb81bc353ccbba9f47.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/44aba68f3f5a036addb2708702321cc2.png" + }, + { + "title": "Sleigh bell 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/a84b0cde9abf9afd7e597cf1986d76f9.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/a119c0a9c5269ae468070c899f242174.png" + }, + { + "title": "Sleigh bell 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/6dfaf2616c187903846f11dedc4cf722.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/05fcf016f07f7705aa43bc8b7d0196ae.png" + }, + { + "title": "Sleigh bell 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/85286cfb5ca935b92d4d2f6f680b75ca.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/c3eb47e98691046d9dc6db9934dac8a6.png" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd46", + "categoryName": "Snowball", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/4357eecea1bf97ef0c4a6d102e514c69.png", + "list": [ + { + "title": "Snowball 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/257ea03978ff0d42528d4cb90b53467e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/2c0b15565a008434a5447e09a47d2567.png" + }, + { + "title": "Snowball 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/238fdb50ee43a3dc3c7ac95c5087430c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/91d6ecd77e0ea8f9c8c335c2c277684f.png" + }, + { + "title": "Snowball 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/d5c047482bce95371040035fe99dccca.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/c45b18100dc839e39e71dd2a6682b4f4.png" + }, + { + "title": "Snowball 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/1895f3daf04e0febc26ff38e65c14aa7.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/540ec445b80f705e46b9b02a12f9a801.png" + }, + { + "title": "Snowball 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/163b7f2180088a2255cb6663a4be4cd0.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/bf230f005639a1a5cb33b4afaf50dda4.png" + }, + { + "title": "Snowball 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/50be9d65066fabbdf40ebe4d5844cfd9.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/48cc4f70fe792066a67ccbd22dbfe720.png" + }, + { + "title": "Snowball 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/c154c0b0157a69a6e7913ba864af8ab8.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e87f1a6070d8e742f9c2a963404c1981.png" + }, + { + "title": "Snowball 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/16888d40f4c780d5a73da80101b3a79a.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/c4df7d18244ab87a5f13d2db77f07785.png" + }, + { + "title": "Snowball 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/aa943a901c024b3648a9adaaf253266f.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/1fea260fa35939869c5063ec19e3915e.png" + }, + { + "title": "Snowball 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/88260c0a5d921f3b600d9dbb7e5d6624.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/19adc05bfcc6675fda6f9208eced3554.png" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd41", + "categoryName": "Countdown", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/642d3042f0e7ae829988ee296750471a.png", + "list": [ + { + "title": "Countdown 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/8e96c19766b1caf938430a8e52669166.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9f958c3d3b9860146e686764ac8753bf.png" + }, + { + "title": "Countdown 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/a34b3921bba77d4f73e04be79d943f5c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/ea9c7eb239739a3062364a1d165f7e9a.png" + }, + { + "title": "Countdown 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/648afb631b170c87b26e01a994455755.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/f350711bd7c0f4baafaf5e7fdaab9d15.png" + }, + { + "title": "Countdown 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/bfba411ca5c2bb25be7a2f45dc6560c9.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0186fc0e9badd77dc78db70ee05c3d25.png" + }, + { + "title": "Countdown 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/f32b6e6ee555ad5c6d29de13aa8062e1.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/66609a323dbb9b10968349ff4991d14e.png" + }, + { + "title": "Countdown 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/bfdb88d6fddd25d7bbcb3ea2a8a8f93d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0bf572557b5c37bb2663e1e1ea3d7460.png" + }, + { + "title": "Countdown 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/74307f33d3a9132eab490aa5fe245b58.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/18169f46046cb22f46df892f1b477833.png" + }, + { + "title": "Countdown 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/d1c880a46262ca737f937d1bd0c44b0d.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/4cacbebf5bbd02920e3fa2d65362602b.png" + }, + { + "title": "Countdown 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/1b1661b9a9b7dc08a06d3005edd9a8f6.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e8ba21dcacea89733e6b6beb5118d4d9.png" + }, + { + "title": "Countdown 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/ed6c479005e741530a98285e4dd52f25.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/1cd88a6ee029f88c9474ae47bd5ab121.png" + }, + { + "title": "Countdown 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/b155ee94a60c1c02e1423055b2f8868c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/af040a95410239510ef6625203a3d2fc.png" + }, + { + "title": "Countdown 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/be45cfdcfeb775190645512f8b70cd91.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/ec33ecf4b90fffedabeeb14ab677f3cf.png" + }, + { + "title": "Countdown 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/38a8289a4ff2e85f3ce6ddce251290ae.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/1fdee0d8661cf9db1e6a16158e1e1852.png" + }, + { + "title": "Countdown 14", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/e37a733ed877f58b5eecf80a9215aadb.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d6e289cbfa828447f45c10a3740c3b41.png" + }, + { + "title": "Countdown 15", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/a30c962da761aeca851a464cc9303ef1.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/258a9bc9932fa59771faec37ace6a33f.png" + }, + { + "title": "Countdown 16", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/a9ea0774cd8c96b392a17258a2bbf705.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/a7cab5fb8188a2b8fd64d9bf59657d31.png" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd42", + "categoryName": "Cuckoo Clock", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/775a7b80f8844b2a2e5a90f2602fd38d.png", + "list": [ + { + "title": "Cuckoo Clock 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/2d72953021e40478613543328c3648c3.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/a4997b34c82a13cf22489b7aaa0933ce.png" + }, + { + "title": "Cuckoo Clock 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/e9cb9ee25a3516b755fb47f887366b11.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d7ceda54d1692aae5e25ef66443c1818.png" + }, + { + "title": "Cuckoo Clock 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/d595ccd6c056e78b1eaee3b9019c890f.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/5c1e5ee795a2ee958e09447ecf6b8c6e.png" + }, + { + "title": "Cuckoo Clock 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/10995e06b7d24db64d3aba867ffaba2e.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/c6023c9fe9af4392fa513fe2708784f5.png" + }, + { + "title": "Cuckoo Clock 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/99fd437069f69508827b2dd41ba8dec0.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/fa25c9faa262645d4d850a10470a0afa.png" + }, + { + "title": "Cuckoo Clock 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/fbb86e27c1416edbc7a1226e4ab2268b.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/c8ca42c2854fcad0a70bdb9e2237a8b7.png" + }, + { + "title": "Cuckoo Clock 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/147922945f4fa1cdb66c32abd83edf18.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/49f1f56e8d3e8e7897fc687e664c1bf7.png" + }, + { + "title": "Cuckoo Clock 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/f741ff8869dd5e7ec39e5ad0b49c4ef7.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/f9793aa7a75f9f434b4259ef5a4712f0.png" + }, + { + "title": "Cuckoo Clock 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/150335b877eb085d49b4a7b1a9ecadde.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9702bb79ea0e23a0b15a9e1dc9db0600.png" + }, + { + "title": "Cuckoo Clock 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/1909035da699032a078fc26c6b67a9c3.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e9cfc34fc92a17f31972ee70f21d995b.png" + }, + { + "title": "Cuckoo Clock 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/fd6f7a636fc65371decc3264aefa5879.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/ae3c8718eae870a97b7c51ab656a83b9.png" + }, + { + "title": "Cuckoo Clock 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/c4c297c6360a20c88c868294948491a3.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/5645e427f83984febc9a2fd28339e7ea.png" + }, + { + "title": "Cuckoo Clock 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/b7fa02d14bf1eb70f41c70cd735577a7.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/197e7e101cae3c78e15b57425beadda8.png" + }, + { + "title": "Cuckoo Clock 14", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/38c67d23b9fff4afd8e8af826185ce62.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/518ca81123ae1db5f5ffc8720c99f403.png" + }, + { + "title": "Cuckoo Clock 15", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/c13c7b3a9a157213eb19dfea09a5e215.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/aacf5c3db406eb6a41ff620c614adfdb.png" + }, + { + "title": "Cuckoo Clock 16", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/357ebc6e99afbb7edb2b0b6abf28aec0.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9b82da41fedb4b98dd4c779264f283c4.png" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd43", + "categoryName": "Fireworks", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/f01dfac6dd9c7745ab80f274edaf7d34.png", + "list": [ + { + "title": "Fireworks 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/07bcb57943a460ff2a0b04eb093b0f3c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/b3943f642ac8b72992ffcf2b88bc6b7c.png" + }, + { + "title": "Fireworks 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/b4bf8204e68f6b48377e6dcaf409bb72.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/8f416e70b65f2138b67d677fb4fa615f.png" + }, + { + "title": "Fireworks 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/5c8cebcedd1c6ed92a42e8c9135be2fe.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/eb900055ce55cbbcdade84d7fc130a09.png" + }, + { + "title": "Fireworks 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/24b2a5b37cb8136b59880f627498c848.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/8959fe87989b632fc85b8d1670a54814.png" + }, + { + "title": "Fireworks 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/071ae6eacc2497bfdb87e6960255e618.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e63ac1c1ff794746fbc8c4078be1c910.png" + }, + { + "title": "Fireworks 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/5a224b247ea78a0834dff359203f6802.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/6ff3515f2df9c687c14ee550a88aaacc.png" + }, + { + "title": "Fireworks 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/e18a5052b273aad4a24baebacdb286e0.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/f698e862d47dac00773f66006c925b9f.png" + }, + { + "title": "Fireworks 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/44944e44f9a3c1fe1995174054b688eb.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9a80eb9887a449f5ac1816bec6dcd86d.png" + }, + { + "title": "Fireworks 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/1e42b4d2061e93f0afda40089fa5fdca.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/3702ce81c81d4a7c3c7add0b32bae7f2.png" + }, + { + "title": "Fireworks 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/7c182881bba27610cdad7273559c4aae.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/77c476c59a372832171e0392883e4073.png" + }, + { + "title": "Fireworks 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/1fbb65c58fe5373133445f41d7a22c27.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/dfe6a09c757abe7c61feaddcc70bdd42.png" + }, + { + "title": "Fireworks 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/c4d4e05d5b361119350487b0be3247c2.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/4a5504bfc38f9aa7f9e48526fd569df4.png" + }, + { + "title": "Fireworks 14", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/9fec8e8f803ccc8ae2d142d759ac6968.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/bb64c6f4b11f53feafe12503da099c04.png" + } + ] + }, + { + "categoryId": "636dc40571a30811c821fd39", + "categoryName": "Champagne", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/23948c0777b58ea43ae231c3adb830c6.png", + "list": [ + { + "title": "Champagne 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/e1cbcd284222ce6099da03810cc1c6b0.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/0cab054498349416ba07520ddb5d6ca8.png" + }, + { + "title": "Champagne 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/01082a26035998ab2a833d775e48af71.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/f27a32a5a84b4d7bbdee2735bb54ab8b.png" + }, + { + "title": "Champagne 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/3866cb7d6614d2139e78a19b234d7b14.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/8597fa7bce4191a8c3282b67632cae44.png" + }, + { + "title": "Champagne 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/c26a6128efc5c4187fbd81e1acf0ab08.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/ae7b094815cd0b714a97c56e0e5c4dad.png" + }, + { + "title": "Champagne 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/5657320f06928bc20961043becc95e18.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/3c59aebc7c52aa99d8814411c8c7cc68.png" + }, + { + "title": "Champagne 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/ff80172109053f601b406d552178c3ff.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e689358c959b4cd68310070d0bfc5ec5.png" + }, + { + "title": "Champagne 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/cc8338bc8f1a6b5d20f92c59f7a26bb0.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/96aaa4ce44bf3ad7b73a606f1f9e19ad.png" + }, + { + "title": "Champagne 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/bebfc0f8702a4dd30d78a7907af7b93a.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/579a09d3b30518b86f7dd67f0cbc05c0.png" + }, + { + "title": "Champagne 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/02cfaa37687cd6d759aed04a03028742.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9d8514f45a8e8ca845fbb16704cfb436.png" + }, + { + "title": "Champagne 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/100eb5628b04d4689843daa8d966ff60.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/400b4f4877f7216d549ec90ee137665b.png" + }, + { + "title": "Champagne 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/bbd5249f29ac098a21617918683c03cf.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/65a46b2626b4f28244ac3c654c89abb7.png" + }, + { + "title": "Champagne 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/5518b7be45e8566d65ce10848b919284.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/931633fcd7fc1d817a4dd0f9d1873f1b.png" + }, + { + "title": "Champagne 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/7ef9b5fa25e5254a8fd8920f35255457.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/87b431000db60cb3c6aeeed1bb5487d8.png" + }, + { + "title": "Champagne 14", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/baad4340a6c42843d12556996100f05c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/fe2daef6052258c1b95d45aa649235d9.png" + }, + { + "title": "Champagne 15", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/89140a8c836648822b52ccd22de8df75.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/10b245d728e59cdf88b73dbb35997bc7.png" + }, + { + "title": "Champagne 16", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/c0a788938294d31469f1e929960f5abd.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/814007103cf43c6a1034f2ff72415659.png" + } + ] + }, + { + "categoryId": "634e0d283a35295ff1e9d782", + "categoryName": "Halloween", + "categoryUrl": "https://resource-sg-public.lux-ad.com/prank/346541dfd63bb11359fecb4913bbbf13.png", + "list": [ + { + "title": "Halloween 1", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/addaa62eb812fc77b8c9c62f4a10c87c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/5eab6b3a9c261f0248c63b3b96dcd7f4.png" + }, + { + "title": "Halloween 2", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/8dd4ab99f8fa228c05ddd8c36a1fb8ed.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/10de3be681254f26de6351c2ed683ea9.png" + }, + { + "title": "Halloween 3", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/54f1373123ee2d3c6eafcfd0ee1534fb.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/6a500627588ec7c8133cd2e8737a29ef.png" + }, + { + "title": "Halloween 4", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/d9639d6b964952898e925057737f179b.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/80c18bc4d370f912d4ba7e99ac389df7.png" + }, + { + "title": "Halloween 5", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/d1fb6ceaa60e105425a016d809f72fcc.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/e3a9a9aed7c1391218e743a61bee052a.png" + }, + { + "title": "Halloween 6", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/bcbc8fbaf653b3f8388ff25211015a18.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/5ac0c7f0469c99417fd12ae7e3fa07af.png" + }, + { + "title": "Halloween 7", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/2adbaf76aad03b5b59e338e7c547e65c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/df60f70ad97c86c77c828605dc106555.png" + }, + { + "title": "Halloween 8", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/8885f6857e6e3aebc8cc0b9aedbe2e88.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/82153ac03f55b18e9d3a57650b86702d.png" + }, + { + "title": "Halloween 9", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/5548a044a4b88dde27d7edbe0fd45a28.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/d430f6bdf723e5c7dfe50f4567aefb88.png" + }, + { + "title": "Halloween 10", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/99a1127659c975822d7f0eff052c54b8.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/2b96582702253e5d88230621d9806ffd.png" + }, + { + "title": "Halloween 11", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/b1f2bd4a4bab0c825367680b8f14580c.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/22eea4ddc2396a8459f8a82cc2fa41a7.png" + }, + { + "title": "Halloween 12", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/00b800fbf34a148d2906aa01306e632f.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/02abab22836fea046ee1b121843aa1c4.png" + }, + { + "title": "Halloween 13", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/407c2a04c6ba9eabffb2d48812676075.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/000d1d7c0026ddb269192cc8a3ed8a36.png" + }, + { + "title": "Halloween 14", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/c0545680e4d81d2040f8ab5be1036221.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/c4d236b50c018013b856d0d6f813f431.png" + }, + { + "title": "Halloween 15", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/40901854f4cf27e3f95e1c5e681d4e94.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/cfc812c4fa5879dc044dbf57848ec829.png" + }, + { + "title": "Halloween 16", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/6acca311c1d0e69f0243a60ee966c763.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/9733f998ea9d592c09cf23dbc9da4218.png" + }, + { + "title": "Halloween 17", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/09f13252d1db5a6b5294527c275fc9a7.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/32d4680f4d064475e6ca4424829d9fd6.png" + }, + { + "title": "Halloween 18", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/9b80fc87cab236dccfdeaabe4770eb50.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/92ab558d70e01ff40d3b12ff27acc6b1.png" + }, + { + "title": "Halloween 19", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/f3dfe8797d1a13a88f9544d3fdc54425.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/300e9423f50ff7b81b7de33d847733d6.png" + }, + { + "title": "Halloween 20", + "mp3Url": "https://resource-sg-public.lux-ad.com/prank/44b966562ddc9d0a5ed2604bf8eac39a.mp3", + "preUrl": "https://resource-sg-public.lux-ad.com/prank/8e3f389ba05c4785961e9abd8a6809bf.png" + } + ] + } +] diff --git a/Funny_sounds/Tool/tyepeCollectionViewFlowLayout.swift b/Funny_sounds/Tool/tyepeCollectionViewFlowLayout.swift new file mode 100644 index 0000000..377e7b5 --- /dev/null +++ b/Funny_sounds/Tool/tyepeCollectionViewFlowLayout.swift @@ -0,0 +1,39 @@ +// +// tyepeCollectionViewFlowLayout.swift +// Funny_sounds +// +// Created by 忆海16 on 2024/8/15. +// + +import Foundation +import UIKit +class tyepeCollectionViewFlowLayout: UICollectionViewFlowLayout { + override func prepare() { + super.prepare() + + guard let collectionView = collectionView else { return } + + let itemWidth = (collectionView.bounds.width - minimumInteritemSpacing * 4) / 3 + + itemSize = CGSize(width: itemWidth, height: 140) // 设置每个单元格的大小 + minimumLineSpacing = 5 // 设置行间距 + minimumInteritemSpacing = 5 // 设置列间距 + sectionInset = UIEdgeInsets(top: 0, left: 5, bottom: 0, right: 5) + } +} + + +class collectCollectionViewFlowLayout: UICollectionViewFlowLayout { + override func prepare() { + super.prepare() + + guard let collectionView = collectionView else { return } + + let itemWidth = (collectionView.bounds.width - minimumInteritemSpacing * 4) / 3 + + itemSize = CGSize(width: itemWidth, height: 148) // 设置每个单元格的大小 + minimumLineSpacing = 5 // 设置行间距 + minimumInteritemSpacing = 5 // 设置列间距 + sectionInset = UIEdgeInsets(top: 0, left: 5, bottom: 0, right: 5) + } +} diff --git a/Funny_sounds/ViewController.swift b/Funny_sounds/ViewController.swift new file mode 100644 index 0000000..faed612 --- /dev/null +++ b/Funny_sounds/ViewController.swift @@ -0,0 +1,19 @@ +// +// ViewController.swift +// Funny_sounds +// +// Created by 忆海16 on 2024/8/14. +// + +import UIKit + +class ViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + } + + +} + diff --git a/Podfile b/Podfile new file mode 100644 index 0000000..aa21efd --- /dev/null +++ b/Podfile @@ -0,0 +1,21 @@ +# Uncomment the next line to define a global platform for your project +# platform :ios, '9.0' + +target 'Funny_sounds' do + # Comment the next line if you don't want to use dynamic frameworks + use_frameworks! + + # Pods for Funny_sounds + pod 'SnapKit' + pod 'IQKeyboardManagerSwift' + pod 'BRPickerView' + pod 'Alamofire' + pod 'FSPagerView' + pod 'SVProgressHUD' + pod 'JXSegmentedView' + pod 'GYSide' + pod 'MJExtension' + pod 'MJRefresh' + pod 'SDWebImage' + +end