amugofjava / anytime_podcast_player Goto Github PK
View Code? Open in Web Editor NEWSimple, easy to use Podcast player app written in Flutter and Dart.
License: BSD 3-Clause "New" or "Revised" License
Simple, easy to use Podcast player app written in Flutter and Dart.
License: BSD 3-Clause "New" or "Revised" License
Please follow the system theme by default.
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:
Expected behavior
The search provider setting must not change when changing other settings.
Screenshots
N/A
Smartphone (please complete the following information):
Additional context
N/A
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.
When the app is in background the queue stop executing when the current episode ends.
To recreate the issue to the following:
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');
}),
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(...),
);
}
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:
Expected behavior
The episode time should not be zeroed if already fetched.
Please publish the Windows app.
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:
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.
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:
Expected behavior
Should default to English in the same way the rest of the app does.
Smartphone (please complete the following information):
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!
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?
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:
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.
Smartphone (please complete the following information):
Describe the bug
Refreshing large podcasts can be very slow.
To Reproduce
Steps to reproduce the behavior:
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.
Please add support Themed Icon on Android.
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:
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):
Additional context
Add any other context about the problem here.
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:
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Subtitles are shown as on KDE Express
Smartphone (please complete the following information):
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
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.
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:
Expected behavior
Updating the episodes should be quicker and should not get progressively slower.
Smartphone (please complete the following information):
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:
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
Smartphone (please complete the following information):
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:
Expected behaviour
Should have hopefully built with the latest packages.
Smartphone (please complete the following information):
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`
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.
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:
Expected behavior
Should play like other episodes
Screenshots
If applicable, add screenshots to help explain your problem.
Smartphone
Additional context
I was told this specific episode is using a redirected enclosure URL.
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.
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.
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 :
FlutterDownloader
FlutterDownloader
task id -> persists it in sembast Episode.downloadTaskId
DownloadService
Episode.downloadTaskId
in SembastIn 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
Smartphone (please complete the following information):
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
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
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:
Expected behavior
OPML files should be selectable for import.
Smartphone (please complete the following information):
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.
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:
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
Smartphone (please complete the following information):
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.
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):
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.
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.
Describe the solution you'd like
Translations management is tricky and many issues can occur.
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 :
arb
files@amugofjava If that's alright to you, I can setup a Weblate project to give it a try.
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:
Describe the bug
Podcasts that use Let's Encrypt as their CA fail to load.
To Reproduce
Steps to reproduce the behavior:
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.
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.
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:
Expected behavior
It should load the podcast episodes.
Smartphone (please complete the following information):
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.
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:
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.
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
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:
Expected behavior
The episode should not be marked as played.
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.
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
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
E48 of Podcasting 2.0 plays for a second or two and then stops.
Steps to reproduce the behavior:
Nope episode is played successfully in other apps.
Dave Jones confirms.
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:
mark played episodes as read
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.
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.
Player is blank after existing the app using the device's back button.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Player shows the episode details.
Video
https://drive.google.com/file/d/1UB_prI9P7mjHC0x-KFEFrVxuLD0Zj0hN/view?usp=drivesdk
Smartphone:
Additional context
Regression from the latest update it seems.
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!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.