From b26cdb3d68bc0dcbf87ea583e747b8be8aadcf3b Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Tue, 25 May 2021 22:47:27 -0400 Subject: [PATCH] new story models --- .../responses/stories/Broadcast.kt | 15 +++++ .../responses/stories/PollSticker.kt | 13 +++++ .../responses/stories/QuestionSticker.kt | 12 ++++ .../responses/stories/QuizSticker.kt | 14 +++++ .../responses/stories/ReelsResponse.kt | 9 +++ .../responses/stories/ReelsTrayResponse.kt | 9 +++ .../responses/stories/SliderSticker.kt | 16 ++++++ .../repositories/responses/stories/Story.kt | 16 ++++++ .../responses/stories/StoryAppAttribution.kt | 9 +++ .../responses/stories/StoryCta.kt | 10 ++++ .../responses/stories/StoryMedia.kt | 57 +++++++++++++++++++ .../responses/stories/StorySticker.kt | 19 +++++++ .../repositories/responses/stories/Tally.kt | 11 ++++ 13 files changed, 210 insertions(+) create mode 100644 app/src/main/java/awais/instagrabber/repositories/responses/stories/Broadcast.kt create mode 100644 app/src/main/java/awais/instagrabber/repositories/responses/stories/PollSticker.kt create mode 100644 app/src/main/java/awais/instagrabber/repositories/responses/stories/QuestionSticker.kt create mode 100644 app/src/main/java/awais/instagrabber/repositories/responses/stories/QuizSticker.kt create mode 100644 app/src/main/java/awais/instagrabber/repositories/responses/stories/ReelsResponse.kt create mode 100644 app/src/main/java/awais/instagrabber/repositories/responses/stories/ReelsTrayResponse.kt create mode 100644 app/src/main/java/awais/instagrabber/repositories/responses/stories/SliderSticker.kt create mode 100644 app/src/main/java/awais/instagrabber/repositories/responses/stories/Story.kt create mode 100644 app/src/main/java/awais/instagrabber/repositories/responses/stories/StoryAppAttribution.kt create mode 100644 app/src/main/java/awais/instagrabber/repositories/responses/stories/StoryCta.kt create mode 100644 app/src/main/java/awais/instagrabber/repositories/responses/stories/StoryMedia.kt create mode 100644 app/src/main/java/awais/instagrabber/repositories/responses/stories/StorySticker.kt create mode 100644 app/src/main/java/awais/instagrabber/repositories/responses/stories/Tally.kt diff --git a/app/src/main/java/awais/instagrabber/repositories/responses/stories/Broadcast.kt b/app/src/main/java/awais/instagrabber/repositories/responses/stories/Broadcast.kt new file mode 100644 index 00000000..0037d73e --- /dev/null +++ b/app/src/main/java/awais/instagrabber/repositories/responses/stories/Broadcast.kt @@ -0,0 +1,15 @@ +package awais.instagrabber.repositories.responses.stories + +import java.io.Serializable +import awais.instagrabber.repositories.responses.User + +data class Broadcast( + val id: Long?, + val dashPlaybackUrl: String?, + val dashAbrPlaybackUrl: String?, // adaptive quality + val viewerCount: Double?, // always .0 + val muted: Boolean?, + val coverFrameUrl: String?, + val broadcastOwner: User?, + val publishedTime: Long? +) : Serializable \ No newline at end of file diff --git a/app/src/main/java/awais/instagrabber/repositories/responses/stories/PollSticker.kt b/app/src/main/java/awais/instagrabber/repositories/responses/stories/PollSticker.kt new file mode 100644 index 00000000..bf486dde --- /dev/null +++ b/app/src/main/java/awais/instagrabber/repositories/responses/stories/PollSticker.kt @@ -0,0 +1,13 @@ +package awais.instagrabber.repositories.responses.stories + +import java.io.Serializable +import awais.instagrabber.repositories.responses.Hashtag +import awais.instagrabber.repositories.responses.Location +import awais.instagrabber.repositories.responses.User + +data class PollSticker( + val pollId: Long?, + val question: String?, + val tallies: List?, + val viewerVote: Int? +) : Serializable \ No newline at end of file diff --git a/app/src/main/java/awais/instagrabber/repositories/responses/stories/QuestionSticker.kt b/app/src/main/java/awais/instagrabber/repositories/responses/stories/QuestionSticker.kt new file mode 100644 index 00000000..7b9f1bf8 --- /dev/null +++ b/app/src/main/java/awais/instagrabber/repositories/responses/stories/QuestionSticker.kt @@ -0,0 +1,12 @@ +package awais.instagrabber.repositories.responses.stories + +import java.io.Serializable +import awais.instagrabber.repositories.responses.Hashtag +import awais.instagrabber.repositories.responses.Location +import awais.instagrabber.repositories.responses.User + +data class QuestionSticker( + val questionType: String?, + val questionId: Long?, + val question: String? +) : Serializable \ No newline at end of file diff --git a/app/src/main/java/awais/instagrabber/repositories/responses/stories/QuizSticker.kt b/app/src/main/java/awais/instagrabber/repositories/responses/stories/QuizSticker.kt new file mode 100644 index 00000000..fd79ef7a --- /dev/null +++ b/app/src/main/java/awais/instagrabber/repositories/responses/stories/QuizSticker.kt @@ -0,0 +1,14 @@ +package awais.instagrabber.repositories.responses.stories + +import java.io.Serializable +import awais.instagrabber.repositories.responses.Hashtag +import awais.instagrabber.repositories.responses.Location +import awais.instagrabber.repositories.responses.User + +data class QuizSticker( + val quizId: Long?, + val question: String?, + val tallies: List?, + val viewerAnswer: Int?, + val correctAnswer: Int? +) : Serializable \ No newline at end of file diff --git a/app/src/main/java/awais/instagrabber/repositories/responses/stories/ReelsResponse.kt b/app/src/main/java/awais/instagrabber/repositories/responses/stories/ReelsResponse.kt new file mode 100644 index 00000000..7aae5e7f --- /dev/null +++ b/app/src/main/java/awais/instagrabber/repositories/responses/stories/ReelsResponse.kt @@ -0,0 +1,9 @@ +package awais.instagrabber.repositories.responses.stories + +import java.io.Serializable + +data class ReelsResponse( + val status: String?, + val reel: Story?, + val broadcast: Broadcast? +) : Serializable \ No newline at end of file diff --git a/app/src/main/java/awais/instagrabber/repositories/responses/stories/ReelsTrayResponse.kt b/app/src/main/java/awais/instagrabber/repositories/responses/stories/ReelsTrayResponse.kt new file mode 100644 index 00000000..12d7227c --- /dev/null +++ b/app/src/main/java/awais/instagrabber/repositories/responses/stories/ReelsTrayResponse.kt @@ -0,0 +1,9 @@ +package awais.instagrabber.repositories.responses.stories + +import java.io.Serializable + +data class ReelsTrayResponse( + val status: String?, + val tray: List?, + val broadcasts: List? +) : Serializable \ No newline at end of file diff --git a/app/src/main/java/awais/instagrabber/repositories/responses/stories/SliderSticker.kt b/app/src/main/java/awais/instagrabber/repositories/responses/stories/SliderSticker.kt new file mode 100644 index 00000000..6261bccf --- /dev/null +++ b/app/src/main/java/awais/instagrabber/repositories/responses/stories/SliderSticker.kt @@ -0,0 +1,16 @@ +package awais.instagrabber.repositories.responses.stories + +import java.io.Serializable +import awais.instagrabber.repositories.responses.Hashtag +import awais.instagrabber.repositories.responses.Location +import awais.instagrabber.repositories.responses.User + +data class SliderSticker( + val sliderId: Long?, + val question: String?, + val emoji: String?, + val viewerCanVote: Boolean?, + val viewerVote: Double?, + val sliderVoteAverage: Double?, + val sliderVoteCount: Int?, +) : Serializable \ No newline at end of file diff --git a/app/src/main/java/awais/instagrabber/repositories/responses/stories/Story.kt b/app/src/main/java/awais/instagrabber/repositories/responses/stories/Story.kt new file mode 100644 index 00000000..3c2312c1 --- /dev/null +++ b/app/src/main/java/awais/instagrabber/repositories/responses/stories/Story.kt @@ -0,0 +1,16 @@ +package awais.instagrabber.repositories.responses.stories + +import java.io.Serializable +import awais.instagrabber.repositories.responses.Media +import awais.instagrabber.repositories.responses.User + +data class Story( + val id: Long?, + val latestReelMedia: Long?, // = timestamp + val seen: Long?, + val user: User?, + val muted: Boolean?, + val hasBestiesMedia: Boolean?, + val mediaCount: Int?, + val items: List? // may be null +) : Serializable \ No newline at end of file diff --git a/app/src/main/java/awais/instagrabber/repositories/responses/stories/StoryAppAttribution.kt b/app/src/main/java/awais/instagrabber/repositories/responses/stories/StoryAppAttribution.kt new file mode 100644 index 00000000..6ae27957 --- /dev/null +++ b/app/src/main/java/awais/instagrabber/repositories/responses/stories/StoryAppAttribution.kt @@ -0,0 +1,9 @@ +package awais.instagrabber.repositories.responses.stories + +import java.io.Serializable + +// https://github.com/austinhuang0131/barinsta/issues/1151 +data class StoryAppAttribution( + val name: String?, // use name instead of app_action_text for button label + val contentUrl: String? +) : Serializable \ No newline at end of file diff --git a/app/src/main/java/awais/instagrabber/repositories/responses/stories/StoryCta.kt b/app/src/main/java/awais/instagrabber/repositories/responses/stories/StoryCta.kt new file mode 100644 index 00000000..7043a3ec --- /dev/null +++ b/app/src/main/java/awais/instagrabber/repositories/responses/stories/StoryCta.kt @@ -0,0 +1,10 @@ +package awais.instagrabber.repositories.responses.stories + +import java.io.Serializable +import awais.instagrabber.repositories.responses.Hashtag +import awais.instagrabber.repositories.responses.Location +import awais.instagrabber.repositories.responses.User + +data class StoryCta( + val webUri: String? +) : Serializable \ No newline at end of file diff --git a/app/src/main/java/awais/instagrabber/repositories/responses/stories/StoryMedia.kt b/app/src/main/java/awais/instagrabber/repositories/responses/stories/StoryMedia.kt new file mode 100644 index 00000000..68f525bf --- /dev/null +++ b/app/src/main/java/awais/instagrabber/repositories/responses/stories/StoryMedia.kt @@ -0,0 +1,57 @@ +package awais.instagrabber.repositories.responses.stories + +import awais.instagrabber.models.enums.MediaItemType +import awais.instagrabber.utils.TextUtils +import awais.instagrabber.repositories.responses.ImageVersions2 +import awais.instagrabber.repositories.responses.User +import awais.instagrabber.repositories.responses.VideoVersion +import java.io.Serializable +import java.util.* + +data class StoryMedia( + // inherited from Media + val pk: String? = null, + val id: String? = null, + val takenAt: Long = -1, + val user: User? = null, + val canReshare: Boolean = false, + val imageVersions2: ImageVersions2? = null, + val originalWidth: Int = 0, + val originalHeight: Int = 0, + val mediaType: MediaItemType? = null, + val isReelMedia: Boolean = false, + val videoVersions: List? = null, + val hasAudio: Boolean = false, + val videoDuration: Double = 0.0, + val viewCount: Long = 0, + val title: String? = null, + // story-specific + val canReply: Boolean = false, + val linkText: String? = null, // required for story_cta + // stickers + val reelMentions: List? = null, + val storyHashtags: List? = null, + val storyLocations: List? = null, + val storyFeedMedia: List? = null, + val storyPolls: List? = null, + val storyQuestions: List? = null, + val storyQuizs: List? = null, + val storyCta: List? = null, + val storySliders: List? = null, + // spotify/soundcloud button, not a sticker + val storyAppAttribution: StoryAppAttribution? = null +) : Serializable { + private var dateString: String? = null + + // TODO use extension once all usages are converted to kotlin + // val date: String by lazy { + // if (takenAt <= 0) "" else Utils.datetimeParser.format(Date(takenAt * 1000L)) + // } + val date: String + get() { + if (takenAt <= 0) return "" + if (dateString != null) return dateString ?: "" + dateString = TextUtils.epochSecondToString(takenAt) + return dateString ?: "" + } +} \ No newline at end of file diff --git a/app/src/main/java/awais/instagrabber/repositories/responses/stories/StorySticker.kt b/app/src/main/java/awais/instagrabber/repositories/responses/stories/StorySticker.kt new file mode 100644 index 00000000..7f40f94a --- /dev/null +++ b/app/src/main/java/awais/instagrabber/repositories/responses/stories/StorySticker.kt @@ -0,0 +1,19 @@ +package awais.instagrabber.repositories.responses.stories + +import java.io.Serializable +import awais.instagrabber.repositories.responses.Hashtag +import awais.instagrabber.repositories.responses.Location +import awais.instagrabber.repositories.responses.User + +data class StorySticker( + // only ONE object should exist + val user: User?, // reel_mentions + val hashtag: Hashtag?, // story_hashtags + val location: Location?, // story_locations + val mediaId: String?, // story_feed_media + val pollSticker: PollSticker?, // story_polls + val questionSticker: QuestionSticker?, // story_questions + val quizSticker: QuizSticker?, // story_quizs + val links: StoryCta?, // story_cta, requires link_text from the story + val sliderSticker: SliderSticker? // story_sliders +) : Serializable \ No newline at end of file diff --git a/app/src/main/java/awais/instagrabber/repositories/responses/stories/Tally.kt b/app/src/main/java/awais/instagrabber/repositories/responses/stories/Tally.kt new file mode 100644 index 00000000..87c8c960 --- /dev/null +++ b/app/src/main/java/awais/instagrabber/repositories/responses/stories/Tally.kt @@ -0,0 +1,11 @@ +package awais.instagrabber.repositories.responses.stories + +import java.io.Serializable +import awais.instagrabber.repositories.responses.Hashtag +import awais.instagrabber.repositories.responses.Location +import awais.instagrabber.repositories.responses.User + +data class Tally( + val text: String?, + val count: Int? +) : Serializable \ No newline at end of file