From 8f685f667bfcedd4b7c59535c9e00da5b159e7ee Mon Sep 17 00:00:00 2001 From: lunaticbum <> Date: Wed, 28 Aug 2024 19:17:54 +0900 Subject: [PATCH] ... --- .../rasel/lunar/launcher/home/LauncherHome.kt | 106 +- .../rasel/lunar/launcher/todos/YoutubeData.kt | 1669 +++++++++++++++++ 2 files changed, 1734 insertions(+), 41 deletions(-) create mode 100644 app/src/main/kotlin/rasel/lunar/launcher/todos/YoutubeData.kt diff --git a/app/src/main/kotlin/rasel/lunar/launcher/home/LauncherHome.kt b/app/src/main/kotlin/rasel/lunar/launcher/home/LauncherHome.kt index 69e052c..ecb5ec6 100644 --- a/app/src/main/kotlin/rasel/lunar/launcher/home/LauncherHome.kt +++ b/app/src/main/kotlin/rasel/lunar/launcher/home/LauncherHome.kt @@ -79,6 +79,7 @@ import rasel.lunar.launcher.home.weather.WeatherExecutor import rasel.lunar.launcher.qaccess.QuickAccess import rasel.lunar.launcher.settings.SettingsActivity import rasel.lunar.launcher.todos.MissedCallsAdapter +import rasel.lunar.launcher.todos.Root import rasel.lunar.launcher.todos.SmsLogsAdapter import rasel.lunar.launcher.utils.BLog import rasel.lunar.launcher.utils.MissedCallGetter @@ -606,50 +607,73 @@ internal class LauncherHome : Fragment() { var tempJSONObject : JSONObject? = null JSONObject(StringEscapeUtils.unescapeEcmaScript(ytInitialData)).apply{ tempJSONObject = this - }.keys().forEach { - if (it.equals("contents")) { - var child = tempJSONObject?.getJSONObject(it) - if(child?.length() == 1 && child?.has("singleColumnBrowseResultsRenderer") == true) { - BLog.LOGE("(singleColumnBrowseResultsRenderer >> ${child}") - var singleColumnBrowseResultsRenderer = child?.getJSONObject("singleColumnBrowseResultsRenderer") - if (singleColumnBrowseResultsRenderer?.has("tabs") == true) { - var tabs : JSONArray? = singleColumnBrowseResultsRenderer?.getJSONArray("tabs") - BLog.LOGE("(tabs >>>> ${tabs}") - for ( i in 0..<(tabs?.length() ?: 0)) { - var tabsChild = tabs?.getJSONObject(i) - BLog.LOGE("tabsChild >> ${tabsChild}") - if(tabsChild?.has("tabRenderer") == true) { - var tabRenderer = tabsChild?.getJSONObject("tabRenderer") - BLog.LOGE("tabRenderer >> ${tabRenderer}") - tabRenderer?.keys()?.forEach { - // BLog.LOGE("tabRenderer in key >> ${it}") - if (tabRenderer?.get(it) is String) { - BLog.LOGE("tabRenderer String in $it >> ${tabRenderer?.get(it)}") - } - else if (tabRenderer?.get(it) is JSONObject) { - var obj = tabRenderer?.getJSONObject(it) - BLog.LOGE("tabRenderer child JSONObject in $it >> ${obj}") - var pkey = it - obj?.keys()?.forEach { - jsonObjLog(pkey,it,obj) - } - } - else if (tabRenderer?.get(it) is JSONArray) { - BLog.LOGE("tabRenderer JSONArray in $it >> ${tabRenderer?.get(it)}") - } else { - BLog.LOGE("tabRenderer else in $it >> ${tabRenderer?.get(it)}") - } - } - } - } - } - } else { - child?.keys()?.forEach { childKey -> - BLog.LOGE("ytInitialData >>> ${it} >>>> ${childKey}") - } + BLog.LOGE("tempJSONObject.toString() >>> ${tempJSONObject.toString()}") + val aRoot = Gson().fromJson(tempJSONObject.toString(), Root::class.java) + BLog.LOGE("aRoot >>> ${aRoot}") + BLog.LOGE("aRoot?.responseContext >>> ${aRoot.responseContext}") + BLog.LOGE("aRoot?.header ${aRoot?.header}") + BLog.LOGE("aRoot?.topbar ${aRoot?.topbar}") + BLog.LOGE("aRoot?.metadata ${aRoot?.metadata}") + BLog.LOGE("aRoot?.contents? >>> ${aRoot?.contents}") + BLog.LOGE("aRoot?.contents?.twoColumnBrowseResultsRenderer >>> ${aRoot?.contents?.twoColumnBrowseResultsRenderer}") + BLog.LOGE("aRoot?.contents?.twoColumnBrowseResultsRenderer.tabs >>> ${aRoot?.contents?.twoColumnBrowseResultsRenderer?.tabs}") + BLog.LOGE("aRoot?.microformat? >>> ${aRoot?.microformat}") + BLog.LOGE("aRoot?.onResponseReceivedActions? >>> ${aRoot?.onResponseReceivedActions}") + aRoot?.contents?.apply { + BLog.LOGE("aRoot?.contents? >>> ${this}") + BLog.LOGE("aRoot?.contents?.twoColumnBrowseResultsRenderer >>> ${twoColumnBrowseResultsRenderer}") + twoColumnBrowseResultsRenderer?.tabs?.forEach { + BLog.LOGE("it.sectionListRenderer?.contents? >>> ${it}") + BLog.LOGE("it.tabRenderer ${it.tabRenderer}") + BLog.LOGE("it.expandableTabRenderer ${it.expandableTabRenderer}") } + } } +// .keys().forEach { +// if (it.equals("contents")) { +// var child = tempJSONObject?.getJSONObject(it) +// if(child?.length() == 1 && child?.has("singleColumnBrowseResultsRenderer") == true) { +// BLog.LOGE("(singleColumnBrowseResultsRenderer >> ${child}") +// var singleColumnBrowseResultsRenderer = child?.getJSONObject("singleColumnBrowseResultsRenderer") +// if (singleColumnBrowseResultsRenderer?.has("tabs") == true) { +// var tabs : JSONArray? = singleColumnBrowseResultsRenderer?.getJSONArray("tabs") +// BLog.LOGE("(tabs >>>> ${tabs}") +// for ( i in 0..<(tabs?.length() ?: 0)) { +// var tabsChild = tabs?.getJSONObject(i) +// BLog.LOGE("tabsChild >> ${tabsChild}") +// if(tabsChild?.has("tabRenderer") == true) { +// var tabRenderer = tabsChild?.getJSONObject("tabRenderer") +// BLog.LOGE("tabRenderer >> ${tabRenderer}") +// tabRenderer?.keys()?.forEach { +// // BLog.LOGE("tabRenderer in key >> ${it}") +// if (tabRenderer?.get(it) is String) { +// BLog.LOGE("tabRenderer String in $it >> ${tabRenderer?.get(it)}") +// } +// else if (tabRenderer?.get(it) is JSONObject) { +// var obj = tabRenderer?.getJSONObject(it) +// BLog.LOGE("tabRenderer child JSONObject in $it >> ${obj}") +// var pkey = it +// obj?.keys()?.forEach { +// jsonObjLog(pkey,it,obj) +// } +// } +// else if (tabRenderer?.get(it) is JSONArray) { +// BLog.LOGE("tabRenderer JSONArray in $it >> ${tabRenderer?.get(it)}") +// } else { +// BLog.LOGE("tabRenderer else in $it >> ${tabRenderer?.get(it)}") +// } +// } +// } +// } +// } +// } else { +// child?.keys()?.forEach { childKey -> +// BLog.LOGE("ytInitialData >>> ${it} >>>> ${childKey}") +// } +// } +// } +// } } } // ytChannel(doc.html()) diff --git a/app/src/main/kotlin/rasel/lunar/launcher/todos/YoutubeData.kt b/app/src/main/kotlin/rasel/lunar/launcher/todos/YoutubeData.kt new file mode 100644 index 0000000..9fdd434 --- /dev/null +++ b/app/src/main/kotlin/rasel/lunar/launcher/todos/YoutubeData.kt @@ -0,0 +1,1669 @@ +package rasel.lunar.launcher.todos + + +class YoutubeData { +} + +// import com.fasterxml.jackson.databind.ObjectMapper; // version 2.11.1 +// import com.fasterxml.jackson.annotation.JsonProperty; // version 2.11.1 +/* ObjectMapper om = new ObjectMapper(); +Root root = om.readValue(myJsonString, Root.class); */ +class A11ySkipNavigationButton { + var buttonRenderer: ButtonRenderer? = null +} + +class Accessibility { + var accessibilityData: AccessibilityData? = null + var label: String? = null +} + +class AccessibilityContext { + var label: String? = null +} + +class AccessibilityData { + var label: String? = null + var accessibilityData: AccessibilityData? = null +} + +class Action { + var clickTrackingParams: String? = null + var addToPlaylistCommand: AddToPlaylistCommand? = null + var action: String? = null + var removedVideoId: String? = null + var openPopupAction: OpenPopupAction? = null + var subscribeButtonViewModel: SubscribeButtonViewModel? = null + var buttonViewModel: ButtonViewModel? = null + var signalAction: SignalAction? = null + var addedVideoId: String? = null + var flexibleActionsViewModel: FlexibleActionsViewModel? = null +} + +class ActionsRow { + var actions: ArrayList? = null +} + +class AdditionalData { + var userFeedbackEndpointProductSpecificValueData: UserFeedbackEndpointProductSpecificValueData? = + null +} + +class AddToPlaylistCommand { + var openMiniplayer: Boolean = false + var videoId: String? = null + var listType: String? = null + var onCreateListCommand: OnCreateListCommand? = null + var videoIds: ArrayList? = null +} + +class AddToPlaylistServiceEndpoint { + var videoId: String? = null +} + +class AttachmentRun { + var startIndex: Int = 0 + var length: Int = 0 + var element: Element? = null + var alignment: String? = null +} + +class Attribution { + var attributionViewModel: AttributionViewModel? = null +} + +class AttributionViewModel { + var text: Text? = null + var suffix: Suffix? = null + var rendererContext: RendererContext? = null +} + +class Avatar { + var decoratedAvatarViewModel: DecoratedAvatarViewModel? = null + var avatarViewModel: AvatarViewModel? = null + var thumbnails: ArrayList? = null + var accessibility: Accessibility? = null +} + +class AvatarViewModel { + var image: Image? = null + var avatarImageSize: String? = null + var loggingDirectives: LoggingDirectives? = null +} + +class BackButton { + var buttonRenderer: ButtonRenderer? = null +} + +class Badge { + var metadataBadgeRenderer: MetadataBadgeRenderer? = null +} + +class Banner { + var imageBannerViewModel: ImageBannerViewModel? = null +} + +class BellAccessibilityData { + var offLabel: String? = null + var allLabel: String? = null + var occasionalLabel: String? = null + var disabledLabel: String? = null +} + +class BorderImageProcessor { + var circular: Boolean = false +} + +class BrowseEndpoint { + var browseId: String? = null + var params: String? = null + var canonicalBaseUrl: String? = null +} + +class Button { + var menuRenderer: MenuRenderer? = null +} + +class ButtonRenderer { + var style: String? = null + var size: String? = null + var isDisabled: Boolean = false + var icon: Icon? = null + var accessibility: Accessibility? = null + var trackingParams: String? = null + var accessibilityData: AccessibilityData? = null + var command: Command? = null + var text: Text? = null + var serviceEndpoint: ServiceEndpoint? = null + var tooltip: String? = null + var navigationEndpoint: NavigationEndpoint? = null +} + +class ButtonStyle { + var unsubscribedStateStyle: String? = null + var subscribedStateStyle: String? = null + var buttonSize: String? = null +} + +class ButtonText { + var runs: ArrayList? = null +} + +class ButtonViewModel { + var title: String? = null + var onTap: OnTap? = null + var accessibilityText: String? = null + var style: String? = null + var trackingParams: String? = null + var isFullWidth: Boolean = false + var type: String? = null + var buttonSize: String? = null + var state: String? = null + var onVisible: OnVisible? = null + var targetId: String? = null + var loggingDirectives: LoggingDirectives? = null +} + +class CancelButton { + var buttonRenderer: ButtonRenderer? = null +} + +class ChangeEngagementPanelVisibilityAction { + var targetId: String? = null + var visibility: String? = null +} + +class ChannelFeaturedContentRenderer { + var title: Title? = null + var items: ArrayList? = null +} + +class ChannelMetadataRenderer { + var title: String? = null + var description: String? = null + var rssUrl: String? = null + var channelConversionUrl: String? = null + var externalId: String? = null + var keywords: String? = null + var ownerUrls: ArrayList? = null + var avatar: Avatar? = null + var channelUrl: String? = null + var isFamilySafe: Boolean = false + var availableCountryCodes: ArrayList? = null + var androidDeepLink: String? = null + var androidAppindexingLink: String? = null + var iosAppindexingLink: String? = null + var vanityChannelUrl: String? = null +} + +class ChannelThumbnailSupportedRenderers { + var channelThumbnailWithLinkRenderer: ChannelThumbnailWithLinkRenderer? = null +} + +class ChannelThumbnailWithLinkRenderer { + var thumbnail: Thumbnail? = null + var navigationEndpoint: NavigationEndpoint? = null + var accessibility: Accessibility? = null +} + +class ClearButton { + var buttonRenderer: ButtonRenderer? = null +} + +class ClientResource { + var imageName: String? = null +} + +class ClientVeSpec { + var uiType: Int = 0 + var veCounter: Int = 0 +} + +class ColorMap { + var key: String? = null + var value: Any? = null +} + +class Command { + var clickTrackingParams: String? = null + var openPopupAction: OpenPopupAction? = null + var commandMetadata: CommandMetadata? = null + var ypcGetOffersEndpoint: YpcGetOffersEndpoint? = null + var logFlowLoggingEventCommand: LogFlowLoggingEventCommand? = null +} + +class Command10 { + var clickTrackingParams: String? = null + var commandMetadata: CommandMetadata? = null + var signalServiceEndpoint: SignalServiceEndpoint? = null + var changeEngagementPanelVisibilityAction: ChangeEngagementPanelVisibilityAction? = null +} + +class CommandContext { + var onTap: OnTap? = null +} + +class CommandExecutorCommand { + var commands: ArrayList? = null +} + +class CommandMetadata { + var webCommandMetadata: WebCommandMetadata? = null +} + +class CommandRun { + var startIndex: Int = 0 + var length: Int = 0 + var onTap: OnTap? = null +} + +class CommonConfig { + var url: String? = null +} + +class CompactLinkRenderer { + var icon: Icon? = null + var title: Title? = null + var navigationEndpoint: NavigationEndpoint? = null + var trackingParams: String? = null + var style: String? = null +} + +class Config { + var webSearchboxConfig: WebSearchboxConfig? = null +} + +class ConfirmButton { + var buttonRenderer: ButtonRenderer? = null +} + +class ConfirmDialogRenderer { + var trackingParams: String? = null + var dialogMessages: ArrayList? = null + var confirmButton: ConfirmButton? = null + var cancelButton: CancelButton? = null + var primaryIsCancel: Boolean = false +} + +class ConnectionErrorHeader { + var runs: ArrayList? = null +} + +class ConnectionErrorMicrophoneLabel { + var runs: ArrayList? = null +} + +class Content { + var sectionListRenderer: SectionListRenderer? = null + var horizontalListRenderer: HorizontalListRenderer? = null + var pageHeaderViewModel: PageHeaderViewModel? = null + var listViewModel: ListViewModel? = null +} + +class Content14 { + var itemSectionRenderer: ItemSectionRenderer? = null + var continuationItemRenderer: ContinuationItemRenderer? = null + var channelFeaturedContentRenderer: ChannelFeaturedContentRenderer? = null + var shelfRenderer: ShelfRenderer? = null + var reelShelfRenderer: ReelShelfRenderer? = null + var twoColumnBrowseResultsRenderer: TwoColumnBrowseResultsRenderer? = null +} + +class ContentMetadataViewModel { + var metadataRows: ArrayList? = null + var delimiter: String? = null + var rendererContext: RendererContext? = null +} + +class ContinuationCommand { + var token: String? = null + var request: String? = null +} + +class ContinuationEndpoint { + var clickTrackingParams: String? = null + var commandMetadata: CommandMetadata? = null + var continuationCommand: ContinuationCommand? = null +} + +class ContinuationItemRenderer { + var trigger: String? = null + var continuationEndpoint: ContinuationEndpoint? = null +} + +class CreatePlaylistServiceEndpoint { + var videoIds: ArrayList? = null + var params: String? = null +} + +class DecoratedAvatarViewModel { + var avatar: Avatar? = null + var a11yLabel: String? = null + var rendererContext: RendererContext? = null +} + +class Description { + var descriptionPreviewViewModel: DescriptionPreviewViewModel? = null + var content: String? = null +} + +class DescriptionPreviewViewModel { + var description: Description? = null + var maxLines: Int = 0 + var truncationText: TruncationText? = null + var alwaysShowTruncationText: Boolean = false + var rendererContext: RendererContext? = null +} + +class DescriptionSnippet { + var runs: ArrayList? = null +} + +class DesktopTopbarRenderer { + var logo: Logo? = null + var searchbox: Searchbox? = null + var trackingParams: String? = null + var countryCode: String? = null + var topbarButtons: ArrayList? = null + var hotkeyDialog: HotkeyDialog? = null + var backButton: BackButton? = null + var forwardButton: ForwardButton? = null + var a11ySkipNavigationButton: A11ySkipNavigationButton? = null + var voiceSearchButton: VoiceSearchButton? = null +} + +class DialogMessage { + var runs: ArrayList? = null +} + +class DisabledHeader { + var runs: ArrayList? = null +} + +class DisabledSubtext { + var runs: ArrayList? = null +} + +class DismissButton { + var buttonRenderer: ButtonRenderer? = null +} + +class DynamicTextViewModel { + var text: Text? = null + var maxLines: Int = 0 + var rendererContext: RendererContext? = null +} + +class Element { + var type: Type? = null + var properties: Properties? = null +} + +class Endpoint { + var clickTrackingParams: String? = null + var commandMetadata: CommandMetadata? = null + var browseEndpoint: BrowseEndpoint? = null + var showEngagementPanelEndpoint: ShowEngagementPanelEndpoint? = null +} + +class EngagementPanel { + var engagementPanelSectionListRenderer: EngagementPanelSectionListRenderer? = null +} + +class EngagementPanelPopupPresentationConfig { + var popupType: String? = null +} + +class EngagementPanelPresentationConfigs { + var engagementPanelPopupPresentationConfig: EngagementPanelPopupPresentationConfig? = null +} + +class EngagementPanelSectionListRenderer { + var header: Header? = null + var content: Content? = null + var targetId: String? = null + var identifier: Identifier? = null + var size: String? = null +} + +class EngagementPanelTitleHeaderRenderer { + var title: Title? = null + var visibilityButton: VisibilityButton? = null + var trackingParams: String? = null +} + +class EntityBatchUpdate { + var mutations: ArrayList? = null + var timestamp: Timestamp? = null +} + +class ExampleQuery1 { + var runs: ArrayList? = null +} + +class ExampleQuery2 { + var runs: ArrayList? = null +} + +class ExitButton { + var buttonRenderer: ButtonRenderer? = null +} + +class ExpandableTabRenderer { + var endpoint: Endpoint? = null + var title: String? = null + var selected: Boolean = false +} + +class FlexibleActionsViewModel { + var actionsRows: ArrayList? = null + var minimumRowHeight: Int = 0 + var rendererContext: RendererContext? = null +} + +class FlowEventMetadata { + var sponsorshipsPurchaseContext: SponsorshipsPurchaseContext? = null +} + +class ForwardButton { + var buttonRenderer: ButtonRenderer? = null +} + +class FrameworkUpdates { + var entityBatchUpdate: EntityBatchUpdate? = null +} + +class FusionSearchboxRenderer { + var icon: Icon? = null + var placeholderText: PlaceholderText? = null + var config: Config? = null + var trackingParams: String? = null + var searchEndpoint: SearchEndpoint? = null + var clearButton: ClearButton? = null +} + +class GetDownloadActionCommand { + var videoId: String? = null + var params: String? = null +} + +class GridChannelRenderer { + var channelId: String? = null + var thumbnail: Thumbnail? = null + var videoCountText: VideoCountText? = null + var subscriberCountText: SubscriberCountText? = null + var navigationEndpoint: NavigationEndpoint? = null + var title: Title? = null + var subscribeButton: SubscribeButton? = null + var trackingParams: String? = null +} + +class GridVideoRenderer { + var videoId: String? = null + var thumbnail: Thumbnail? = null + var title: Title? = null + var publishedTimeText: PublishedTimeText? = null + var navigationEndpoint: NavigationEndpoint? = null + var badges: ArrayList? = null + var ownerBadges: ArrayList? = null + var trackingParams: String? = null + var menu: Menu? = null + var thumbnailOverlays: ArrayList? = null + var viewCountText: ViewCountText? = null + var shortViewCountText: ShortViewCountText? = null + var richThumbnail: RichThumbnail? = null + var shortBylineText: ShortBylineText? = null +} + +class Header { + var engagementPanelTitleHeaderRenderer: EngagementPanelTitleHeaderRenderer? = null + var pageHeaderRenderer: PageHeaderRenderer? = null +} + +class Headline { + var simpleText: String? = null +} + +class Height { + var value: Int = 0 + var unit: String? = null +} + +class HorizontalListRenderer { + var items: ArrayList? = null + var trackingParams: String? = null + var visibleItemCount: Int = 0 + var nextButton: NextButton? = null + var previousButton: PreviousButton? = null + var collapsedItemCount: Int = 0 + var itemSizeConstraint: String? = null +} + +class HotkeyAccessibilityLabel { + var accessibilityData: AccessibilityData? = null +} + +class HotkeyDialog { + var hotkeyDialogRenderer: HotkeyDialogRenderer? = null +} + +class HotkeyDialogRenderer { + var title: Title? = null + var sections: ArrayList
? = null + var dismissButton: DismissButton? = null + var trackingParams: String? = null +} + +class HotkeyDialogSectionOptionRenderer { + var label: Label? = null + var hotkey: String? = null + var hotkeyAccessibilityLabel: HotkeyAccessibilityLabel? = null +} + +class HotkeyDialogSectionRenderer { + var title: Title? = null + var options: ArrayList