TSDiscoverViewModel+Data.swift 40 KB

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