Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: yuliskov/SmartTube
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 25.29
Choose a base ref
...
head repository: yuliskov/SmartTube
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: master
Choose a head ref

Commits on Jan 3, 2025

  1. upd

    yuliskov committed Jan 3, 2025
    Copy the full SHA
    a20cf4c View commit details
  2. Copy the full SHA
    9837f94 View commit details
  3. player: error fixer upd

    yuliskov committed Jan 3, 2025
    Copy the full SHA
    7e0320f View commit details
  4. channel groups big refactor

    yuliskov committed Jan 3, 2025
    Copy the full SHA
    45952f9 View commit details
  5. Copy the full SHA
    cf86303 View commit details

Commits on Jan 4, 2025

  1. bump to 25.30

    yuliskov committed Jan 4, 2025
    Copy the full SHA
    1a34cc6 View commit details
  2. global volume fix?

    yuliskov committed Jan 4, 2025
    Copy the full SHA
    c5e1286 View commit details
  3. revert global volume fix?

    yuliskov committed Jan 4, 2025
    Copy the full SHA
    6d6b230 View commit details

Commits on Jan 5, 2025

  1. empty comments fix

    yuliskov committed Jan 5, 2025
    Copy the full SHA
    01c9195 View commit details
  2. upd

    yuliskov committed Jan 5, 2025
    Copy the full SHA
    208f5ce View commit details
  3. Copy the full SHA
    999af7a View commit details
  4. Copy the full SHA
    6703fdf View commit details
  5. Copy the full SHA
    3f7bb78 View commit details
  6. Copy the full SHA
    ce1ce05 View commit details
  7. Copy the full SHA
    2b5c69b View commit details
  8. Copy the full SHA
    c6b4927 View commit details

Commits on Jan 6, 2025

  1. bump to 25.36

    yuliskov committed Jan 6, 2025
    Copy the full SHA
    f44c146 View commit details
  2. Copy the full SHA
    1fa827d View commit details
  3. volume util upd

    yuliskov committed Jan 6, 2025
    Copy the full SHA
    86041ea View commit details
  4. upd

    yuliskov committed Jan 6, 2025
    Copy the full SHA
    765636b View commit details
  5. Copy the full SHA
    829340b View commit details
  6. Copy the full SHA
    7ba7c39 View commit details
  7. bump to 25.37

    yuliskov committed Jan 6, 2025
    Copy the full SHA
    f6da2a9 View commit details
  8. casting: volume change upd

    yuliskov committed Jan 6, 2025
    Copy the full SHA
    3f39841 View commit details
  9. bump to 25.38

    yuliskov committed Jan 6, 2025
    Copy the full SHA
    f4ee8c0 View commit details
  10. Copy the full SHA
    2d5e00e View commit details
  11. Copy the full SHA
    39ffacf View commit details

Commits on Jan 7, 2025

  1. Copy the full SHA
    06a3845 View commit details
  2. npe fixes

    yuliskov committed Jan 7, 2025
    Copy the full SHA
    838b3fd View commit details
  3. bump to 25.39

    yuliskov committed Jan 7, 2025
    Copy the full SHA
    15a4896 View commit details
  4. playback: error fixer upd

    yuliskov committed Jan 7, 2025
    Copy the full SHA
    50e8bd3 View commit details
  5. bump to 25.40

    yuliskov committed Jan 7, 2025
    Copy the full SHA
    4d4bc89 View commit details
  6. Copy the full SHA
    5bf2f1e View commit details
  7. Copy the full SHA
    49920cd View commit details
  8. bump to 25.41

    yuliskov committed Jan 7, 2025
    Copy the full SHA
    aff928c View commit details
  9. Update strings.xml

    ChechuGamerXD authored Jan 7, 2025
    Copy the full SHA
    78c53e9 View commit details

Commits on Jan 8, 2025

  1. Copy the full SHA
    58847ea View commit details
  2. upd

    yuliskov committed Jan 8, 2025
    Copy the full SHA
    10bc306 View commit details
  3. upd

    yuliskov committed Jan 8, 2025
    Copy the full SHA
    53e6d5b View commit details
  4. upd

    yuliskov committed Jan 8, 2025
    Copy the full SHA
    725cb00 View commit details
  5. upd

    yuliskov committed Jan 8, 2025
    Copy the full SHA
    871d90d View commit details
  6. bump to 25.42

    yuliskov committed Jan 8, 2025
    Copy the full SHA
    099fbf6 View commit details
  7. glide error images fix

    yuliskov committed Jan 8, 2025
    Copy the full SHA
    d248f8e View commit details
  8. Update strings.xml

    mpama2016 authored Jan 8, 2025
    Copy the full SHA
    9d5e6a3 View commit details
  9. upd

    yuliskov committed Jan 8, 2025
    Copy the full SHA
    1445e2c View commit details
  10. glide error images fix

    yuliskov committed Jan 8, 2025
    Copy the full SHA
    708a237 View commit details

Commits on Jan 9, 2025

  1. upd

    yuliskov committed Jan 9, 2025
    Copy the full SHA
    fa13d31 View commit details

Commits on Jan 10, 2025

  1. Add new Slovak strings

    stankolubomir committed Jan 10, 2025
    Copy the full SHA
    4b0d748 View commit details
  2. Update sq translation

    F1219R authored Jan 10, 2025
    Copy the full SHA
    060342f View commit details
  3. Copy the full SHA
    f5d71b2 View commit details
Showing with 3,563 additions and 1,480 deletions.
  1. +1 −1 MediaServiceCore
  2. +17 −13 README.md
  3. +1 −1 SharedModules
  4. +2 −2 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/data/SampleMediaItem.java
  5. +33 −15 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/data/Video.java
  6. +3 −3 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/data/VideoGroup.java
  7. +1 −1 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/errors/CategoryEmptyError.java
  8. +6 −1 ...src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/BasePlayerController.java
  9. +3 −3 ...in/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controllers/ChatController.java
  10. +5 −5 ...ava/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controllers/CommentsController.java
  11. +25 −12 ...com/liskovsoft/smartyoutubetv2/common/app/models/playback/controllers/ContentBlockController.java
  12. +18 −6 ...ava/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controllers/HQDialogController.java
  13. +21 −17 ...ava/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controllers/PlayerUIController.java
  14. +93 −33 .../java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controllers/RemoteController.java
  15. +34 −36 .../com/liskovsoft/smartyoutubetv2/common/app/models/playback/controllers/SuggestionsController.java
  16. +59 −17 .../com/liskovsoft/smartyoutubetv2/common/app/models/playback/controllers/VideoLoaderController.java
  17. +16 −11 ...a/com/liskovsoft/smartyoutubetv2/common/app/models/playback/controllers/VideoStateController.java
  18. +1 −0 ...com/liskovsoft/smartyoutubetv2/common/app/models/playback/listener/PlayerEngineEventListener.java
  19. +1 −1 .../java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/listener/PlayerEventListener.java
  20. +14 −11 ...ain/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/service/VideoStateService.java
  21. +2 −2 ...n/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/ui/AbstractCommentsReceiver.java
  22. +1 −1 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/ui/ChatReceiver.java
  23. +1 −1 .../src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/ui/ChatReceiverImpl.java
  24. +2 −2 .../src/main/java/com/liskovsoft/smartyoutubetv2/common/app/models/playback/ui/CommentsReceiver.java
  25. +2 −2 ...n/java/com/liskovsoft/smartyoutubetv2/common/app/models/search/MediaServiceSearchTagProvider.java
  26. +1 −1 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/presenters/AddDevicePresenter.java
  27. +39 −42 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/presenters/BrowsePresenter.java
  28. +4 −5 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/presenters/ChannelPresenter.java
  29. +6 −6 ...n/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/presenters/ChannelUploadsPresenter.java
  30. +7 −3 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/presenters/PlaybackPresenter.java
  31. +4 −4 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/presenters/SearchPresenter.java
  32. +14 −29 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/presenters/SplashPresenter.java
  33. +1 −1 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/presenters/YTSignInPresenter.java
  34. +3 −7 .../java/com/liskovsoft/smartyoutubetv2/common/app/presenters/dialogs/AccountSelectionPresenter.java
  35. +53 −36 ...ain/java/com/liskovsoft/smartyoutubetv2/common/app/presenters/dialogs/menu/BaseMenuPresenter.java
  36. +3 −3 ...om/liskovsoft/smartyoutubetv2/common/app/presenters/dialogs/menu/ChannelUploadsMenuPresenter.java
  37. +3 −5 .../java/com/liskovsoft/smartyoutubetv2/common/app/presenters/dialogs/menu/SectionMenuPresenter.java
  38. +14 −62 ...in/java/com/liskovsoft/smartyoutubetv2/common/app/presenters/dialogs/menu/VideoMenuPresenter.java
  39. +12 −58 ...outubetv2/common/app/presenters/dialogs/menu/providers/channelgroup/ChannelGroupMenuProvider.java
  40. +16 −24 ...tubetv2/common/app/presenters/dialogs/menu/providers/channelgroup/ChannelGroupServiceWrapper.java
  41. +2 −2 ...youtubetv2/common/app/presenters/dialogs/menu/providers/channelgroup/RemoveGroupMenuProvider.java
  42. +3 −3 ...youtubetv2/common/app/presenters/dialogs/menu/providers/channelgroup/RenameGroupMenuProvider.java
  43. +4 −2 ...on/src/main/java/com/liskovsoft/smartyoutubetv2/common/app/presenters/service/SidebarService.java
  44. +1 −2 .../java/com/liskovsoft/smartyoutubetv2/common/app/presenters/settings/AccountSettingsPresenter.java
  45. +15 −5 ...n/java/com/liskovsoft/smartyoutubetv2/common/app/presenters/settings/BackupSettingsPresenter.java
  46. +4 −0 .../com/liskovsoft/smartyoutubetv2/common/app/presenters/settings/ContentBlockSettingsPresenter.java
  47. +58 −54 .../java/com/liskovsoft/smartyoutubetv2/common/app/presenters/settings/GeneralSettingsPresenter.java
  48. +46 −25 ...n/java/com/liskovsoft/smartyoutubetv2/common/app/presenters/settings/PlayerSettingsPresenter.java
  49. +2 −2 ...com/liskovsoft/smartyoutubetv2/common/app/presenters/settings/RemoteControlSettingsPresenter.java
  50. +17 −4 ...java/com/liskovsoft/smartyoutubetv2/common/app/presenters/settings/SubtitleSettingsPresenter.java
  51. +0 −12 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/exoplayer/ExoMediaSourceFactory.java
  52. +3 −3 ...src/main/java/com/liskovsoft/smartyoutubetv2/common/exoplayer/controller/ExoPlayerController.java
  53. +14 −0 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/exoplayer/other/DebugInfoManager.java
  54. +10 −3 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/exoplayer/other/ExoPlayerInitializer.java
  55. +10 −1 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/exoplayer/selector/track/AudioTrack.java
  56. +1 −1 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/exoplayer/selector/track/MediaTrack.java
  57. +29 −9 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/exoplayer/selector/track/VideoTrack.java
  58. +3 −3 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/misc/DeArrowProcessor.java
  59. +6 −9 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/misc/GDriveBackupManager.java
  60. +3 −3 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/misc/GDriveBackupWorker.java
  61. +16 −16 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/misc/MediaServiceManager.java
  62. +3 −2 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/misc/MotherActivity.java
  63. +3 −3 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/misc/StreamReminderService.java
  64. +1 −1 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/prefs/AccountsData.java
  65. +1 −3 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/prefs/AppPrefs.java
  66. +13 −2 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/prefs/ContentBlockData.java
  67. +1 −95 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/prefs/GeneralData.java
  68. +4 −4 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/prefs/MainUIData.java
  69. +2 −3 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/prefs/PlayerData.java
  70. +25 −14 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/prefs/PlayerTweaksData.java
  71. +27 −3 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/prefs/RemoteControlData.java
  72. +3 −3 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/prefs/common/DataChangeBase.java
  73. +2 −3 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/prefs/common/DataSaverBase.java
  74. +143 −51 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/utils/AppDialogUtil.java
  75. +13 −0 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/utils/SimpleEditDialog.java
  76. +129 −45 common/src/main/java/com/liskovsoft/smartyoutubetv2/common/utils/Utils.java
  77. BIN common/src/main/res/drawable-nodpi/card_placeholder.png
  78. BIN common/src/main/res/drawable-nodpi/icon_live.png
  79. +6 −2 common/src/main/res/values-cs/strings.xml
  80. +444 −344 common/src/main/res/values-da/strings.xml
  81. +3 −1 common/src/main/res/values-de/strings.xml
  82. +16 −11 common/src/main/res/values-es/strings.xml
  83. +695 −0 common/src/main/res/values-fa-rIR/strings.xml
  84. +6 −0 common/src/main/res/values-fi/strings.xml
  85. +8 −0 common/src/main/res/values-gl-rES/strings.xml
  86. +2 −1 common/src/main/res/values-it/strings.xml
  87. +5 −0 common/src/main/res/values-ko/strings.xml
  88. +6 −0 common/src/main/res/values-nl/strings.xml
  89. +94 −67 common/src/main/res/values-pl/strings.xml
  90. +5 −1 common/src/main/res/values-ru/strings.xml
  91. +7 −1 common/src/main/res/values-sk/strings.xml
  92. +5 −0 common/src/main/res/values-sq/strings.xml
  93. +6 −0 common/src/main/res/values-tr/strings.xml
  94. +5 −1 common/src/main/res/values-uk/strings.xml
  95. +4 −0 common/src/main/res/values-vi/strings.xml
  96. +1 −1 common/src/main/res/values/colors.xml
  97. +5 −3 common/src/main/res/values/donations.xml
  98. +5 −1 common/src/main/res/values/strings.xml
  99. +695 −0 common/src/main/res/volume-fa/strings.xml
  100. +5 −0 leanback-1.0.0/src/main/java/androidx/leanback/app/PlaybackSupportFragment.java
  101. +12 −2 leanback-1.0.0/src/main/java/androidx/leanback/widget/BaseGridView.java
  102. +7 −1 leanback-1.0.0/src/main/java/androidx/leanback/widget/SearchBar.java
  103. +3 −10 leanbackassistant/src/main/java/com/liskovsoft/leanbackassistant/media/ClipService.java
  104. +4 −4 leanbackassistant/src/main/java/com/liskovsoft/leanbackassistant/media/Playlist.java
  105. +1 −1 leanbackassistant/src/main/java/com/liskovsoft/leanbackassistant/search/SearchableActivity.java
  106. +2 −2 leanbackassistant/src/main/java/com/liskovsoft/leanbackassistant/search/VideoContentProvider.java
  107. +2 −2 smarttubetv/build.gradle
  108. +1 −1 smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/launchers/ChannelsLauncherActivity.java
  109. +1 −1 smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/launchers/GamesLauncherActivity.java
  110. +1 −1 smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/launchers/HistoryLauncherActivity.java
  111. +1 −1 smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/launchers/HomeLauncherActivity.java
  112. +1 −1 smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/launchers/MusicLauncherActivity.java
  113. +1 −1 smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/launchers/NewsLauncherActivity.java
  114. +1 −1 smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/launchers/PlaylistsLauncherActivity.java
  115. +1 −1 ...betv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/launchers/SubscriptionsLauncherActivity.java
  116. +2 −4 smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/presenter/ChannelCardPresenter.java
  117. +1 −4 smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/presenter/VideoCardPresenter.java
  118. +27 −2 smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/browse/BrowseFragment.java
  119. +2 −0 ...ttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/browse/video/MultipleRowsFragment.java
  120. +9 −6 ...ain/java/com/liskovsoft/smartyoutubetv2/tv/ui/dialogs/other/CommentsPreferenceDialogFragment.java
  121. +29 −17 ...m/liskovsoft/smartyoutubetv2/tv/ui/mod/leanback/playerglue/tweaks/MaxControlsVideoPlayerGlue.java
  122. +2 −2 ...iskovsoft/smartyoutubetv2/tv/ui/mod/leanback/playerglue/tweaks/PlaybackTransportRowPresenter.java
  123. +21 −9 smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/playback/PlaybackFragment.java
  124. +10 −10 smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/playback/actions/RepeatAction.java
  125. +12 −12 smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/playback/actions/TwoStateAction.java
  126. +5 −2 ...etv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/playback/mod/SeekModePlaybackFragment.java
  127. +4 −4 ...src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/playback/previewtimebar/StoryboardManager.java
  128. +53 −66 smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/widgets/browse/NavigateTitleView.java
  129. +2 −2 smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/widgets/chat/ChatItemAuthor.java
  130. +2 −2 smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/widgets/chat/ChatItemMessage.java
  131. +2 −0 ...v/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/widgets/marqueetextview/MarqueeTextView.java
  132. +145 −0 ...ttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/ui/widgets/speedmarquee/SpeedMarquee.java
  133. +3 −0 smarttubetv/src/main/java/com/liskovsoft/smartyoutubetv2/tv/util/ViewUtil.java
  134. +6 −0 smarttubetv/src/main/res/values/speedmarquee.xml
  135. BIN smarttubetv/src/stbeta/res/mipmap-nodpi/app_icon_new.png
2 changes: 1 addition & 1 deletion MediaServiceCore
Submodule MediaServiceCore updated 198 files
30 changes: 17 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# SmartTube (old name SmartTubeNext)
# SmartTube (previously SmartTubeNext)

<img width="100" src="https://github.com/yuliskov/SmartTube/blob/master/smarttubetv/src/ststable/res/mipmap-nodpi/app_icon.png" alt="logo"/>

@@ -158,15 +158,19 @@ To enable global voice search, an additional app must be installed alongside Sma

If you want to support my developments you are welcome to buy me a cup of coffee :)

> [**Patreon (Visa, Mastercard, PayPal)**](https://www.patreon.com/smarttube)
> **PayPal**: firsth<!-- abc@def -->ash@gmai<!-- @abc.com -->l.com
- [**Patreon (Visa, Mastercard, PayPal)**](https://www.patreon.com/smarttube)
- **PayPal**: firsth<!-- abc@def -->ash@gmai<!-- @abc.com -->l.com
<!-- > [**Buy me a coffee**](https://www.buymeacoffee.com/stube) -->
> **BTC**: 1JAT5VVWarVBkpVbNDn8UA8HXNdrukuBSx
> **LTC**: ltc1qgc24eq9jl9cq78qnd5jpqhemkajg9vudwyd8pw
> **ETH**: 0xe455E21a085ae195a097cd4F456051A9916A5064
> **ETC**: 0x209eCd33Fa61fA92167595eB3Aea92EE1905c815
> **XMR**: 48QsMjqfkeW54vkgKyRnjodtYxdmLk6HXfTWPSZoaFPEDpoHDwFUciGCe1QC9VAeGrgGw4PKNAksX9RW7myFqYJQDN5cHGT
> **USDT (ERC20)**: 0xe455e21a085ae195a097cd4f456051a9916a5064
- **BTC**: 1JAT5VVWarVBkpVbNDn8UA8HXNdrukuBSx
- **LTC**: ltc1qgc24eq9jl9cq78qnd5jpqhemkajg9vudwyd8pw
- **ETH**: 0xe455E21a085ae195a097cd4F456051A9916A5064
- **ETC**: 0x209eCd33Fa61fA92167595eB3Aea92EE1905c815
- **TRX**: TJNPY794aSGZf3WGHTna2VCWm2G5Yua7E8
- **USDT (TRC20)**: TJNPY794aSGZf3WGHTna2VCWm2G5Yua7E8
- **USDT (BEP20)**: 0x64B28da787BE6ac5889D276A5638d4f077840eC5
- **USDT (ERC20)**: 0xe455e21a085ae195a097cd4f456051a9916a5064
- **TON**: UQAc9zgnnzwS8yb5wxAu5CB0RddmjPBjWI-n46oQ7XfCQrgI
- **XMR**: 48QsMjqfkeW54vkgKyRnjodtYxdmLk6HXfTWPSZoaFPEDpoHDwFUciGCe1QC9VAeGrgGw4PKNAksX9RW7myFqYJQDN5cHGT


## Support
@@ -175,10 +179,10 @@ If you want to support my developments you are welcome to buy me a cup of coffee

You can report in our Telegram group or via [issue tracker on Github](https://github.com/yuliskov/SmartTube/issues) (account required).

> **Telegram group (international)**: [@SmartTubeEN](http://t.me/SmartTubeEN)
> **Discord group (international)**: [SmartTube Official](https://discord.gg/Wt8HDDej5z)
> **Telegram group (RU/UA)**: [@SmartTubeUA](http://t.me/SmartTubeUA)
> **Email**: firsth<!-- abc@def -->ash@gmai<!-- @abc.com -->l.com
- **Telegram group (international)**: [@SmartTubeEN](http://t.me/SmartTubeEN)
- **Discord group (international)**: [SmartTube Official](https://discord.gg/Wt8HDDej5z)
- **Telegram group (RU/UA)**: [@SmartTubeUA](http://t.me/SmartTubeUA)
- **Email**: firsth<!-- abc@def -->ash@gmai<!-- @abc.com -->l.com

The international group is in **English only**. But don't worry if your English is not perfect, we have a friendly international community.

Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.liskovsoft.smartyoutubetv2.common.app.models.data;

import com.liskovsoft.mediaserviceinterfaces.yt.data.MediaItem;
import com.liskovsoft.mediaserviceinterfaces.yt.data.MediaItemMetadata;
import com.liskovsoft.mediaserviceinterfaces.data.MediaItem;
import com.liskovsoft.mediaserviceinterfaces.data.MediaItemMetadata;

public final class SampleMediaItem implements MediaItem {
private int mId;
Original file line number Diff line number Diff line change
@@ -6,15 +6,16 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.liskovsoft.mediaserviceinterfaces.yt.data.ChannelGroup;
import com.liskovsoft.mediaserviceinterfaces.yt.data.ChapterItem;
import com.liskovsoft.mediaserviceinterfaces.yt.data.DislikeData;
import com.liskovsoft.mediaserviceinterfaces.yt.data.MediaGroup;
import com.liskovsoft.mediaserviceinterfaces.yt.data.MediaItem;
import com.liskovsoft.mediaserviceinterfaces.yt.data.MediaItemFormatInfo;
import com.liskovsoft.mediaserviceinterfaces.yt.data.MediaItemMetadata;
import com.liskovsoft.mediaserviceinterfaces.yt.data.NotificationState;
import com.liskovsoft.mediaserviceinterfaces.yt.data.PlaylistInfo;
import com.liskovsoft.mediaserviceinterfaces.data.ItemGroup;
import com.liskovsoft.mediaserviceinterfaces.data.ChapterItem;
import com.liskovsoft.mediaserviceinterfaces.data.DislikeData;
import com.liskovsoft.mediaserviceinterfaces.data.MediaGroup;
import com.liskovsoft.mediaserviceinterfaces.data.MediaItem;
import com.liskovsoft.mediaserviceinterfaces.data.MediaItemFormatInfo;
import com.liskovsoft.mediaserviceinterfaces.data.ItemGroup.Item;
import com.liskovsoft.mediaserviceinterfaces.data.MediaItemMetadata;
import com.liskovsoft.mediaserviceinterfaces.data.NotificationState;
import com.liskovsoft.mediaserviceinterfaces.data.PlaylistInfo;
import com.liskovsoft.sharedutils.helpers.DateHelper;
import com.liskovsoft.sharedutils.helpers.Helpers;
import com.liskovsoft.sharedutils.helpers.MessageHelpers;
@@ -38,7 +39,7 @@ public final class Video {
private static final float RESTORE_POSITION_PERCENTS = 10; // min value for immediately closed videos
public int id;
public String title;
public String altTitle;
public String deArrowTitle;
public String secondTitle;
private String metadataTitle;
private String metadataSecondTitle;
@@ -78,7 +79,7 @@ public final class Video {
public boolean isSynced;
public final long timestamp = System.currentTimeMillis();
public int sectionId = -1;
public int channelGroupId = -1;
public String channelGroupId;
public long startTimeMs;
public long pendingPosMs;
public boolean fromQueue;
@@ -208,15 +209,15 @@ public static Video from(ChapterItem chapter) {
return video;
}

public static Video from(ChannelGroup group) {
public static Video from(ItemGroup group) {
Video video = new Video();
video.title = group.getTitle();
video.cardImageUrl = group.getIconUrl();
video.channelGroupId = group.getId();
return video;
}

public static Video from(ChannelGroup.Channel channel) {
public static Video from(Item channel) {
Video video = new Video();
video.title = channel.getTitle();
video.cardImageUrl = channel.getIconUrl();
@@ -286,10 +287,18 @@ public int getId() {
}

public String getTitle() {
return altTitle != null ? altTitle : metadataTitle != null ? metadataTitle : title;
return deArrowTitle != null ? deArrowTitle : title;
}

public String getSecondTitle() {
return secondTitle;
}

public String getPlayerTitle() {
return deArrowTitle != null ? deArrowTitle : metadataTitle != null ? metadataTitle : title;
}

public String getPlayerSubtitle() {
// Don't sync future translation because of not precise info
return metadataSecondTitle != null && !isUpcoming ? metadataSecondTitle : secondTitle;
}
@@ -447,7 +456,12 @@ public static Video fromString(String spec) {
result.metadataSecondTitle = Helpers.parseStr(split[18]);
result.badge = Helpers.parseStr(split[19]);
result.isLive = Helpers.parseBoolean(split[20]);
result.channelGroupId = Helpers.parseInt(split[21]);
result.channelGroupId = Helpers.parseStr(split[21]);

// Reset old type (int)
if (Helpers.equals(result.channelGroupId, "-1")) {
result.channelGroupId = null;
}

return result;
}
@@ -633,6 +647,10 @@ public boolean belongsToShorts() {
return belongsToGroup(MediaGroup.TYPE_SHORTS);
}

public boolean belongsToShortsGroup() {
return isShorts && (belongsToShorts() || belongsToHome());
}

public boolean belongsToSearch() {
return belongsToGroup(MediaGroup.TYPE_SEARCH);
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.liskovsoft.smartyoutubetv2.common.app.models.data;

import com.liskovsoft.mediaserviceinterfaces.yt.data.ChapterItem;
import com.liskovsoft.mediaserviceinterfaces.yt.data.MediaGroup;
import com.liskovsoft.mediaserviceinterfaces.yt.data.MediaItem;
import com.liskovsoft.mediaserviceinterfaces.data.ChapterItem;
import com.liskovsoft.mediaserviceinterfaces.data.MediaGroup;
import com.liskovsoft.mediaserviceinterfaces.data.MediaItem;
import com.liskovsoft.sharedutils.helpers.Helpers;
import com.liskovsoft.sharedutils.mylogger.Log;
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.service.VideoStateService;
Original file line number Diff line number Diff line change
@@ -33,6 +33,6 @@ public String getMessage() {

@Override
public String getActionText() {
return mError != null && Helpers.startsWith(mError.getMessage(), "AuthErrorResponse") ? mContext.getString(R.string.action_signin) : null;
return mError != null && Helpers.startsWith(mError.getMessage(), "AuthError") ? mContext.getString(R.string.action_signin) : null;
}
}
Original file line number Diff line number Diff line change
@@ -5,7 +5,7 @@

import androidx.annotation.Nullable;

import com.liskovsoft.mediaserviceinterfaces.yt.data.MediaItemMetadata;
import com.liskovsoft.mediaserviceinterfaces.data.MediaItemMetadata;
import com.liskovsoft.smartyoutubetv2.common.app.models.data.Video;
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.manager.PlayerManager;
import com.liskovsoft.smartyoutubetv2.common.app.models.playback.listener.PlayerEventListener;
@@ -157,6 +157,11 @@ public void onSeekEnd() {
// NOP
}

@Override
public void onSeekPositionChanged(long positionMs) {
// NOP
}

@Override
public void onSpeedChanged(float speed) {
// NOP
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.liskovsoft.smartyoutubetv2.common.app.models.playback.controllers;

import com.liskovsoft.mediaserviceinterfaces.yt.LiveChatService;
import com.liskovsoft.mediaserviceinterfaces.yt.data.ChatItem;
import com.liskovsoft.mediaserviceinterfaces.yt.data.MediaItemMetadata;
import com.liskovsoft.mediaserviceinterfaces.LiveChatService;
import com.liskovsoft.mediaserviceinterfaces.data.ChatItem;
import com.liskovsoft.mediaserviceinterfaces.data.MediaItemMetadata;
import com.liskovsoft.sharedutils.mylogger.Log;
import com.liskovsoft.sharedutils.rx.RxHelper;
import com.liskovsoft.smartyoutubetv2.common.R;
Original file line number Diff line number Diff line change
@@ -3,10 +3,10 @@
import android.content.Context;
import android.util.Pair;

import com.liskovsoft.mediaserviceinterfaces.yt.CommentsService;
import com.liskovsoft.mediaserviceinterfaces.yt.data.CommentGroup;
import com.liskovsoft.mediaserviceinterfaces.yt.data.CommentItem;
import com.liskovsoft.mediaserviceinterfaces.yt.data.MediaItemMetadata;
import com.liskovsoft.mediaserviceinterfaces.CommentsService;
import com.liskovsoft.mediaserviceinterfaces.data.CommentGroup;
import com.liskovsoft.mediaserviceinterfaces.data.CommentItem;
import com.liskovsoft.mediaserviceinterfaces.data.MediaItemMetadata;
import com.liskovsoft.sharedutils.helpers.Helpers;
import com.liskovsoft.sharedutils.helpers.MessageHelpers;
import com.liskovsoft.sharedutils.mylogger.Log;
@@ -162,7 +162,7 @@ private void showDialog(CommentsReceiver receiver, String title) {
AppDialogPresenter appDialogPresenter = AppDialogPresenter.instance(getContext());

appDialogPresenter.appendCommentsCategory(title, UiOptionItem.from(title, receiver));
appDialogPresenter.enableTransparent(true);
//appDialogPresenter.enableTransparent(true);
appDialogPresenter.showDialog();
}
}
Original file line number Diff line number Diff line change
@@ -2,10 +2,10 @@

import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import com.liskovsoft.mediaserviceinterfaces.yt.MediaItemService;
import com.liskovsoft.mediaserviceinterfaces.yt.ServiceManager;
import com.liskovsoft.mediaserviceinterfaces.yt.data.MediaItemMetadata;
import com.liskovsoft.mediaserviceinterfaces.yt.data.SponsorSegment;
import com.liskovsoft.mediaserviceinterfaces.MediaItemService;
import com.liskovsoft.mediaserviceinterfaces.ServiceManager;
import com.liskovsoft.mediaserviceinterfaces.data.MediaItemMetadata;
import com.liskovsoft.mediaserviceinterfaces.data.SponsorSegment;
import com.liskovsoft.sharedutils.helpers.Helpers;
import com.liskovsoft.sharedutils.helpers.MessageHelpers;
import com.liskovsoft.sharedutils.mylogger.Log;
@@ -126,7 +126,7 @@ public void onEngineReleased() {
@Override
public void onButtonClicked(int buttonId, int buttonState) {
if (buttonId == R.id.action_content_block) {
List<SponsorSegment> foundSegments = findMatchedSegments(getPlayer().getPositionMs(), mOriginalSegments);
List<SponsorSegment> foundSegments = findMatchedSegments(getPlayer().getPositionMs(), mOriginalSegments, true);

if (foundSegments != null) {
SponsorSegment lastSegment = foundSegments.get(foundSegments.size() - 1);
@@ -139,7 +139,11 @@ public void onButtonClicked(int buttonId, int buttonState) {
@Override
public void onButtonLongClicked(int buttonId, int buttonState) {
if (buttonId == R.id.action_content_block) {
ContentBlockSettingsPresenter.instance(getContext()).show(() -> onVideoLoaded(getPlayer().getVideo()));
ContentBlockSettingsPresenter.instance(getContext()).show(() -> {
if (getPlayer() != null) {
onVideoLoaded(getPlayer().getVideo());
}
});
}
}

@@ -216,7 +220,7 @@ private void skipSegment(long interval) {

long positionMs = getPlayer().getPositionMs();

List<SponsorSegment> foundSegments = findMatchedSegments(positionMs, mActiveSegments);
List<SponsorSegment> foundSegments = findMatchedSegments(positionMs, mActiveSegments, false);

applyActions(foundSegments);

@@ -226,11 +230,17 @@ private void skipSegment(long interval) {
}
}

private boolean isPositionInsideSegment(long positionMs, SponsorSegment segment) {
private boolean isPositionInsideSegment(long positionMs, SponsorSegment segment, boolean fullMatch) {
// NOTE: in case of using Player.setSeekParameters (inaccurate seeking) increase sponsor segment window
// int seekShift = 1_000;
// return positionMs >= (segment.getStartMs() - seekShift) && positionMs <= (segment.getEndMs() + seekShift);
return positionMs >= segment.getStartMs() && positionMs <= Math.min(segment.getStartMs() + 1_000, segment.getEndMs());

if (fullMatch) {
return positionMs >= segment.getStartMs() && positionMs <= segment.getEndMs();
} else {
long windowSizeMs = (long) (2_000 * getPlayer().getSpeed());
return positionMs >= segment.getStartMs() && positionMs <= Math.min(segment.getStartMs() + windowSizeMs, segment.getEndMs());
}
}

private void simpleSkip(long skipPosMs) {
@@ -320,7 +330,10 @@ private void setPositionMs(long positionMs) {
getPlayer().setPositionMs(Math.min(positionMs, durationMs));
}

private List<SponsorSegment> findMatchedSegments(long positionMs, List<SponsorSegment> segments) {
/**
* @param fullMatch Match only the beginning or the full segment length
*/
private List<SponsorSegment> findMatchedSegments(long positionMs, List<SponsorSegment> segments, boolean fullMatch) {
if (segments == null) {
return null;
}
@@ -332,7 +345,7 @@ private List<SponsorSegment> findMatchedSegments(long positionMs, List<SponsorSe
boolean isSkipAction = action == ContentBlockData.ACTION_SKIP_ONLY ||
action == ContentBlockData.ACTION_SKIP_WITH_TOAST;
if (foundSegment == null) {
if (isPositionInsideSegment(positionMs, segment)) {
if (isPositionInsideSegment(positionMs, segment, fullMatch)) {
foundSegment = new ArrayList<>();
foundSegment.add(segment);

@@ -343,7 +356,7 @@ private List<SponsorSegment> findMatchedSegments(long positionMs, List<SponsorSe
}
} else {
SponsorSegment lastSegment = foundSegment.get(foundSegment.size() - 1);
if (isSkipAction && isPositionInsideSegment(lastSegment.getEndMs() + 3_000, segment)) {
if (isSkipAction && isPositionInsideSegment(lastSegment.getEndMs() + 3_000, segment, fullMatch)) {
foundSegment.add(segment);
}
}
Loading