Giter Site home page Giter Site logo

amugofjava / anytime_podcast_player Goto Github PK

View Code? Open in Web Editor NEW
377.0 19.0 99.0 3.96 MB

Simple, easy to use Podcast player app written in Flutter and Dart.

License: BSD 3-Clause "New" or "Revised" License

Swift 0.10% Objective-C 0.01% Dart 99.51% Kotlin 0.02% Ruby 0.37%
dart flutter flutter-app android ios podcast podcast-player

anytime_podcast_player's People

Contributors

ademar111190 avatar amugofjava avatar chralu avatar erdemyerebasmaz avatar gouravshdev avatar mrkrash avatar roeierez avatar wilt00 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

anytime_podcast_player's Issues

Podcast Artist Page

When the podcast description is long, showing a button can provide a better experience.

photo_2021-05-05_02-22-34

"Search provider" in settings jumps back to "iTunes" when changing other settings

Describe the bug
After I set the "Search provider" to "PodcastIndex" and I make another change in the settings, it sets the seach provider back to "iTunes"

To Reproduce
Steps to reproduce the behavior:

  1. Go to Settings
  2. Set the Search provider to "PodcastIndex"
  3. Make any other settings change
  4. The search provider is now set as "iTunes" again

Expected behavior
The search provider setting must not change when changing other settings.

Screenshots
N/A

Smartphone (please complete the following information):

  • Device: Pixel 4a (5G)
  • OS: Android 11

Additional context
N/A

Distribute APK with release

Is your feature request related to a problem? Please describe.
I don't have Play Store -- Can't use AnyTime

Describe the solution you'd like
I'd like to be able to download APKs

Describe alternatives you've considered
Using those sites that get the APKs, but I don't like having to trust middlemen.

Additional context
Breez distributes APKs with each release (on the github release page), that works well.

Clear text button in search UI should restore user keyboard

To recreate the issue to the following:

  1. Open app
  2. Click on the Search icon (top right)
  3. Type some string into search bar
  4. Click the back button on your phone (not on the screen)
  5. Click on the Clear button (X symbol)

The app is clearing the search query and restoring focus as needed but the keyboard should pop up for user to input its search query again.

To implement this append the SystemChannels.textInput.invokeMethod('TextInput.show'); to the lib/ui/search/search_bar.dart:

onPressed: () {
  _searchController.clear();
  FocusScope.of(context).requestFocus(FocusNode());
  SystemChannels.textInput.invokeMethod('TextInput.show');
}),

Option to force-use Material Design for BasicDialogAlert on iOS

We're using Material design on our app, on both Android and iOS platforms for consistency. However, using the anytime podcast player inside our app breaks this rule as the player uses Cupertino widgets on iOS.

We'd like the option to use Material design on anytime podcast player, that chooses Material widgets over their Cupertino counterpart.

Something along the lines of:

    if (appSettings.useMaterialDesign) {
      showDialog<void>(
        builder: (_) => AlertDialog(...),
      );
    } else {
      showPlatformDialog<void>(
        context: context,
        builder: (_) => BasicDialogAlert(...),
      );
    }

Auto or manual feed refresh can wipe episode times

Describe the bug
For podcasts that do not store their episode times in the RSS feed, Anytime can calculate an episode length when downloading the episode; however, subsequent auto or manual refreshes will re-zero the episode length.

To Reproduce
Steps to reproduce the behavior:

  1. Download an episode from a Podcast in which Anytime cannot calculate episode time from the RSS feed. For example the Podcasting 2.0 podcast.
  2. Download an episode and see that the episode time is added to the episode.
  3. Perform an RSS refresh (pull down or wait for next auto-refresh).
  4. Episode time has been cleared.

Expected behavior
The episode time should not be zeroed if already fetched.

Download tab does not automatically refresh on completion of episode download

Describe the bug
Episodes can be downloaded in the background. If a user switches to the download tab and a background download completes, the downloaded episode does not automatically appear in the list. The user has to switch to another tab and then back to the download tab to see the newly downloaded episode.

To Reproduce
Steps to reproduce the behavior:

  1. Start an episode download.
  2. Switch to the download tab and wait for the download to complete.
  3. The downloaded episode does not appear on the list.
  4. Switch to the library or discovery tab and then back to the downloads tab. The episode now appears.

Expected behavior
As a download completes, the newly downloaded episode should appear in the list. A download should not result in a complete redraw of the download screen; the episode should be added to the list without affecting the users' current scroll position.

Running app on a device with language set to any of the translations available, shows incorrect catrgories.

Describe the bug
If you switch region to non English or German, in this example the Netherlands, and then go to the Discover tab you'll see the language label rather than the categories.

To Reproduce
Steps to reproduce the behavior:

  1. Switch device to non-English or German language.
  2. Click on Discover tab.
  3. Categories label key shown instead of categories.

Expected behavior
Should default to English in the same way the rest of the app does.

Screenshots
Screenshot_20230609_134132

Smartphone (please complete the following information):

  • Device: Fails on both Android & iOS.

Error on run flutter pub get - Flutter 2 dependency Issue

Describe the bug
I have got this error on run flutter pub get:
pub get failed (1; So, because anytime depends on both podcast_search from git and intl 0.17.0, version solving failed.)

This my flutter doctor:

[✓] Flutter (Channel stable, 2.0.2, on macOS 11.2 20D64 darwin-x64, locale en-US)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[✓] Xcode - develop for iOS and macOS
[✓] Android Studio (version 4.1)

What's wrong there? Have anysuggest to fix this error?
Thank you so much!

Ability to modify search or add RSS feeds

I am hoping the tittle gives you an idea of what might be super useful.
Any chance of modifying the search or adding a new URL for the feed?

The results are always the same and so wondered if I am missing something. I am not able to find, where you are getting this list in the discover tab. Is there an option to include curated list?

[iOS] Add manual RSS feed shows error

Describe the bug
On an iOS device, Add Rss Feed popup show error No Material widget found. TextField widgets require a Material widget ancestor.

To Reproduce
Steps to reproduce the behavior:

  1. Go on "Library" tab
  2. Click on the action button on the top-right corner
  3. Select "Add RSS Feed"
  4. The requested popup shows empty, and the following error is logged :
The following assertion was thrown building TextField(controller: TextEditingController#0419f(TextEditingValue(text: ┤├, selection: TextSelection(baseOffset: -1, extentOffset: -1, affinity: TextAffinity.downstream, isDirectional: false), composing: TextRange(start: -1, end: -1))), decoration: InputDecoration(hintText: "https://"), dirty, dependencies: [MediaQuery, UnmanagedRestorationScope], state: _TextFieldState#fb112):
No Material widget found.

TextField widgets require a Material widget ancestor.
In material design, most widgets are conceptually "printed" on a sheet of material. In Flutter's material library, that material is represented by the Material widget. It is the Material widget that renders ink splashes, for instance. Because of this, many material library widgets require that there be a Material widget in the tree above them.

Screenshots
Simulator Screen Shot - iPhone 13 Pro Max - 2022-01-22 at 10 10 50

Smartphone (please complete the following information):

  • Device: iPhone13 Pro Max simulator
  • OS: iOS 15.2

Podcast refresh noticeably slow on lower-end devices.

Describe the bug
Refreshing large podcasts can be very slow.

To Reproduce
Steps to reproduce the behavior:

  1. Refresh any podcast that contains a significant number of episodes.

Expected behavior
The refresh to not take so long.

Additional context
The issue is a result of all episodes in the feed being saved during a refresh, regardless of whether they have changed or not. This is causing unnecessary write overhead and is very noticeable on low end devices. This is a big issue when enabling background refresh for podcasts.

When saving an updated Feed, only new or changed episodes should be saved. Also need to check that expired episodes are removed.

A failed download (no internet) stays in "downloading" state.

Describe the bug
When requesting an episode download while internet access is down, an exception is raised, but the UI stays in "download in progress" mode.

To Reproduce
Steps to reproduce the behavior:

  1. Go to a podcast episodes list
  2. Set phone in Airplane mode
  3. Tap on the download button of an episode
  4. Logs show an exception and UI shows the download in progress icon

Expected behavior
UI should show the not downloaded episode icon.
Maybe a Snackbar could appear to inform the user of the failure cause.

Screenshots
If applicable, add screenshots to help explain your problem.

Smartphone (please complete the following information):

  • Device: [e.g. Pixel 4]
  • OS: [e.g. Android 9]

Additional context
Add any other context about the problem here.

Transcript support for all SRT mimetypes

Describe the bug
I think that the code doesn't catch al the possible mime-types for SRT transcripts (or at least I can't found it):

https://github.com/amugofjava/anytime_podcast_player/blob/master/lib/ui/podcast/transcript_view.dart

These all the types that I've found podcast using for SRT:

  • application/x-subrip
  • application/srt
  • text/srt

To Reproduce
Steps to reproduce the behavior:

  1. Add this feed: Mixxio'
  2. Click on 'Play' on last episode
  3. Scroll down to 'Transcripts'
  4. See error

Expected behavior
Subtitles are shown as on KDE Express

Screenshots
imagen

Smartphone (please complete the following information):

  • Device: Fairphone 3
  • OS: Android 13

Additional context
Mixxio:

  • <podcast:transcript type="plain/txt" url="https://cuonda.com/mixxio/la-temporada-otono-invierno/transcription"/>

  • <podcast:transcript type="application/x-subrip" rel="captions" url="https://cuonda.com/mixxio/la-temporada-otono-invierno/subtitles"/>

KDE Express:

  • <podcast:transcript language="es" rel="captions" url="https://op3.dev/e,pg=a9a56b87-575a-5f6f-9636-cdf7b73e6230/archive.org/download/19-kde-express-parati/19-KDE_Express-Parati.vtt" type="text/vtt"/>

  • <podcast:transcript language="es" rel="captions" url="https://op3.dev/e,pg=a9a56b87-575a-5f6f-9636-cdf7b73e6230/archive.org/download/19-kde-express-parati/19-KDE_Express-Parati.asr.srt" type="application/x-subrip"/>

  • <podcast:transcript language="es" rel="captions" url="https://op3.dev/e,pg=a9a56b87-575a-5f6f-9636-cdf7b73e6230/archive.org/download/19-kde-express-parati/19-KDE_Express-Parati.asr.srt" type="application/srt"/>

  • <podcast:transcript language="es" rel="captions" url="https://op3.dev/e,pg=a9a56b87-575a-5f6f-9636-cdf7b73e6230/archive.org/download/19-kde-express-parati/19-KDE_Express-Parati.asr.srt" type="text/srt"/>

PD: Thanks for supporting the Podcasting 2.0 community with FLOSS

Single purpose App

Hi, I just want to know if we can use Anytime Podcast Player with just one or a choice of podcast feeds. I am considering to use the app for my radio station.

Marking episodes-played in bulk is slow

Describe the bug
The 'Mark all episodes as read' option is very slow at updating the episodes. It also appears to get slower the more you do.

To Reproduce
Steps to reproduce the behavior:

  1. Start following podcasts.
  2. Mark all episodes as read
  3. Process gets increasingly slower.

Expected behavior
Updating the episodes should be quicker and should not get progressively slower.

Smartphone (please complete the following information):

  • Device: Google Nexus 5
  • OS: Android 6

Notification shade can be swiped away during playback on Android 11 and above

Describe the bug
The notification control allows users to play, pause, forward and rewind playback from the notification shade. When in a paused state, it is also possible to swipe the notification away to stop playback; however, on Android 11 and above it is possible to swipe the notification away whilst an episode is playing. This removes the notification but does not stop playback living it out of sync.

To Reproduce
Steps to reproduce the behavior:

  1. On a Device running Android 11 or above.
  2. Start playback of an episode.
  3. Pull down the notification shade.
  4. Swipe the notification away.

Expected behavior
Playback should either stop when swiped away, or the same behaviour - as observed on Android 10 and below - should be followed making it only possible to swipe away the notification when in a paused state.

Screenshots

notification-bug.webm

Smartphone (please complete the following information):

  • Device: Google Nexus X, Pixel 2.
  • OS: Android 8.1.0, 11.

just_audio upgrade issues

just_audio causes issues after upgrading
A direct build without any changes could not complete with several build errors stating ios build version differences. So I went ahead and upgraded all the individual packages.

To Reproduce
Steps to reproduce the behaviour:

  1. Updated the pubspec yaml with the latest versions of the packages used (versions shown below)
  2. Compile errors are shown within the 'mobile_audio_player.dart' file

Expected behaviour
Should have hopefully built with the latest packages.

Screenshots
image
image

Smartphone (please complete the following information):

  • Device: Simulator (iPhone 12 Pro - iOS 14.3)
  • OS: iOS 14.3

Additional context
`environment:
sdk: ">=2.8.0 <3.0.0"

dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
audio_service: ^0.16.1
cached_network_image: ^2.5.0
connectivity: ^2.0.2
cupertino_icons: ^0.1.2
flutter_dialogs: ^1.1.0
flutter_downloader: ^1.5.2
flutter_launcher_icons: ^0.8.1
flutter_spinkit: ^4.1.2+1
html: ^0.14.0+4
intl: ^0.16.1
intl_translation: ^0.17.10+1
just_audio: ^0.6.5
liquid_pull_to_refresh: ^2.0.0
logging: ^0.11.4
mockito: ^4.1.3
mp3_info: ^0.1.4
package_info: ^0.4.3+2
path_provider: ^1.6.27
percent_indicator: ^2.1.9
permission_handler: ^5.0.1+1
podcast_search: ^0.3.7
provider: ^4.3.2+3
rxdart: ^0.25.0
sembast: ^2.4.8+1
shared_preferences: ^0.5.12+4
url_launcher: ^5.7.10

dev_dependencies:
flutter_test:
sdk: flutter
pedantic: ^1.9.2`

Pastebin - initial build error

Add to F-Droid

Is your feature request related to a problem? Please describe.
Although this may not affect most people, I would like it if this app was added to F-Droid.

Additional context
This would bring in more people from the Foss community to download the app and could do nothing but good.

Cannot play a redirected episode

Describe the bug
It seems that Anytime cannot play op3 redirected episodes. Maybe an issue with the enclosure URL?

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'Curry and The Keeper' podcast
  2. Click on the play button of episode 22
  3. Episode isn't playing

Expected behavior
Should play like other episodes

Screenshots
If applicable, add screenshots to help explain your problem.
Screenshot_2022-09-29-06-54-27-44_5a6daf00ebe96535dfcd2244bec324cc

Smartphone

  • OnePlus 8T
  • Android 11

Additional context
I was told this specific episode is using a redirected enclosure URL.

Feature request: Switch to turn off in-app web pages

Discussed in #75

Originally posted by Solomon1732 August 12, 2022
Currently, when I tap a link in an episode's description, such as a YouTube link, it is opened in Anytime. This is true for other links as well. I would like some ability to turn this behavior off. I initially thought websites and other apps I had were broken until I realized what was going on. It breaks expected behavior.

I also cannot copy links from an episode's description. This exacerbates the previously mentioned link-handling behavior. Not only can I not open links in other apps, but I also cannot copy links to manually paste them later. This means that I have to manually type links, switching between Anytime and wherever else I want to paste the link in.

Download failing immediately doesn't update UI

Describe the bug

When requesting a download that immediately fails, UI stays stucked on the "download in progress" state.

It might happen using iOS when episode URLs are non-SSL http://.
There might be other cases where download fails as soon as it starts.

To Reproduce

  1. Using iOS
  2. add the following podcast : https://feeds.feedburner.com/LaperoDuCaptain
  3. request any episode download.
  4. Episode in list keeps displayed as a download in progress. But download is actually stopped because OS refused http request.

Analyse

mobile_download_service.dart

  @override
  Future<bool> downloadEpisode(Episode episode) async {
 // ....
        final taskId = await downloadManager.enqueueTask(episode.contentUrl, downloadPath, filename);

        // Update the episode with download data
        episode.filepath = episodePath;
        episode.filename = filename;
        episode.downloadTaskId = taskId;
        episode.downloadState = DownloadState.downloading;
        episode.downloadPercentage = 0;

        await repository.saveEpisode(episode);
// ...
  }

Starting a download sequentially :

  1. Enqueues a download task in FlutterDownloader
  2. Gets the FlutterDownloader task id -> persists it in sembast Episode.downloadTaskId
  3. On download update, DownloadService
    1. looks for matching Episode.downloadTaskId in Sembast
    2. If episode is found, it is updated with new download progress.

In the case where download immediately fails, the download status changes before step 2. is done.
Then, a download update event arrives but DownloadService is unable to find the matching Episode in sembast.
=> Sembast episode is not updated
=> Repository.episodeListener is not updated
=> PodcastBloc is not updated

Screenshots

download_fail2.mp4

Smartphone (please complete the following information):

  • Device: iPhone11
  • OS: iOS 16

Add support for importing/exporting subscriptions in OPML format

Is your feature request related to a problem? Please describe.
As a user wanting to migrate from a different app to Anytime, I would like to be able to import an OPML file of all my subscriptions that I exported from my previous app, so that I don't have to manually add all of them in Anytime.

Additionally (could be split into a separate feature request)
As a user, I want to be able to export the subscriptions I have in Anytime in OPML format so that I can easily migrate to a different app or if I want to share my subscription list or just have a backup of it.

Describe the solution you'd like
I would like to be able to import an OPML (standard format of a list of RSS feeds) of my podcast subscriptions into Anytime.

Additionally I would also like to be able to export my subscriptions in an OPML format.

Describe alternatives you've considered
Adding my 30+ subscriptions manually.

Additional context
N/A

Request for Ubuntu desktop support

Hi there 👋
It would be great to have this as a desktop app with an adequate layout and as a snap availible on Ubuntu desktop :)

Layout could be switched like

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      body: LayoutBuilder(
        builder: (context, constraints) {
          if (constraints.maxWidth > 600) {
            return WideLayout();
          } else {
            return NarrowLayout();
          }
        },
      ),
    );
  }
}

Or so :)
Thanks in advance

OPML Import - cannot select input file on iOS

Describe the bug
When attempting to select an OPML file on the device or iCloud, any OPML files are greyed out and not selectable.

To Reproduce
Steps to reproduce the behavior:

  1. Got to settings and select Import OPML.
  2. Use the file manager to locate an OPML file.
  3. The file will be greyed out and cannot be selected.

Expected behavior
OPML files should be selectable for import.

Screenshots
Screenshot 2023-02-02 at 16 18 29

Smartphone (please complete the following information):

  • iPhone 7
  • iOS 15.7.2

Additional context
There is an additional problem with export. If you select Export OPML and then close the popup share panel you are left with a blank screen. You have to kill and restart Anytime to get out of it.

OPML Export - throws error on iOS

Describe the bug
On iOS, when exporting OPML, an exception is thrown, and application main screen becomes black.

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'Settings'
  2. Click on 'Export OPML'

A system "save to" bottom sheet appears.
An exception setState() or markNeedsBuild() called during build. is raised.

When closing the system bottom sheet, AnytimePodcast is entirely black.

Expected behavior
After saving, user should be back on AnytimePodcast.

Screenshots

Simulator Screen Shot - iPhone 11 - 2023-03-03 at 12 22 56

Smartphone (please complete the following information):

  • Device: iPhone11 simulator
  • OS: iOS 16.2

NowPlaying view rendered without chapters for a first time loaded podcast.

When loading a podcast for the first time (one that has chapters) they are not showing in the now playing view.
I believe the reason is because the podcast is added to the stream before chapters are loaded: https://github.com/amugofjava/anytime_podcast_player/blob/master/lib/bloc/podcast/audio_bloc.dart#L101

The chapters are actually lazy loaded inside the mobile audio player service but the line above doesn't wait for it.
Adding wait will fix this issue but will create some flickering in the now playing UI and some "jump" in the tab selected index.

OPML Import hangs on a certain podcast

Describe the bug
When I import an OPML file, the app consistently hangs when trying to download "https://www.geierb.de/trishaspodcasts/FM4-Charts/podcast.xml"

Smartphone (please complete the following information):

  • Device: Samsung a52
  • OS: Android 12

Additional context
I think it would be a good idea to download podcasts with a timeout. If the app cannot download/process a podcast, the problem should be limited to the problematic podcast. The way it is now the only option is to abort importing the OPML.

Playback progress save.

Is your feature request related to a problem? Please describe.
When launching AnytimePodcast, I am frustrated to loose the playback progress of episodes I partially played.

It happens when the application is killed (either by system or by user). Then, current playback is not saved.

Describe the solution you'd like
I would like to get the playback progress of each episode saved on the fly. So playback could be restored to the play progress I left it.

If episode persistance encounters performances issues, we could update playback time only every 5 seconds, for example.

Use Weblate for translations management

Describe the solution you'd like
Translations management is tricky and many issues can occur.

  • Transations not reviewed
  • Translations not synchronized (#58)
  • Translating requires a (little) technical skill

I just gave a try to https://weblate.org, and I think it could be a huge help for translations management.

To me, the interesting features are :

  • Plugs directly to Git repository (PR mechanism builtin)
  • It's FOSS
  • Hosted version is free for FOSS
  • handles well arb files
  • simple UI for translators

@amugofjava If that's alright to you, I can setup a Weblate project to give it a try.

while playing any episode when press back button and exit of application and going to it again you will have same exceptions

Hi Ben ,I hope you are well.
while playing any episode when press back button and exit of application and going to it again you will have same exceptions
that it make very problem while using app
To Reproduce
Steps to reproduce the behavior:

  1. play any episode
  2. Click on back button and exit of application
  3. and going to app again
  4. you will have very exception

it is a image of exceptions
bug

Podcasts fail to load on Android 6 devices if the SSL CA is Let's Encrypt

Describe the bug
Podcasts that use Let's Encrypt as their CA fail to load.

To Reproduce
Steps to reproduce the behavior:

  1. Search for the 'Once Bitten' podcast.
  2. Tap on the icon to load the podcast.
  3. Busy spinner keeps on spinning,

Issue
The Let's Encrypt CA expired at the end of September 2021. This is causing issues with older Android devices which cannot update it's list of CA's. Later versions of Android are fine.

Add option to automatically remove downloaded episodes once played

Is your feature request related to a problem? Please describe.
Once a downloaded episode has been fully played, it remains in the Downloads section until you manually remove it. Each episode has to be removed one at a time which can be frustrating.

Describe the solution you'd like
A new option 'Remove downloaded episodes once played' should be added to the settings page in the Episodes section. When toggled on, upon reaching the end of playback of an episode which is downloaded to the user's device, it should be deleted.

Forcing https can cause some podcasts to fail loading

Describe the bug
Anytime forces all urls to use https, partly because it is more secure and party to overcome a bug in Dart: 51532

To Reproduce
Steps to reproduce the behavior:

  1. Search for the 'Clutterbug' podcast.
  2. Open the podcast to load the feed.
  3. Feed fails to load and shows the generic load failed error.

Expected behavior
It should load the podcast episodes.

Smartphone (please complete the following information):

  • Device: Nexus 5x & iPhone 7
  • OS: Android 8.1.0 & iOS 15

Additional context
The issue here is that the Clutterbug uses http for the podcast feed. When forcing it to use https we get a certificate error as the certificate is for podbean.com and not https://clutterbug.me so we get a hostname missmatch exception.

Chapter placeholder image can flash when no connection

Describe the bug
Playing a downloaded episode containing chapters with separate chapter art can result in the placeholder image flashing when offline.

To Reproduce
Steps to reproduce the behavior:

  1. Download a podcast which you know contains Podcasting 2.0 chapters with chapter art.
  2. Enable airplaine mode.
  3. Open the main player, switch to a chapter containing chapter art.
  4. Switch back to details tab. The Anytime logo placeholder will flash.

Expected behavior
It should show a solid placeholder image.

Additional context
The issue seems to be with the image library attempting to fetch the image and repeatedly switching between success and failure state resulting in the placeholder image appearing and then being removed. The image library needs to consistently return an error state if the image cannot be fetched.

can not download an episode while press back button and going to app again

Hi,I hope you are well.
I found out something that I think it's a bug of this app.
when you go to the application and want to download an episode, it downloads very well,
when you are in(in the app), you press back button after that you go out of the app, when you want to come in again, you will see that you can not download a new episode(the progress does not complete the task) and you have to close the app and start it again and it works fine.
do you know why it happens?
here is a video of what I said that I put in dropbox:
https://www.dropbox.com/s/cz5hmsntywknd0f/anytime.mp4?dl=0

Cancelling a download can mark an episode as played

Describe the bug
Whilst an episode is downloading it is possible to cancel the download by clicking on the download button and tapping STOP. If you have 'marked deleted episodes as played' enabled the episode will be marked as played.

Cancelling a download should not mark an episode as read. The CANCEL option should be renamed to CONTINUE (with correct translated alternatives) to make it clearer what that option does.

To Reproduce
Steps to reproduce the behavior:

  1. In settings ensure 'Mark deleted episodes as played' is enabled.
  2. Start downloading an episode.
  3. Click the download button again before the download is completed and tap STOP.
  4. The download stops and the episode is marked as played.

Expected behavior
The episode should not be marked as played.

Accept HTTP connection ?

Is your feature request related to a problem? Please describe.
Some RSS provide http URLs (without SSL) to download audio files.

In that case, clicking on the episode download button does nothing (on iOS).
Whereas stream reading episodes works perfectly.

Describe the solution you'd like
As audio file downloading is not risked, maybe we should accept HTTP connections.

Swipe from left edge to go back on iOS

Is your feature request related to a problem? Please describe.
Most native apps on iOS feature the ability to swipe from the left edge to go back, so it's jarring to not be able to do that here, especially considering how high up the back button itself can be on larger screens (which isn't any different in other apps but is mitigated by swipe to go back).

Describe the solution you'd like
Add ability to swipe to go back, ideally as a 1-to-1 gesture (page moves with your finger rather than simply triggering a full "back" action upon any amount of swipe).

Describe alternatives you've considered
Nothing I can think of would really replace this as it's equal parts ergonomics and the specific swipe implementation itself to match other iOS apps.

Additional context
What I mean by 1-to-1:
https://github.com/amugofjava/anytime_podcast_player/assets/93722725/35eed8ef-5983-4db5-9f7f-54b62dfb909c

No HTTP user-agent makes it hard for podcasters

Describe the bug

This app does not seem to set an HTTP useragent for its audio player. This is bad, and means podcasters do not know what product is consuming their free content.

To Reproduce
Steps to reproduce the behavior:

Listen to a podcast. The podcast publisher gets this as an HTTP useragent:

just_audio/0.2.0 (Linux;Android 6.0) ExoPlayerLib/2.12.2

This is the player within this app. It should be something like

Anytime/0.2.0 (Linux;Android 6.0) https://github.com/amugofjava/anytime_podcast_player

Expected behavior
Send a correct HTTP useragent

Screenshots
None

Smartphone (please complete the following information):
I've no idea what smartphone this user is using, other than it appears to be running Android 6, so is very old.

Additional context

A full set of useragents are here: https://github.com/opawg/user-agents

I've spotted your app here: https://podnews.net/about/podcast-stats

Specific episode plays for a second and then stops

E48 of Podcasting 2.0 plays for a second or two and then stops.

Steps to reproduce the behavior:

  1. Go to the Podcasting 2.0 podcast
  2. Play episode 48
  3. Episode stops after a second or two
  • Device: OnePlus 8t
  • OS: Android 11

Nope episode is played successfully in other apps.
Dave Jones confirms.

Connectivity issues can result in episodes being marked as read.

Describe the bug
Anytime is not distinguishing between an episode stopping because it has come to the end or as a result of a connection issue or drop out. If you have mark played episodes as read enabled in settings, this can result in an episode being marked as played when it hasn't.

To Reproduce
Steps to reproduce the behaviour:

  1. Enable mark played episodes as read
  2. Begin streaming an episode.
  3. Enable airplane mode and wait for buffer to run out.

Expected behaviour
If, when streaming, an episode stops due to a connectivity error the current play position should be recorded and the episode should not be marked as played.

Support for desktop version

First of all, congratulations on the work done. I discovered this application while searching for cross-platform opensource podcast players. Unfortunately, there is no support for macos (which I unfortunately use for work) and I thought: maybe it is possible to extend support.

If possible, I would like to try my hand at it, starting perhaps with some minor bugs.

Empty player after existing the app using Android back button

Player is blank after existing the app using the device's back button.

To Reproduce
Steps to reproduce the behavior:

  1. Play any podcast episode.
  2. Close the podcast view and go back to the Library view.
  3. Click on Android back button.
  4. Notice the player is empty. It's also empty in full screen mode.

Expected behavior
Player shows the episode details.

Video
https://drive.google.com/file/d/1UB_prI9P7mjHC0x-KFEFrVxuLD0Zj0hN/view?usp=drivesdk

Smartphone:

  • Device: OnePlus 6
  • OS: Android 10

Additional context
Regression from the latest update it seems.

Latest podcasts and other suggestion

Is it possible to show new coming podcast episodes on one page? It would be nice to see new episodes of all subscribed content at the same time. Another suggestion is It would be nice to be able to change which page the splash screen will be in settings.
Thank you!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.