TSDiscoverViewModel+Data.swift 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651
  1. //
  2. // TSDiscoverViewModel+Data.swift
  3. // AIEmoji
  4. //
  5. // Created by 100Years on 2025/7/17.
  6. //
  7. // MARK: 组装数据
  8. let kTSDiscoverVM = TSDiscoverViewModel.shared
  9. class TSDiscoverViewModel {
  10. static let shared: TSDiscoverViewModel = TSDiscoverViewModel()
  11. lazy var bannerItems: [TSDiscoverItemModel] = {
  12. [
  13. TSDiscoverItemModel(style: .videoV2,
  14. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Animal Diving Show.mp4"]),
  15. generateModel: TSGenerateModel(json: video_AnimalDivingShow)),
  16. TSDiscoverItemModel(style: .videoV2,
  17. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Oscar Gala.mp4"]),
  18. generateModel: TSGenerateModel(json: video_OscarGala)),
  19. TSDiscoverItemModel(style: .ptp,
  20. viewModel: TSDiscoverBaseItemVM(title: "", imageNamed: "discover_0_AnimeBanner"),
  21. generateModel: TSGenerateModel(json: ptp_Anime)),
  22. ]
  23. }()
  24. lazy var bannerSection: TSDiscoverSectionModel = {
  25. let section = TSDiscoverSectionModel()
  26. section.style = .banner
  27. section.setTitle(title: "")
  28. section.items = [bannerItems]
  29. return section
  30. }()
  31. lazy var videoEffectItems: [TSDiscoverItemModel] = {
  32. [
  33. /// Trending Video Effect
  34. TSDiscoverItemModel(style: .videoV2,
  35. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Alien Kidnap.mp4"]),
  36. generateModel: TSGenerateModel(json: video_AlienKidnap)),
  37. TSDiscoverItemModel(style: .videoV2,
  38. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Drive my yacht.mp4"]),
  39. generateModel: TSGenerateModel(json: video_DriveMyYacht)),
  40. TSDiscoverItemModel(style: .videoV2,
  41. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Earth Zoom out.mp4"]),
  42. generateModel: TSGenerateModel(json: video_EarthZoomOut)),
  43. TSDiscoverItemModel(style: .videoV2,
  44. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Superman.mp4"]),
  45. generateModel: TSGenerateModel(json: video_SuperMan)),
  46. TSDiscoverItemModel(style: .videoV2,
  47. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Box Me.mp4"]),
  48. generateModel: TSGenerateModel(json: video_BoxMe)),
  49. TSDiscoverItemModel(style: .videoV2,
  50. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Toy Me.mp4"]),
  51. generateModel: TSGenerateModel(json: video_ToyMe)),
  52. TSDiscoverItemModel(style: .videoV2,
  53. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Mermaid.mp4"]),
  54. generateModel: TSGenerateModel(json: video_Mermaid)),
  55. TSDiscoverItemModel(style: .videoV2,
  56. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Fairy.mp4"]),
  57. generateModel: TSGenerateModel(json: video_Fairy)),
  58. TSDiscoverItemModel(style: .videoV2,
  59. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Anime Me.mp4"]),
  60. generateModel: TSGenerateModel(json: video_AnimeMe)),
  61. TSDiscoverItemModel(style: .videoV2,
  62. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["360° Microwave.mp4"]),
  63. generateModel: TSGenerateModel(json: video_360Microwave)),
  64. ]
  65. }()
  66. lazy var aiDanceItems: [TSDiscoverItemModel] = {
  67. let items: [TSDiscoverItemModel] = [
  68. /// AI Dance
  69. TSDiscoverItemModel(style: .videoV2,
  70. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Shake.mp4"]),
  71. generateModel: TSGenerateModel(json: video_Shake)),
  72. TSDiscoverItemModel(style: .videoV2,
  73. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["PUBG Winner Hit.mp4"]),
  74. generateModel: TSGenerateModel(json: video_PUBGWinnerHit)),
  75. TSDiscoverItemModel(style: .videoV2,
  76. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Subject 3.mp4"]),
  77. generateModel: TSGenerateModel(json: video_Subject3)),
  78. TSDiscoverItemModel(style: .videoV2,
  79. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Body Shake.mp4"]),
  80. generateModel: TSGenerateModel(json: video_BodyShake)),
  81. TSDiscoverItemModel(style: .videoV2,
  82. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Motor Dance.mp4"]),
  83. generateModel: TSGenerateModel(json: video_MotorDance)),
  84. TSDiscoverItemModel(style: .videoV2,
  85. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Hip Twist.mp4"]),
  86. generateModel: TSGenerateModel(json: video_HipTwist)),
  87. TSDiscoverItemModel(style: .videoV2,
  88. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Rat Dance.mp4"]),
  89. generateModel: TSGenerateModel(json: video_RatDance)),
  90. TSDiscoverItemModel(style: .videoV2,
  91. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Shake it Down.mp4"]),
  92. generateModel: TSGenerateModel(json: video_ShakeitDown)),
  93. ]
  94. return items
  95. }()
  96. lazy var creativeEffectItems: [TSDiscoverItemModel] = {
  97. let items: [TSDiscoverItemModel] = [
  98. // Creative Effect
  99. TSDiscoverItemModel(style: .videoV2,
  100. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Fly.mp4"]),
  101. generateModel: TSGenerateModel(json: video_Fly)),
  102. TSDiscoverItemModel(style: .videoV2,
  103. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Happy Birthday.mp4"]),
  104. generateModel: TSGenerateModel(json: video_HappyBirthday)),
  105. TSDiscoverItemModel(style: .videoV2,
  106. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Surprise Flower.mp4"]),
  107. generateModel: TSGenerateModel(json: video_SurpriseFlower)),
  108. TSDiscoverItemModel(style: .videoV2,
  109. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Pet to Human.mp4"]),
  110. generateModel: TSGenerateModel(json: video_PettoHuman)),
  111. TSDiscoverItemModel(style: .videoV2,
  112. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Making Face.mp4"]),
  113. generateModel: TSGenerateModel(json: video_MakingFace)),
  114. TSDiscoverItemModel(style: .videoV2,
  115. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Pixel World.mp4"]),
  116. generateModel: TSGenerateModel(json: video_PixelWorld)),
  117. TSDiscoverItemModel(style: .videoV2,
  118. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Robot.mp4"]),
  119. generateModel: TSGenerateModel(json: video_Robot)),
  120. TSDiscoverItemModel(style: .videoV2,
  121. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Pinch.mp4"]),
  122. generateModel: TSGenerateModel(json: video_Pinch)),
  123. TSDiscoverItemModel(style: .videoV2,
  124. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Punch Face.mp4"]),
  125. generateModel: TSGenerateModel(json: video_PunchFace)),
  126. TSDiscoverItemModel(style: .videoV2,
  127. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Grab doll.mp4"]),
  128. generateModel: TSGenerateModel(json: video_Grabdoll)),
  129. TSDiscoverItemModel(style: .videoV2,
  130. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Hulk.mp4"]),
  131. generateModel: TSGenerateModel(json: video_Hulk)),
  132. TSDiscoverItemModel(style: .videoV2,
  133. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Walking with Beasts.mp4"]),
  134. generateModel: TSGenerateModel(json: video_WalkingwithBeasts)),
  135. TSDiscoverItemModel(style: .videoV2,
  136. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Funny Pet.mp4"]),
  137. generateModel: TSGenerateModel(json: video_FunnyPet)),
  138. TSDiscoverItemModel(style: .videoV2,
  139. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["MuscleUp.mp4"]),
  140. generateModel: TSGenerateModel(json: video_MuscleUp)),
  141. TSDiscoverItemModel(style: .videoV2,
  142. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Lafufu.mp4"]),
  143. generateModel: TSGenerateModel(json: video_Lafufu)),
  144. TSDiscoverItemModel(style: .videoV2,
  145. viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Jump to Cloud.mp4"]),
  146. generateModel: TSGenerateModel(json: video_JumpToCloud)),
  147. // TSDiscoverItemModel(style: .videoV2,
  148. // viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Sexy me.mp4"]),
  149. // generateModel: TSGenerateModel(json: video_Sexyme)),
  150. // TSDiscoverItemModel(style: .videoV2,
  151. // viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Kiss.mp4"]),
  152. // generateModel: TSGenerateModel(json: video_Kiss)),
  153. // TSDiscoverItemModel(style: .videoV2,
  154. // viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["French Kiss.mp4"]),
  155. // generateModel: TSGenerateModel(json: video_FrenchKiss)),
  156. // TSDiscoverItemModel(style: .videoV2,
  157. // viewModel: TSDiscoverAnimationItemVM(title: "", style: .video, imageNameds: ["Photo Animater.mp4"]),
  158. // generateModel: TSGenerateModel(json: video_PhotoAnimater),
  159. // showAtHome: false
  160. // ),
  161. ]
  162. return items
  163. }()
  164. lazy var videoEffectSection: TSDiscoverSectionModel = {
  165. let section = TSDiscoverSectionModel()
  166. section.style = .styleMore
  167. section.setTitle(title: "Trending Video Effect".localized, imageNamed: "🏆", colors: ["#FCB728", "#FFFFFF"])
  168. section.items = [videoEffectItems.filter({ $0.showAtHome == true })]
  169. return section
  170. }()
  171. lazy var aiDanceSection: TSDiscoverSectionModel = {
  172. let section = TSDiscoverSectionModel()
  173. section.style = .styleMore
  174. section.setTitle(title: "AI Dance".localized, imageNamed: "💃", colors: ["#EF2C00", "#FFFFFF"])
  175. section.items = [aiDanceItems.filter({ $0.showAtHome == true })]
  176. return section
  177. }()
  178. lazy var creativeEffectSection: TSDiscoverSectionModel = {
  179. let section = TSDiscoverSectionModel()
  180. section.style = .styleMore
  181. section.setTitle(title: "Creative Effect".localized, imageNamed: "✨", colors: ["#FCDF3B", "#FFFFFF"])
  182. section.items = [creativeEffectItems.filter({ $0.showAtHome == true })]
  183. return section
  184. }()
  185. // //顶部按钮功能(金刚区)
  186. // lazy var topFuncSection:TSDiscoverSectionModel = {
  187. // let section = TSDiscoverSectionModel()
  188. // section.style = .funcItems
  189. // section.items = [[
  190. //// TSDiscoverItemModel(style: .futureBaby,
  191. //// viewModel: TSDiscoverBaseItemVM(title: "AI Baby", imageNamed: "discover_AIBaby"),
  192. //// generateModel: TSFuncStyle.futureBaby.generateModel),
  193. // TSDiscoverItemModel(style: .ttp,
  194. // viewModel: TSDiscoverBaseItemVM(title: "Text to Image", imageNamed: "discover_TextImage")),
  195. // TSDiscoverItemModel(style: .chat,
  196. // viewModel: TSDiscoverBaseItemVM(title: "AI Assistant", imageNamed: "discover_AIAssistant")),
  197. // TSDiscoverItemModel(style: .photoQuality,
  198. // viewModel: TSDiscoverBaseItemVM(title: "Enhance Photo", imageNamed: "discover_HD"),
  199. // generateModel: TSFuncStyle.oldPhoto.generateModel),
  200. // TSDiscoverItemModel(style: .photoLive,
  201. // viewModel: TSDiscoverBaseItemVM(title: "Old Photo Animation", imageNamed: "discover_PredictOld"),
  202. // generateModel: TSFuncStyle.photoLive.generateModel),
  203. // ]]
  204. // return section
  205. // }()
  206. lazy var popularStylesSection: TSDiscoverSectionModel = {
  207. let section = TSDiscoverSectionModel()
  208. section.style = .styleMore
  209. section.setTitle(title: "Popular Photo Filter".localized, imageNamed: "🔥", colors: ["#EF2C00", "#FEFEE7"])
  210. section.items = [[
  211. TSDiscoverItemModel(style: .ptp,
  212. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_StickerMe", "discover_1_StickerMe"]),
  213. generateModel: TSGenerateModel(json: ptp_StickerMe)),
  214. TSDiscoverItemModel(style: .ptp,
  215. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_ToonMe", "discover_1_ToonMe"]),
  216. generateModel: TSGenerateModel(json: ptp_ToonMe)),
  217. TSDiscoverItemModel(style: .ptp,
  218. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_EmojiMe", "discover_1_EmojiMe"]),
  219. generateModel: TSGenerateModel(json: ptp_EmojiMe)),
  220. TSDiscoverItemModel(style: .ptp,
  221. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Bride", "discover_1_Bride"]),
  222. generateModel: TSGenerateModel(json: ptp_Bride)),
  223. TSDiscoverItemModel(style: .ptp,
  224. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_ChibiSticker", "discover_1_ChibiSticker"]),
  225. generateModel: TSGenerateModel(json: ptp_ChibiSticker)),
  226. TSDiscoverItemModel(style: .ptp,
  227. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Irasutoya", "discover_1_Irasutoya"]),
  228. generateModel: TSGenerateModel(json: ptp_Irasutoya)),
  229. TSDiscoverItemModel(style: .ptp,
  230. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_BlytheDoll", "discover_1_BlytheDoll"]),
  231. generateModel: TSGenerateModel(json: ptp_BlytheDoll)),
  232. TSDiscoverItemModel(style: .ptp,
  233. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Caricature", "discover_1_Caricature"]),
  234. generateModel: TSGenerateModel(json: ptp_Caricature)),
  235. TSDiscoverItemModel(style: .ptp,
  236. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Illustration", "discover_1_Illustration"]),
  237. generateModel: TSGenerateModel(json: ptp_Illustration)),
  238. TSDiscoverItemModel(style: .ptp,
  239. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_90sAnime", "discover_1_90sAnime"]),
  240. generateModel: TSGenerateModel(json: ptp_90sAnime)),
  241. TSDiscoverItemModel(style: .ptp,
  242. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_FreshWatercolor", "discover_1_FreshWatercolor"]),
  243. generateModel: TSGenerateModel(json: ptp_FreshWatercolor)),
  244. // TSDiscoverItemModel(style: .ptp,
  245. // viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_FairyTail","discover_1_FairyTail"]),
  246. // generateModel: TSGenerateModel(json: ptp_FairyTail)),
  247. // TSDiscoverItemModel(style: .ptp,
  248. // viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_TouhouSeries","discover_1_TouhouSeries"]),
  249. // generateModel: TSGenerateModel(json: ptp_TouhouSeries)),
  250. // TSDiscoverItemModel(style: .ptp,
  251. // viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Anime","discover_1_Anime"]),
  252. // generateModel: TSGenerateModel(json: ptp_Anime)),
  253. ]]
  254. return section
  255. }()
  256. lazy var petToHumanSection: TSDiscoverSectionModel = {
  257. let section = TSDiscoverSectionModel()
  258. section.style = .fullCard
  259. section.items = [
  260. TSDiscoverItemModel(style: .catTohuman,
  261. viewModel: TSDiscoverBaseItemVM(
  262. title: "Pet Humanization".localized,
  263. imageNamed: "aiList_catTohuman",
  264. info: "Curious about what your pet is like?".localized
  265. ),
  266. generateModel: TSGenerateModel(json: catTohuman)),
  267. ]
  268. return section
  269. }()
  270. lazy var figuresToysSection: TSDiscoverSectionModel = {
  271. let section = TSDiscoverSectionModel()
  272. section.style = .styleMore
  273. section.setTitle(title: "Figures&Toys".localized, imageNamed: "🧸", colors: ["#D7A863", "#FFFFFF"])
  274. section.items = [[
  275. TSDiscoverItemModel(style: .ptp,
  276. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_AnimeFigure", "discover_1_AnimeFigure"]),
  277. generateModel: TSGenerateModel(json: ptp_ActionFigure)),
  278. TSDiscoverItemModel(style: .ptp,
  279. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Lafufu", "discover_1_Lafufu"]),
  280. generateModel: TSGenerateModel(json: ptp_Lafufu)),
  281. TSDiscoverItemModel(style: .ptp,
  282. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_WhimsicalDoll", "discover_1_WhimsicalDoll"]),
  283. generateModel: TSGenerateModel(json: ptp_WhimsicalDoll)),
  284. TSDiscoverItemModel(style: .ptp,
  285. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_PushToy", "discover_1_PushToy"]),
  286. generateModel: TSGenerateModel(json: ptp_PlushToy)),
  287. TSDiscoverItemModel(style: .ptp,
  288. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Polaroid", "discover_1_Polaroid"]),
  289. generateModel: TSGenerateModel(json: ptp_Polaroid)),
  290. TSDiscoverItemModel(style: .ptp,
  291. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_MusicBox", "discover_1_MusicBox"]),
  292. generateModel: TSGenerateModel(json: ptp_MusicBox)),
  293. TSDiscoverItemModel(style: .ptp,
  294. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Earphone", "discover_1_Earphone"]),
  295. generateModel: TSGenerateModel(json: ptp_Earphone)),
  296. TSDiscoverItemModel(style: .ptp,
  297. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Kulomi", "discover_1_Kulomi"]),
  298. generateModel: TSGenerateModel(json: ptp_Kulomi)),
  299. ]]
  300. return section
  301. }()
  302. // lazy var babyCardSection: TSDiscoverSectionModel = {
  303. // let section = TSDiscoverSectionModel()
  304. // section.style = .fullCard
  305. // section.items = [
  306. // TSDiscoverItemModel(style: .futureBaby,
  307. // viewModel: TSDiscoverAnimationItemVM(
  308. // title: "Future Baby".localized,
  309. // info: "To see what will your future baby look like".localized,
  310. // style: .apng,
  311. // imageNameds: ["animated_aiBaby.apng"]
  312. // ),
  313. // generateModel: TSGenerateModel(json: futureBaby)),
  314. // ]
  315. //
  316. // return section
  317. // }()
  318. lazy var babyCardSection: TSDiscoverSectionModel = {
  319. let section = TSDiscoverSectionModel()
  320. section.style = .fullCard
  321. section.items = [
  322. TSDiscoverItemModel(style: .futureBaby,
  323. viewModel: TSDiscoverBaseItemVM(
  324. title: "Future Baby".localized,
  325. imageNamed: "discover_aiBaby",
  326. info: "To see what will your future baby look like".localized
  327. ),
  328. generateModel: TSGenerateModel(json: futureBaby)),
  329. ]
  330. return section
  331. }()
  332. lazy var coolPersonalitySection: TSDiscoverSectionModel = {
  333. let section = TSDiscoverSectionModel()
  334. section.style = .styleMore
  335. section.setTitle(title: "Cool Personality".localized, imageNamed: "🔮", colors: ["#DB6BE6", "#FFFFFF"])
  336. section.items = [[
  337. TSDiscoverItemModel(style: .ptp,
  338. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Cyberpunk", "discover_1_Cyberpunk"]),
  339. generateModel: TSGenerateModel(json: ptp_Cyberpunk)),
  340. TSDiscoverItemModel(style: .ptp,
  341. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Gothic", "discover_1_Gothic"]),
  342. generateModel: TSGenerateModel(json: ptp_Gothic)),
  343. TSDiscoverItemModel(style: .ptp,
  344. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Y2K", "discover_1_Y2K"]),
  345. generateModel: TSGenerateModel(json: ptp_Y2KMillennium)),
  346. TSDiscoverItemModel(style: .ptp,
  347. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Dopamine", "discover_1_Dopamine"]),
  348. generateModel: TSGenerateModel(json: ptp_Dopamine)),
  349. TSDiscoverItemModel(style: .ptp,
  350. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Neon", "discover_1_Neon"]),
  351. generateModel: TSGenerateModel(json: ptp_Neon)),
  352. TSDiscoverItemModel(style: .ptp,
  353. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_DarkAcademia", "discover_1_DarkAcademia"]),
  354. generateModel: TSGenerateModel(json: ptp_DarkAcademia)),
  355. ]]
  356. return section
  357. }()
  358. lazy var animeCartoonSection: TSDiscoverSectionModel = {
  359. let section = TSDiscoverSectionModel()
  360. section.style = .styleMore
  361. section.setTitle(title: "Anime&Cartoon".localized, imageNamed: "🧚🏻‍♀️", colors: ["#A4EAD4", "#FFFFFF"])
  362. section.items = [[
  363. TSDiscoverItemModel(style: .ptp,
  364. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_AnimalCrossing", "discover_1_AnimalCrossing"]),
  365. generateModel: TSGenerateModel(json: ptp_AnimalCrossing)),
  366. TSDiscoverItemModel(style: .ptp,
  367. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_YellowBunch", "discover_1_YellowBunch"]),
  368. generateModel: TSGenerateModel(json: ptp_YellowBunch)),
  369. TSDiscoverItemModel(style: .ptp,
  370. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_SweetieCat", "discover_1_SweetieCat"]),
  371. generateModel: TSGenerateModel(json: ptp_SweetieCat)),
  372. TSDiscoverItemModel(style: .ptp,
  373. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Puppy", "discover_1_Puppy"]),
  374. generateModel: TSGenerateModel(json: ptp_Puppy)),
  375. TSDiscoverItemModel(style: .ptp,
  376. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Cibi", "discover_1_Cibi"]),
  377. generateModel: TSGenerateModel(json: ptp_Cibi)),
  378. TSDiscoverItemModel(style: .ptp,
  379. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_MarinerKing", "discover_1_MarinerKing"]),
  380. generateModel: TSGenerateModel(json: ptp_MarinerKing)),
  381. TSDiscoverItemModel(style: .ptp,
  382. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_SonOfDragon", "discover_1_SonOfDragon"]),
  383. generateModel: TSGenerateModel(json: ptp_SonOfDragon)),
  384. TSDiscoverItemModel(style: .ptp,
  385. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Barbie", "discover_1_Barbie"]),
  386. generateModel: TSGenerateModel(json: ptp_Barbie)),
  387. TSDiscoverItemModel(style: .ptp,
  388. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Chiikawa", "discover_1_Chiikawa"]),
  389. generateModel: TSGenerateModel(json: ptp_Chiikawa)),
  390. TSDiscoverItemModel(style: .ptp,
  391. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_3DBox", "discover_1_3DBox"]),
  392. generateModel: TSGenerateModel(json: ptp_3DBox)),
  393. TSDiscoverItemModel(style: .ptp,
  394. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_BattleBlitz", "discover_1_BattleBlitz"]),
  395. generateModel: TSGenerateModel(json: ptp_BattleBlitz)),
  396. TSDiscoverItemModel(style: .ptp,
  397. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Mythos", "discover_1_Mythos"]),
  398. generateModel: TSGenerateModel(json: ptp_Mythos)),
  399. TSDiscoverItemModel(style: .ptp,
  400. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_EmpireDash", "discover_1_EmpireDash"]),
  401. generateModel: TSGenerateModel(json: ptp_EmpireDash)),
  402. TSDiscoverItemModel(style: .ptp,
  403. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_PocketBeasts", "discover_1_PocketBeasts"]),
  404. generateModel: TSGenerateModel(json: ptp_PocketBeasts)),
  405. ]]
  406. return section
  407. }()
  408. lazy var ttpCardSection: TSDiscoverSectionModel = {
  409. let section = TSDiscoverSectionModel()
  410. section.style = .fullCard
  411. section.items = [
  412. TSDiscoverItemModel(style: .ttp,
  413. viewModel: TSDiscoverBaseItemVM(
  414. title: "Text to Image".localized,
  415. imageNamed: "discover_ttp",
  416. info: "Turn words into visually stunning artwork".localized
  417. ),
  418. generateModel: nil),
  419. ]
  420. return section
  421. }()
  422. lazy var trendingSection: TSDiscoverSectionModel = {
  423. let section = TSDiscoverSectionModel()
  424. section.style = .styleMore
  425. section.setTitle(title: "Trending".localized, imageNamed: "🚀", colors: ["#4887BB", "#FFFFFF"])
  426. section.items = [[
  427. TSDiscoverItemModel(style: .ptp,
  428. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Fairy", "discover_1_Fairy"]),
  429. generateModel: TSGenerateModel(json: ptp_Fairy)),
  430. TSDiscoverItemModel(style: .ptp,
  431. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_CyberFairy", "discover_1_CyberFairy"]),
  432. generateModel: TSGenerateModel(json: ptp_CyberFairy)),
  433. TSDiscoverItemModel(style: .ptp,
  434. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Mermaid", "discover_1_Mermaid"]),
  435. generateModel: TSGenerateModel(json: ptp_Mermaid)),
  436. TSDiscoverItemModel(style: .ptp,
  437. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Mermaid", "discover_1_CyberMermaid"]),
  438. generateModel: TSGenerateModel(json: ptp_CyberpunkMermaid)),
  439. TSDiscoverItemModel(style: .ptp,
  440. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Mermaid", "discover_1_CuteMermaid"]),
  441. generateModel: TSGenerateModel(json: ptp_CuteMermaid)),
  442. TSDiscoverItemModel(style: .ptp,
  443. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Mermaid", "discover_1_DarckMermaid"]),
  444. generateModel: TSGenerateModel(json: ptp_DarkMermaid)),
  445. ]]
  446. return section
  447. }()
  448. lazy var processPhotoSection: TSDiscoverSectionModel = {
  449. let section = TSDiscoverSectionModel()
  450. section.style = .styleMore
  451. section.setTitle(title: "Process Photo".localized, imageNamed: "🚀", colors: ["#DEA94E", "#FFFFFF"])
  452. section.items = [[
  453. TSDiscoverItemModel(style: .photoLive,
  454. viewModel: TSDiscoverAnimationItemVM(title: "", style: .gif, imageNameds: ["discover_0_AnimatePhoto1"]),
  455. generateModel: TSGenerateModel(json: photoLive)),
  456. TSDiscoverItemModel(style: .photoQuality,
  457. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_EnhancerPhoto", "discover_1_EnhancerPhoto"]),
  458. generateModel: TSGenerateModel(json: photoQuality)),
  459. TSDiscoverItemModel(style: .process,
  460. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_RecreatePhoto", "discover_1_RecreatePhoto"]),
  461. generateModel: TSGenerateModel(json: recreatePhoto)),
  462. TSDiscoverItemModel(style: .oldPhoto,
  463. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_RestorPhoto", "discover_1_RestorPhoto"]),
  464. generateModel: TSGenerateModel(json: oldPhoto)),
  465. TSDiscoverItemModel(style: .process,
  466. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Colorize", "discover_1_Colorize"]),
  467. generateModel: TSGenerateModel(json: colorize)),
  468. TSDiscoverItemModel(style: .photoExpand,
  469. viewModel: TSDiscoverBaseItemVM(title: "", imageNamed: "discover_0_ExpandPhoto"),
  470. generateModel: TSGenerateModel(json: photoExpand)),
  471. ]]
  472. return section
  473. }()
  474. lazy var chatCardSection: TSDiscoverSectionModel = {
  475. let section = TSDiscoverSectionModel()
  476. section.style = .fullCard
  477. section.items = [
  478. TSDiscoverItemModel(style: .chat,
  479. viewModel: TSDiscoverBaseItemVM(
  480. title: "AI Assistant".localized,
  481. imageNamed: "aiList_aiChat",
  482. info: "Get smart and instant answers".localized
  483. ),
  484. generateModel: nil),
  485. ]
  486. return section
  487. }()
  488. lazy var artFilterSection: TSDiscoverSectionModel = {
  489. let section = TSDiscoverSectionModel()
  490. section.style = .styleMore
  491. section.setTitle(title: "Art Filter".localized, imageNamed: "🖼️", colors: ["#6CCC2B", "#FFFFFF"])
  492. section.items = [[
  493. TSDiscoverItemModel(style: .ptp,
  494. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_OilPainting", "discover_1_OilPainting"]),
  495. generateModel: TSGenerateModel(json: ptp_OilPainting)),
  496. TSDiscoverItemModel(style: .ptp,
  497. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_MonaLisa", "discover_1_MonaLisa"]),
  498. generateModel: TSGenerateModel(json: ptp_MonaLisa)),
  499. TSDiscoverItemModel(style: .ptp,
  500. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Pixel", "discover_1_Pixel"]),
  501. generateModel: TSGenerateModel(json: ptp_Pixel)),
  502. TSDiscoverItemModel(style: .ptp,
  503. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Sketch", "discover_1_Sketch"]),
  504. generateModel: TSGenerateModel(json: ptp_Sketch)),
  505. TSDiscoverItemModel(style: .ptp,
  506. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Watercolor", "discover_1_Watercolor"]),
  507. generateModel: TSGenerateModel(json: ptp_Watercolor)),
  508. TSDiscoverItemModel(style: .ptp,
  509. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_VanGogh", "discover_1_VanGogh"]),
  510. generateModel: TSGenerateModel(json: ptp_VanGogh)),
  511. TSDiscoverItemModel(style: .ptp,
  512. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Dreamcore", "discover_1_Dreamcore"]),
  513. generateModel: TSGenerateModel(json: ptp_Dreamcore)),
  514. TSDiscoverItemModel(style: .ptp,
  515. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Doodle", "discover_1_Doodle"]),
  516. generateModel: TSGenerateModel(json: ptp_Doodle)),
  517. ]]
  518. return section
  519. }()
  520. lazy var bePrettySection: TSDiscoverSectionModel = {
  521. let section = TSDiscoverSectionModel()
  522. section.style = .styleMore
  523. section.setTitle(title: "Be Pretty".localized, imageNamed: "🥰", colors: ["#FFA537", "#FFFFFF"])
  524. section.items = [[
  525. TSDiscoverItemModel(style: .changehair,
  526. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_HairSalon", "discover_1_HairSalon", "discover_2_HairSalon"]),
  527. generateModel: TSGenerateModel(json: hairSalon)),
  528. TSDiscoverItemModel(style: .changehairColor,
  529. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_HairColor", "discover_1_HairColor", "discover_2_HairColor"]),
  530. generateModel: TSGenerateModel(json: hairColor)),
  531. TSDiscoverItemModel(style: .pretty,
  532. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_Pretty", "discover_1_Pretty"]),
  533. generateModel: TSGenerateModel(json: pretty)),
  534. TSDiscoverItemModel(style: .eyeOpen,
  535. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_FaceFix", "discover_1_FaceFix"]),
  536. generateModel: TSGenerateModel(json: eyeOpen)),
  537. TSDiscoverItemModel(style: .changeEmote,
  538. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_FacialExpression", "discover_1_FacialExpression"]),
  539. generateModel: TSGenerateModel(json: changeEmotion)),
  540. TSDiscoverItemModel(style: .ageChild,
  541. viewModel: TSDiscoverAnimationItemVM(title: "", imageNameds: ["discover_0_BackToBaby", "discover_1_BackToBaby"]),
  542. generateModel: TSGenerateModel(json: ageChild)),
  543. ]]
  544. return section
  545. }()
  546. lazy var oldAgeCardSection: TSDiscoverSectionModel = {
  547. let section = TSDiscoverSectionModel()
  548. section.style = .fullCard
  549. section.setTitle(title: "More AI Tools".localized, imageNamed: "🪄", colors: ["#FFFF73", "#FFFFFF"])
  550. section.items = [
  551. TSDiscoverItemModel(style: .ageOld,
  552. viewModel: TSDiscoverBaseItemVM(
  553. title: "Predicting Old Age".localized,
  554. imageNamed: "aiList_oldPeople",
  555. info: "AI predicts what you look like in your old age".localized
  556. ),
  557. generateModel: TSGenerateModel(json: ageOld)),
  558. ]
  559. return section
  560. }()
  561. lazy var discoverDatas: [TSDiscoverSectionModel] = {
  562. [
  563. bannerSection,
  564. videoEffectSection,
  565. aiDanceSection,
  566. creativeEffectSection,
  567. popularStylesSection,
  568. processPhotoSection,
  569. figuresToysSection,
  570. babyCardSection,
  571. animeCartoonSection,
  572. coolPersonalitySection,
  573. ttpCardSection,
  574. trendingSection,
  575. artFilterSection,
  576. bePrettySection,
  577. oldAgeCardSection,
  578. petToHumanSection,
  579. chatCardSection,
  580. ]
  581. }()
  582. }