itube-specs 0.0.195

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/README.md +121 -0
  2. package/components/cards/f-video-mini-card.vue +49 -0
  3. package/components/grids/f-grid-categories.vue +20 -0
  4. package/components/grids/f-grid-channels.vue +23 -0
  5. package/components/grids/f-grid-models.vue +25 -0
  6. package/components/grids/f-grid-playlists.vue +21 -0
  7. package/components/grids/f-grid-videos.vue +33 -0
  8. package/components/page-components/f-breadcrumbs.vue +44 -0
  9. package/components/page-components/f-chips-panel.vue +101 -0
  10. package/components/page-components/f-pagination.vue +206 -0
  11. package/components/page-components/f-report.vue +221 -0
  12. package/components/page-components/f-share.vue +96 -0
  13. package/components/page-components/f-sort.vue +57 -0
  14. package/components/page-components/f-videos-title.vue +20 -0
  15. package/components/ui/f-button.vue +50 -0
  16. package/components/ui/f-checkbox.vue +55 -0
  17. package/components/ui/f-chips.vue +116 -0
  18. package/components/ui/f-count.vue +12 -0
  19. package/components/ui/f-country.vue +26 -0
  20. package/components/ui/f-dropdown.vue +122 -0
  21. package/components/ui/f-icon.vue +19 -0
  22. package/components/ui/f-img.vue +46 -0
  23. package/components/ui/f-input.vue +162 -0
  24. package/components/ui/f-label.vue +20 -0
  25. package/components/ui/f-link.vue +33 -0
  26. package/components/ui/f-model-tag.vue +28 -0
  27. package/components/ui/f-notification.vue +77 -0
  28. package/components/ui/f-popup.vue +136 -0
  29. package/components/ui/f-radio.vue +56 -0
  30. package/components/ui/f-select.vue +88 -0
  31. package/components/ui/f-slider.vue +55 -0
  32. package/components/ui/f-snackbar.vue +47 -0
  33. package/components/ui/f-timestamp.vue +51 -0
  34. package/components/ui/f-toggle.vue +29 -0
  35. package/composables/use-antiadblock-domains.ts +20 -0
  36. package/composables/use-auth-popup.ts +25 -0
  37. package/composables/use-convert-query-categories.ts +7 -0
  38. package/composables/use-generate-link.ts +30 -0
  39. package/composables/use-get-pure-route-name.ts +5 -0
  40. package/composables/use-get-videos-filter-request.ts +30 -0
  41. package/composables/use-meta.ts +42 -0
  42. package/composables/use-playlist-edit.ts +36 -0
  43. package/composables/use-report-popup.ts +21 -0
  44. package/composables/use-seo-links.ts +87 -0
  45. package/composables/use-share-popup.ts +23 -0
  46. package/composables/use-snackbar.ts +52 -0
  47. package/composables/use-test-composable.ts +3 -0
  48. package/lib/alphabet-items.ts +2 -0
  49. package/lib/contact-forms-scheme.ts +98 -0
  50. package/lib/contacts/report-issue-items.ts +5 -0
  51. package/lib/contacts/report-malware-items.ts +6 -0
  52. package/lib/contacts/report-reasons-items.ts +12 -0
  53. package/lib/contacts/report-wrong-items.ts +6 -0
  54. package/lib/index.ts +7 -0
  55. package/lib/report-forms-scheme.ts +205 -0
  56. package/nuxt.config.ts +20 -0
  57. package/package.json +53 -0
  58. package/runtime/enums/async-data.ts +48 -0
  59. package/runtime/enums/auth-step.ts +5 -0
  60. package/runtime/enums/contacts-subjects.ts +7 -0
  61. package/runtime/enums/languages.ts +9 -0
  62. package/runtime/enums/niche.ts +6 -0
  63. package/runtime/enums/playlist-step.ts +5 -0
  64. package/runtime/enums/playlist-type.ts +4 -0
  65. package/runtime/enums/report-forms-subjects.ts +7 -0
  66. package/runtime/index.ts +51 -0
  67. package/runtime/utils/cleaners/clean-category-card.ts +9 -0
  68. package/runtime/utils/cleaners/clean-category-info.ts +9 -0
  69. package/runtime/utils/cleaners/clean-channel-card.ts +12 -0
  70. package/runtime/utils/cleaners/clean-channel-info.ts +13 -0
  71. package/runtime/utils/cleaners/clean-model-card.ts +9 -0
  72. package/runtime/utils/cleaners/clean-model-info.ts +11 -0
  73. package/runtime/utils/cleaners/clean-playlist-card.ts +16 -0
  74. package/runtime/utils/cleaners/clean-playlist-data.ts +15 -0
  75. package/runtime/utils/cleaners/clean-playlist-video.ts +12 -0
  76. package/runtime/utils/cleaners/clean-profile-data.ts +11 -0
  77. package/runtime/utils/cleaners/clean-user-playlists-card.ts +11 -0
  78. package/runtime/utils/cleaners/clean-video-card.ts +19 -0
  79. package/runtime/utils/cleaners/clean-video-data.ts +27 -0
  80. package/runtime/utils/compress-image.ts +27 -0
  81. package/runtime/utils/converters/convert-categories-to-chips.ts +13 -0
  82. package/runtime/utils/converters/convert-categories-to-footer.ts +11 -0
  83. package/runtime/utils/converters/convert-date-to-timestamp.ts +37 -0
  84. package/runtime/utils/converters/convert-model-card-to-chips.ts +13 -0
  85. package/runtime/utils/converters/convert-string.ts +56 -0
  86. package/runtime/utils/converters/group-categories-by-first-letter.ts +24 -0
  87. package/runtime/utils/converters/group-objects-by-first-letter.ts +16 -0
  88. package/runtime/utils/format-date.ts +12 -0
  89. package/runtime/utils/format-number.ts +12 -0
  90. package/runtime/utils/format-time-ago.ts +21 -0
  91. package/runtime/utils/get-duration.ts +17 -0
  92. package/runtime/utils/get-month.ts +22 -0
  93. package/runtime/utils/get-multiple-query.ts +26 -0
  94. package/runtime/utils/get-selected-query.ts +6 -0
  95. package/runtime/utils/is-mobile.ts +15 -0
  96. package/runtime/utils/normalize-url.ts +43 -0
  97. package/runtime/utils/on-backdrop-click.ts +5 -0
  98. package/runtime/utils/scroll-lock.ts +28 -0
  99. package/runtime/utils/server/abort-controller.ts +14 -0
  100. package/runtime/utils/server/api-helper.ts +41 -0
  101. package/runtime/utils/server/get-url-with-proxied-params.ts +6 -0
  102. package/runtime/utils/server/parse-api-error.ts +14 -0
  103. package/runtime/utils/server/server-api-helper.ts +28 -0
  104. package/runtime/utils/validate-email.ts +4 -0
  105. package/runtime/utils/validate-password.ts +3 -0
  106. package/runtime/utils/validate-phone.ts +4 -0
  107. package/runtime/utils/validate-username.ts +4 -0
  108. package/runtime/utils/video-data-add-model-icon.ts +20 -0
  109. package/runtime/utils/vtt-helper.ts +86 -0
  110. package/types/authorization-forms.d.ts +16 -0
  111. package/types/breadcrumb-item.d.ts +4 -0
  112. package/types/button-sizes.d.ts +1 -0
  113. package/types/button-themes.d.ts +1 -0
  114. package/types/card-info.d.ts +22 -0
  115. package/types/category-card.d.ts +8 -0
  116. package/types/change-email-form.d.ts +3 -0
  117. package/types/change-password-form.d.ts +4 -0
  118. package/types/channel-card.d.ts +10 -0
  119. package/types/chips-item.d.ts +8 -0
  120. package/types/contacts-form.d.ts +10 -0
  121. package/types/contacts-scheme.d.ts +14 -0
  122. package/types/country.d.ts +5 -0
  123. package/types/css-breakpoints.d.ts +1 -0
  124. package/types/filter-scheme.d.ts +37 -0
  125. package/types/fluid-player.d.ts +226 -0
  126. package/types/gender.d.ts +5 -0
  127. package/types/group-categories.d.ts +15 -0
  128. package/types/index.d.ts +59 -0
  129. package/types/input-types.d.ts +1 -0
  130. package/types/link-item.d.ts +6 -0
  131. package/types/model-card.d.ts +7 -0
  132. package/types/model-filter-payload.d.ts +4 -0
  133. package/types/model-filter.d.ts +15 -0
  134. package/types/model-group.d.ts +5 -0
  135. package/types/model-tag.d.ts +5 -0
  136. package/types/multi-suggest.d.ts +105 -0
  137. package/types/navigation-items.d.ts +10 -0
  138. package/types/paginated-response.d.ts +8 -0
  139. package/types/parameter-model.d.ts +14 -0
  140. package/types/playlist-card.d.ts +16 -0
  141. package/types/playlist-data.d.ts +15 -0
  142. package/types/playlist-info-type.d.ts +28 -0
  143. package/types/playlist-video-form.d.ts +9 -0
  144. package/types/profile-data.d.ts +9 -0
  145. package/types/raw/raw-category-card.d.ts +23 -0
  146. package/types/raw/raw-category-info.d.ts +23 -0
  147. package/types/raw/raw-channel-card.d.ts +29 -0
  148. package/types/raw/raw-channel-info.d.ts +29 -0
  149. package/types/raw/raw-model-card.d.ts +53 -0
  150. package/types/raw/raw-model-info.d.ts +54 -0
  151. package/types/raw/raw-playlist-card.d.ts +27 -0
  152. package/types/raw/raw-playlist-data.d.ts +29 -0
  153. package/types/raw/raw-playlist-user.d.ts +24 -0
  154. package/types/raw/raw-playlist-video.d.ts +18 -0
  155. package/types/raw/raw-profile-data.d.ts +22 -0
  156. package/types/raw/raw-video-card.d.ts +78 -0
  157. package/types/raw/raw-video-data.d.ts +53 -0
  158. package/types/recovery-password-form.d.ts +4 -0
  159. package/types/related-phrases.d.ts +6 -0
  160. package/types/report-form.d.ts +9 -0
  161. package/types/report-scheme.d.ts +21 -0
  162. package/types/request-filters.d.ts +13 -0
  163. package/types/request-pagination.d.ts +5 -0
  164. package/types/search-top-models.d.ts +6 -0
  165. package/types/select-item.d.ts +10 -0
  166. package/types/tab-item.d.ts +6 -0
  167. package/types/thumbs-urls.d.ts +13 -0
  168. package/types/video-card.d.ts +18 -0
  169. package/types/video-data.d.ts +36 -0
@@ -0,0 +1,105 @@
1
+ interface AboutItem {
2
+ key: string;
3
+ sizeCache: string;
4
+ state: string;
5
+ unknownFields: string;
6
+ value: string;
7
+ }
8
+
9
+ interface Body {
10
+ breastSize: string;
11
+ build: string;
12
+ eyeColor: string;
13
+ hairColor: string;
14
+ hairLength: string;
15
+ penisSize: string;
16
+ sizeCache: string;
17
+ state: string;
18
+ unknownFields: string;
19
+ }
20
+
21
+ interface Person {
22
+ age: string;
23
+ body: Body;
24
+ sex: string;
25
+ sexualPreference: string;
26
+ sizeCache: string;
27
+ state: string;
28
+ unknownFields: string;
29
+ }
30
+
31
+ interface ProfilePicture {
32
+ key: string;
33
+ sizeCache: string;
34
+ state: string;
35
+ unknownFields: string;
36
+ value: string;
37
+ }
38
+
39
+ interface AwempireModel {
40
+ about: AboutItem[];
41
+ chatRoomUrl: string;
42
+ country: string;
43
+ ethnicity: string;
44
+ flags: string[];
45
+ id: string;
46
+ interactiveToyStatus: string;
47
+ languages: string[];
48
+ persons: Person[];
49
+ profilePictures: ProfilePicture[];
50
+ rating: number;
51
+ sizeCache: string;
52
+ state: string;
53
+ tags: string[];
54
+ unknownFields: string;
55
+ username: string;
56
+ }
57
+
58
+ interface Category {
59
+ guid: string;
60
+ name: string;
61
+ title: string;
62
+ videosCount: number;
63
+ }
64
+
65
+ interface Model {
66
+ title: string;
67
+ videosCount: number;
68
+ }
69
+
70
+ interface Stream {
71
+ key: string;
72
+ sizeCache: string;
73
+ state: string;
74
+ unknownFields: string;
75
+ value: string;
76
+ }
77
+
78
+ interface StripcashModel {
79
+ clickUrl: string;
80
+ country: string;
81
+ flags: string[];
82
+ gender: string;
83
+ hitCategory: boolean;
84
+ id: number;
85
+ languages: string[];
86
+ popularSnapshotUrl: string;
87
+ previewUrlThumbSmall: string;
88
+ sizeCache: string;
89
+ snapshotUrl: string;
90
+ state: string;
91
+ streamUrl: string;
92
+ streams: Stream[];
93
+ tags: string[];
94
+ unknownFields: string;
95
+ username: string;
96
+ viewersCount: number;
97
+ }
98
+
99
+ export interface IMultiSuggest {
100
+ awempireModels: AwempireModel[];
101
+ categories: Category[];
102
+ models: Model[];
103
+ searchPhrases: string[];
104
+ stripcashModels: StripcashModel[];
105
+ }
@@ -0,0 +1,10 @@
1
+ export interface INavigationItems {
2
+ name: string
3
+ link: string
4
+ icon?: string
5
+ childs?: {
6
+ name: string
7
+ icon: string
8
+ link: string
9
+ }[]
10
+ }
@@ -0,0 +1,8 @@
1
+ type BasePagination = {
2
+ currentPage: number;
3
+ allPages: number;
4
+ total: number;
5
+ };
6
+
7
+ export type PaginatedResponse<T> =
8
+ | (BasePagination & { items: T[] });
@@ -0,0 +1,14 @@
1
+ import type { IModelGroup } from '~/types/model-group';
2
+
3
+ export interface IParameterModelValue {
4
+ name: string
5
+ title: string
6
+ }
7
+
8
+ export interface IParameterModel {
9
+ name: string
10
+ title: string
11
+ values: IParameterModelValue[]
12
+ group: IModelGroup
13
+ kind: 'range' | 'select'
14
+ }
@@ -0,0 +1,16 @@
1
+ import { EPlaylistType } from '../runtime/enums/playlist-type';
2
+
3
+ export interface IPlaylistCard {
4
+ created: number;
5
+ id: string;
6
+ name: string;
7
+ username: string;
8
+ playlistType: EPlaylistType;
9
+ thumbUrls: string[];
10
+ videosCount: number;
11
+ firstVideoId?: string;
12
+ searchTags?: string[];
13
+ views?: number;
14
+ likes?: number;
15
+ dislikes?: number;
16
+ }
@@ -0,0 +1,15 @@
1
+ import { EPlaylistType } from '../runtime/enums/playlist-type';
2
+
3
+ export interface IPlaylistData {
4
+ updated: number;
5
+ id: string;
6
+ name: string;
7
+ username: string;
8
+ playlistType: EPlaylistType;
9
+ videosCount: number;
10
+ firstVideoId: string;
11
+ searchTags: string[];
12
+ views: number;
13
+ likes: number;
14
+ dislikes: number;
15
+ }
@@ -0,0 +1,28 @@
1
+ import type { IThumbUrls, ICardInfo } from '../types/index.d.ts';
2
+
3
+ type Thumb = {
4
+ videoMd5: string;
5
+ thumbNum: number;
6
+ urls: IThumbUrls;
7
+ };
8
+
9
+ export interface IPlaylistInfoType extends ICardInfo {
10
+ guid: string;
11
+ created: number;
12
+ updated: number;
13
+ id: string;
14
+ title: string;
15
+ identityGuid: string;
16
+ username: string;
17
+ playlistType: "public" | "private";
18
+ niche: string;
19
+ domain: string;
20
+ thumbs: Thumb[];
21
+ videosCount: number;
22
+ firstVideoId: string;
23
+ searchTags: string[];
24
+ views: number;
25
+ likes: number;
26
+ dislikes: number;
27
+ availableVideos: number;
28
+ };
@@ -0,0 +1,9 @@
1
+ export interface IPlaylistVideoFormType {
2
+ playlistId: string[] | undefined
3
+ videoId: string
4
+ VideoGUID: string
5
+ videoMd5: string
6
+ thumbNum: number
7
+ name: string
8
+ duration: number
9
+ }
@@ -0,0 +1,9 @@
1
+ export interface IProfileData {
2
+ username: string;
3
+ email: string;
4
+ avatar: string;
5
+ country: string | null;
6
+ city: string;
7
+ birthday: number;
8
+ gender: string | null;
9
+ }
@@ -0,0 +1,23 @@
1
+ import { IThumbUrls } from '../thumbs-urls';
2
+
3
+ export interface IRawCategoryCard {
4
+ guid: string; // unused
5
+ name: string; // ✅ used (для slug → computed: slug)
6
+ title: string; // ✅ used (в NuxtLink title и текст карточки)
7
+ tags: string[]; // unused
8
+ meta_title: string; // unused
9
+ meta_description: string; // unused
10
+ meta_keywords: string; // unused
11
+ language_guid: string; // unused
12
+ language_name: string; // unused
13
+ language_title: string; // unused
14
+ is_top: boolean; // unused
15
+ is_primary_filter: boolean; // unused
16
+ videosCount: number; // ✅ used (в FLabel)
17
+ video_guid: string; // unused
18
+ video_md5: string; // unused
19
+ thumb_number: number; // unused
20
+ description: string; // unused
21
+ header: string; // unused
22
+ video_thumb_urls: IThumbUrls; // ✅ used (для card.videoThumbUrls.webp['480X270'])
23
+ }
@@ -0,0 +1,23 @@
1
+ import { IThumbUrls } from '../thumbs-urls';
2
+
3
+ export interface IRawCategoryInfo {
4
+ guid: string;
5
+ name: string;
6
+ title: string;
7
+ tags: string[]; // unused
8
+ meta_title: string; // unused
9
+ meta_description: string; // unused
10
+ meta_keywords: string; // unused
11
+ language_guid: string; // unused
12
+ language_name: string; // unused
13
+ language_title: string; // unused
14
+ is_top: boolean; // unused
15
+ is_primary_filter: boolean; // unused
16
+ videosCount: number;
17
+ video_guid: string; // unused
18
+ video_md5: string; // unused
19
+ thumb_number: number; // unused
20
+ description: string;
21
+ header: string; // unused
22
+ video_thumb_urls: IThumbUrls;
23
+ }
@@ -0,0 +1,29 @@
1
+ import { IThumbUrls } from '../thumbs-urls';
2
+
3
+ export interface IRawChannelCard {
4
+ guid: string;
5
+ name: string;
6
+ url: string;
7
+ description: string; // unused
8
+ adv_text: string; // unused
9
+ adv_link: string; // unused
10
+ player_text: string; // unused
11
+ player_link: string; // unused
12
+ avatar_md5: string; // unused
13
+ mobile_banner_md5: string; // unused
14
+ mobile_banner_url: string; // unused
15
+ desktop_banner_md5: string; // unused
16
+ desktop_banner_url: string; // unused
17
+ tags: string[] | null; // unused
18
+ videos_count: number;
19
+ allow_ads: boolean; // unused
20
+ video_guid: string; // unused
21
+ video_md5: string; // unused
22
+ thumb_number: number; // unused
23
+ is_network: boolean;
24
+ updated: number;
25
+ avatar_url: string;
26
+ mobile_banner_image_url: string; // unused
27
+ desktop_banner_image_url: string; // unused
28
+ video_thumb_urls: IThumbUrls;
29
+ }
@@ -0,0 +1,29 @@
1
+ import { IThumbUrls } from '../thumbs-urls';
2
+
3
+ export interface IRawChannelInfo {
4
+ guid: string;
5
+ name: string;
6
+ url: string;
7
+ description: string;
8
+ adv_text: string; // unused
9
+ adv_link: string; // unused
10
+ player_text: string; // unused
11
+ player_link: string; // unused
12
+ avatar_md5: string; // unused
13
+ mobile_banner_md5: string; // unused
14
+ mobile_banner_url: string; // unused
15
+ desktop_banner_md5: string; // unused
16
+ desktop_banner_url: string; // unused
17
+ tags: string[] | null; // unused
18
+ videos_count: number;
19
+ allow_ads: boolean; // unused
20
+ video_guid: string; // unused
21
+ video_md5: string; // unused
22
+ thumb_number: number; // unused
23
+ is_network: boolean;
24
+ updated: number;
25
+ avatar_url: string;
26
+ mobile_banner_image_url: string; // unused
27
+ desktop_banner_image_url: string; // unused
28
+ video_thumb_urls: IThumbUrls;
29
+ }
@@ -0,0 +1,53 @@
1
+ import { IThumbUrls } from '../thumbs-urls';
2
+
3
+ export interface IRawModelCard {
4
+ guid: string; // unused
5
+ title: string;
6
+ birthday: number; // unused
7
+ birthplace: string; // unused
8
+ description: string; // unused
9
+ eye_color: string; // unused
10
+ ethnicity: string; // unused
11
+ facial_hair: boolean; // unused
12
+ fake_boobs: boolean; // unused
13
+ foreskin: string; // unused
14
+ gender: string; // unused
15
+ hair_color: string; // unused
16
+ height: number; // unused
17
+ weight: number; // unused
18
+ interested: string; // unused
19
+ hobbies: string; // unused
20
+ piercings: boolean; // unused
21
+ relationship_status: string; // unused
22
+ star_sign: string; // unused
23
+ tattoos: boolean; // unused
24
+ website: string; // unused
25
+ bio: string; // unused
26
+ ranking: { // unused
27
+ LastMonth: string;
28
+ ModelRank: string;
29
+ MonthlyRank: string;
30
+ Subscribers: string;
31
+ VideoViews: string;
32
+ WeeklyRank: string;
33
+ YearlyRank: string;
34
+ };
35
+ social: { // unused
36
+ [ key: string ]: string | undefined;
37
+ };
38
+ orientation: string; // unused
39
+ videos_count: number; // unused (в шаблоне используется `card.videosCount`, см. ниже)
40
+ likes: number; // unused
41
+ dislikes: number; // unused
42
+ popularity: number; // unused
43
+ video_guid: string; // unused
44
+ video_md5: string; // unused
45
+ thumb_number: number; // unused
46
+ views: number; // unused
47
+ primary_image_md5: string; // unused (но вероятно используется косвенно через `primaryImageUrl`)
48
+ primary_image_url: string;
49
+ rank: number; // unused
50
+ number_of_videos_in_recent_days: number; // unused
51
+ turnons: string; // unused
52
+ video_thumb_urls: IThumbUrls;
53
+ }
@@ -0,0 +1,54 @@
1
+ import { IThumbUrls } from '../thumbs-urls';
2
+ import { IParameterModel } from '~/types';
3
+
4
+ export interface IRawModelInfo {
5
+ guid: string; // unused
6
+ title: string;
7
+ birthday: number;
8
+ birthplace: string;
9
+ description: string;
10
+ eye_color: string;
11
+ ethnicity: string;
12
+ facial_hair: boolean;
13
+ fake_boobs: boolean; // unused
14
+ foreskin: string; // unused
15
+ gender: string;
16
+ hair_color: string;
17
+ height: number;
18
+ weight: number; // unused
19
+ interested: string;
20
+ hobbies: string; // unused
21
+ piercings: boolean;
22
+ relationship_status: string;
23
+ star_sign: string;
24
+ tattoos: boolean;
25
+ website: string; // unused
26
+ bio: string; // unused
27
+ ranking: { // unused
28
+ LastMonth: string;
29
+ ModelRank: string;
30
+ MonthlyRank: string;
31
+ Subscribers: string;
32
+ VideoViews: string;
33
+ WeeklyRank: string;
34
+ YearlyRank: string;
35
+ };
36
+ social: {
37
+ [key: string]: string | undefined;
38
+ };
39
+ orientation: string;
40
+ videos_count: number;
41
+ likes: number; // unused
42
+ dislikes: number; // unused
43
+ popularity: number; // unused
44
+ video_guid: string; // unused
45
+ video_md5: string; // unused
46
+ thumb_number: number; // unused
47
+ views: number; // unused
48
+ primary_image_md5: string; // unused
49
+ rank: number; // unused
50
+ number_of_videos_in_recent_days: number; // unused
51
+ turnons: string; // unused
52
+ video_thumb_urls: IThumbUrls;
53
+ parameters: IParameterModel[]
54
+ }
@@ -0,0 +1,27 @@
1
+ import { IThumbUrls } from '../thumbs-urls';
2
+ import { EPlaylistType } from '../../runtime';
3
+
4
+ export interface IRawPlaylistCard {
5
+ guid: string; // unused
6
+ created: number;
7
+ updated: number; // unused
8
+ id: string;
9
+ name: string;
10
+ identity_guid: string; // unused
11
+ username: string;
12
+ playlist_type: EPlaylistType;
13
+ niche: string; // unused
14
+ domain: string; // unused
15
+ thumbs: {
16
+ video_md5: string; // unused
17
+ thumb_num: number; // unused
18
+ urls: IThumbUrls;
19
+ }[];
20
+ videos_count: number;
21
+ first_video_id: string;
22
+ search_tags: string[];
23
+ views: number;
24
+ likes: number;
25
+ dislikes: number;
26
+ available_videos: number; // unused
27
+ }
@@ -0,0 +1,29 @@
1
+ import { IThumbUrls } from '../thumbs-urls';
2
+ import { EPlaylistType } from '../../runtime';
3
+
4
+ export interface IPlaylistThumb {
5
+ video_md5: string;
6
+ thumb_num: number;
7
+ urls: IThumbUrls;
8
+ }
9
+
10
+ export interface IRawPlaylistData {
11
+ guid: string; // unused
12
+ created: number; // unused
13
+ updated: number; // ✅ used → <FInfoChips :updated="playlistsData.updated" />
14
+ id: string; // ✅ used → :playlist-id="playlistsData.id", link to `/playlists/${id}`
15
+ name: string; // ✅ used → title, heading, dropdown alignment
16
+ identity_guid: string; // unused
17
+ username: string; // ✅ used → <p class="playlist__user-name">{{ playlistsData.username }}</p>
18
+ playlist_type: EPlaylistType; // ✅ used → v-if="playlistsData.playlistType === 'private'"
19
+ niche: string; // unused
20
+ domain: string; // unused
21
+ thumbs: IPlaylistThumb[]; // unused
22
+ videos_count: number; // ✅ used → <FInfoChips :videos-count="..." />
23
+ first_video_id: string; // ✅ used → <FLink :to="`/playlists/${id}/${firstVideoId}`" />
24
+ search_tags: string[]; // ✅ used → searchTags computed
25
+ views: number; // ✅ used → <FInfoChips :views="..." />
26
+ likes: number; // ✅ used (but assigned as **dislikes**)
27
+ dislikes: number; // ✅ used (but assigned as **likes**)
28
+ available_videos: number; // unused
29
+ }
@@ -0,0 +1,24 @@
1
+ import { EPlaylistType } from '../../runtime';
2
+
3
+ export interface IRawPlaylistsUser {
4
+ guid: string;
5
+ updated: number;
6
+ created: number;
7
+ id: string;
8
+ name: string;
9
+ identity: string;
10
+ username: string;
11
+ playlistType: EPlaylistType;
12
+ niche: string;
13
+ domain: string;
14
+ videoCount: number;
15
+ thumbs: string[];
16
+ availableVideos: number;
17
+ stat: {
18
+ likes: number;
19
+ dislikes: number;
20
+ views: number;
21
+ };
22
+ hasCurrentVideo: boolean;
23
+ firstVideoId: string;
24
+ }
@@ -0,0 +1,18 @@
1
+ export interface IRawPlaylistVideo {
2
+ guid: string;
3
+ updated: number;
4
+ created: number;
5
+ niche: string;
6
+ domain: string;
7
+ playlistId: string;
8
+ videoGuid: string;
9
+ videoId: string;
10
+ name: string;
11
+ videoMd5: string;
12
+ thumbNum: number;
13
+ sOrder: number;
14
+ thumb: string;
15
+ duration: number;
16
+ isDeleted: boolean;
17
+ deletedAt: string | null;
18
+ }
@@ -0,0 +1,22 @@
1
+ export interface IRawProfileData {
2
+ username: string; // ✅ used (в <p class="profile__title"> и form.name)
3
+ email: string; // ✅ used (form.email)
4
+ verified_email: boolean; // unused
5
+ avatar: string; // ✅ used (form.avatar)
6
+ identityId: string; // unused
7
+ source: string; // unused
8
+ presentationPhoto: string; // unused
9
+ presentationVideo: string; // unused
10
+ country: string | null; // ✅ used (formCountry init)
11
+ city: string; // ✅ used (form.city)
12
+ name: string; // unused (form.name использует username)
13
+ birthday: number; // ✅ used (form.birthday, and display via fromUnix)
14
+ languages: string[]; // unused
15
+ fetishes: string[] | null; // unused
16
+ gender: string | null; // ✅ used (formGender init)
17
+ orientation: string | null; // unused
18
+ interestedInGender: string | null; // unused
19
+ interestedInOrientation: string | null; // unused
20
+ blocked: boolean; // unused
21
+ blockingReason: string; // unused
22
+ }
@@ -0,0 +1,78 @@
1
+ import { IThumbUrls } from '../thumbs-urls';
2
+ import { ICategoryCard } from '../category-short';
3
+
4
+ interface IVideoAction {
5
+ duration: number;
6
+ title: string;
7
+ }
8
+
9
+ interface IChannelVideo {
10
+ adv_link: string;
11
+ adv_text: string;
12
+ allow_ads: boolean;
13
+ avatar_md5: string;
14
+ avatar_url: string;
15
+ description: string;
16
+ desktop_banner_image_url: string;
17
+ desktop_banner_md5: string;
18
+ desktop_banner_url: string;
19
+ guid: string;
20
+ is_network: boolean;
21
+ mobile_banner_image_url: string;
22
+ mobile_banner_md5: string;
23
+ mobile_banner_url: string;
24
+ name: string;
25
+ player_link: string;
26
+ player_text: string;
27
+ tags: string[];
28
+ thumb_number: number;
29
+ updated: number;
30
+ url: string;
31
+ video_guid: string;
32
+ video_md5: string;
33
+ video_thumb_urls: IThumbUrls;
34
+ videos_count: number;
35
+ }
36
+
37
+ export interface IRawVideoCard {
38
+ guid: string;
39
+ md5: string; // unused
40
+ quality: string;
41
+ orientation: string; // unused
42
+ duration: number;
43
+ created: number; // unused
44
+ is_hd: boolean; // unused
45
+ title: string;
46
+ description: string; // unused
47
+ views: number;
48
+ likes: number; // unused
49
+ dislikes: number; // unused
50
+ popularity: number; // unused
51
+ id: string;
52
+ tags: string[];
53
+ models: null; // unused
54
+ categories: ICategoryCard[]; // unused
55
+ actions: IVideoAction[]; // unused
56
+ primary_thumb_rank: number; // unused
57
+ is_new: boolean;
58
+ thumb_number: number; // unused
59
+ is_edited: boolean; // unused
60
+ fake_user_name: string; // unused
61
+ referer_phrases: null; // unused
62
+ is_canonical: boolean; // unused
63
+ custom_thumb_md5: string; // unused
64
+ channel: IChannelVideo;
65
+ uploader: Record<string, never>; // unused
66
+ is_deleted: boolean; // unused
67
+ url: string;
68
+ has_reels: boolean; // unused
69
+ cdn_preview_domain: string; // unused
70
+ cdn_thumbs_domain: string; // unused
71
+ cdn_video_domain: string; // unused
72
+ preview_url: string;
73
+ video_url: string; // unused
74
+ thumb_urls: IThumbUrls;
75
+ reels_url: string; // unused
76
+ vtt_url: string; // unused
77
+ vtt_sprite_url: string; // unused
78
+ }