Podcini

Open source podcast instrument for Android in Kotlin with media3, supporting channels, playlists and single media from YouTube and YT Music.

GPL-3.0 License

Stars
152

Bot releases are visible (Hide)

Podcini -

Published by XilinJia 4 months ago

  • complete overhaul of database and routines, ditched the iron-age celebrity SQLite and entrusted the modern object-based Realm
  • export/import DB is supported for the Realm DB with file extension .realm
  • DB from Podcini version 5 and below can not be imported, see migrationTo6.md file on github for instructions
  • deleting feeds is performed promptly
  • components rely more on objects for communication, unnecessary DB access is reduced
  • subscriptions sorting is more explicit
  • in Subscriptions view, click on cover image of a feed opens the FeedInfo view (not FeedEpisodes view)
  • in Subscriptions and episodes list views, corrected the issue of wrong images of episodes being shown when scrolling
  • the Counter and its seetings are removed
  • flow event additions and improvements
  • receiving flow events are strictly tied to life cycles of the components
  • NavDrawer no longer gets updated in the background but only upon open
  • player control UI is more efficient
  • PlaybackController is further enhanced for multiple access
  • non-essential instantiations of PlaybackController are stripped
  • AudioPlayer view is hidden when there is no media set to play
  • playback routines are extensively tuned and cleaned, less layered
  • in any episode list views, swipe with NO_ACTION defined pops up the swipe config dialog
  • episodes marked played will be removed from all queues
  • in EpisodeInfo view, "mark played/unplayed", "add to/remove from queue", and "favoraite/unfovorite" are at the action bar
  • decade-old joanzapata iconify is replaced with mikepenz iconics
  • removed the need for support libraries and the need for the jetifier
  • Java tools checkstyle and spotbus are removed
  • the clumsy FeedDrawerItem class was removed and related compponents are based purely on feed objects
  • FeedInfo view has button showing number of episodes to open the FeedEpisodes view
  • on action bar of FeedEpisodes view there is a direct access to Queue
  • tidied up the header of FeedEpisodes view
  • media size is shown on episode info view
  • net-fetching of media size for not-downloaded media is removed for episode list views
  • there is a setting to disable/enable auto backup OPML files to Google
  • all RxJava code was replaced with coroutines, RxJava dependency is kept only for using fyyd search
  • PlaybackPreferences using SharePreferences was removed and related info is handled by the DB as CurrentState
  • InTheatre object is now the center reference for all currently playing stuff including the current play queue
  • 5 queues are provided by default: Default queue, and Queues 1-4
    • all queue operations are on the curQueue, which can be set in all episodes list views
    • on app startup, the most recently updated queue is set to curQueue
  • extensive adjustments project class structures
  • code is now built with Kotlin 2.0.0
Podcini -

Published by XilinJia 4 months ago

  • another minor release for better migration to Podcini 6
  • in wifi sync and episode progress export/import, included favorites info for episodes
Podcini -

Published by XilinJia 4 months ago

  • a minor release for better migration to Podcini 6
  • in wifi sync and episode progress export/import, included the info for episodes not played or not finished playing but marked as played
Podcini -

Published by XilinJia 4 months ago

  • likely fixed Nextcloud Gpoddersync fails
  • fixed text not accepted issue in "add podcast using rss feed"
  • removed kotlin-stdlib dependency to improve build speed
  • cleaned out the commented-out RxJava code
  • added export/import of episode progress for migration to future versions. the exported content is the same as with instant sync: all the play progress of episodes (completed or not)
  • this is likely the last release of Podcini 5, sauf perhaps any minor bugfixes.
  • the next Podcini overhauls the entire DB routines, SQLite is replaced with the object-based Realm, and is not compatible with version 5 and below.
Podcini -

Published by XilinJia 5 months ago

  • likely fixed crash issue when the app is restarted after long idle
  • fixed null pointer crash issue in when trying to report player error
  • fixed null pointer crash issue when open player detailed view with online episode
  • likely fixed the audio break issue when streaming some podcasts, particularly those related to "iHeart" (actually the server has some invalid settings, someone should notify them).
    this should take effect with episodes in both subscribed or online feeds
Podcini -

Published by XilinJia 5 months ago

  • fixed occasional crash of detecting existing OPML file for new install
  • should have fixed the mal-functioning earphone buttons
Podcini -

Published by XilinJia 5 months ago

  • replaced thread with coroutines in DBWrite
  • reduced startup lags of the app, various views, and media playing
  • tidied up preferences accesses
  • updated SwipeActions to the new DefaultLifecycleObserver
  • added more options for default page
  • added link info in episode info view
Podcini -

Published by XilinJia 5 months ago

  • fixed crash issue on some device when attempting to remove item from queue multiple times
  • improved efficiency of getNextInQueue in DBReader
Podcini -

Published by XilinJia 5 months ago

  • changed normal scope to life cycle scope when possible
  • replaced EventBus with Kotlin SharedFlow, be mindful of possible issues
  • added sort order based on episode played or completed times, accessible from various episodes' list views
  • in history view, dates shown on items are last-played dates
  • in history view added sort and date filter
  • more conversion of RxJava routines to Kotlin coroutines
  • fixed crash issue sometimes when importing OPML files
  • fixed crash issue in About view
Podcini -

Published by XilinJia 5 months ago

  • fixed issue of play/pause button not correctly updated in Queue
Podcini -

Published by XilinJia 5 months ago

  • suppressed log.d messages in release app (unbelievable incomplete suppression last time)
  • made loadAdditionalFeedItemListData of DBReader a bit more efficient
  • reduced unnecessary loading of media info in AudioPlayer
  • tuned playback controller for efficiency
  • improved player details view and corrected issue of showing wrong info
  • tuned episode info view for efficiency
  • tuned feed info view for start efficiency
  • tuned and slimmed down the drawer: number of Subscriptions now shows the number of subscriptions
  • replaced many RxJava stuff with Kotlin Coroutines
Podcini -

Published by XilinJia 5 months ago

  • properly destroys WebView objects
  • fixed issue loading image lacking a header
  • preferences now can be exported/imported
Podcini -

Published by XilinJia 5 months ago

  • fixed crash when opening Import/Export in settings
Podcini -

Published by XilinJia 5 months ago

  • experimental (back up before use) release of instant sync between devices on the same wifi network without a server
  • have media3 exoplayer taking over all audio focus controls to better cooperate with other media players. be mindful of any possible issues
  • fixed some icon handling issues noticed on Android 14
  • overhauled image handling routines, replaced Glide with Coil: efficiency improved, app lighter, and lots of exception issues eliminated, though appearance not fully replicated
  • suppressed log.d messages in release app
  • fixed search failure bug introduced with adding of transcript column
  • fixed a null pointer exception when opening online feed providing null connection type
  • fixed bug of episodes being mostly duplicated in online feed episodes view
  • fixed play/pause button not correctly set sometimes
  • fixed position not correctly shown sometimes
  • fixed position not correctly set on starting streaming
  • fixed issue with long-press on the Skip button
  • player status has now a single point of reference
  • player detailed view is only initialized at first open
  • instant (or wifi) sync can be accessed from Settings->Synchronization, where an instruction is shown
  • it syncs the play states (position and played) of episodes that exist in both devices (ensure to refresh first) and that have been played (completed or not) on at least one device
  • so far, every sync is a full sync, no subscription feeds sync, and no media files sync
Podcini -

Published by XilinJia 6 months ago

  • fixed crash issue when TTS engine is not available on device
  • in feed item list view, only start TTS engine when some episodes have no media
Podcini -

Published by XilinJia 6 months ago

  • fixed media info on notification widget
  • fixed feed sorting "unread publication date"
  • added in DB column "transcript" in feed items table to store episode home reader text fetched from the website
  • added TTS button for fetching transcript (if not exist) and then generating audio file from the transcript
  • in episode list view, if episode has no media, TTS button is shown if audio file is not yet generated, otherwise Play/Pause button is shown
  • TTS audio files are playable in the same way as local media (with speed setting, pause and rewind/forward)
  • when a no-media episode is deleted, the audio file is deleted
  • episode home view opens reader mode first
  • button1 in episode info view is set to invisible if no media
Podcini -

Published by XilinJia 6 months ago

  • fixed the nasty bug of marking multiple items played when one is finished playing
  • merged PlayerWrapper class into LocalMediaPlayer
Podcini -

Published by XilinJia 6 months ago

  • added action bar option in episode home view to switch on/off JavaScript
  • added share notes menu item in reader mode of episode home view
  • TTS speed uses playback speed of the feed or 1.0
  • on player detailed view, if showing episode home reader content, then "share notes" shares the reader content
  • fixed bug of not re-playing a finished episode
  • fixed (possibly) bug of marking multiple items played when one is finished playing
Podcini -

Published by XilinJia 6 months ago

  • fixed non-functioning pause button in queue list
  • fixed player control buttons not being properly activated
  • enabled the function for auto downloading of feeds
    • when global auto download setting is enabled, no existing feed is automatically included for auto download
    • when subscribing a new feed, there an option for auto download
    • new episode of a feed is auto downloaded at a feed refresh only when both global and feed settings for auto download are enabled
Podcini -

Published by XilinJia 6 months ago

  • show toast message when episode home views are not available
  • fixed crash bug on app startup when player buttons are clicked before play
  • large codebase cleaning
  • episode home menu item is disable on video player