Comments (31)
This sounds like it would fit (better) with a project like Funkwhale, which could then be used to keep one's own/federated 'archive' of podcasts (which you can then download in Antennapod) :)
from antennapod.
This problem affect me. There are a few german podcast which aren't accessable a few hours or days when they release a new episode.
from antennapod.
+1
from antennapod.
+1. Being able to use Bitlove with AntennaPod would be great.
from antennapod.
@danieloeh is it cool to use https://github.com/turn/ttorrent, which is under MIT license? I'd like to have a go at this over the coming weeks and see what I end up with, just making sure no one else is already busy building that feature.
from antennapod.
@hermannloose
I am currently not working on Bittorrent support. I have written a small test app to see if this library also works on Android (and it did), but it would be interesting to know how well it works with AntennaPod.
One issue that kept me from working on this is how to handle streaming of episodes. As far as i know, the only way to do that would be to get the url to the actual audio file from the shared torrent (please correct me if there is any easier way to get the url to the data source), which also means that the PlaybackService would have to handle torrent episodes differently than normal episodes. And since i also want to add support for external audio files, there would then be three different types of episodes. To solve that problem, i was thinking about adding something like an interface for episodes, so that the PlaybackService and all related GUI components would get all the episode data (title, data source, chapters, etc.) through that interface.
But for know it would also be great if you just implemented support for downloading episodes. Support for streaming them could be added later on.
from antennapod.
@danieloeh I don't know much about BitTorrent internals, so I think I'll limit myself to figuring out the downloading side of things first. Apart from the Downloader / HttpDownloader stuff I haven't had the time to look at much of AntennaPod's code yet, but yeah, interfaces are always a good thing I guess.
from antennapod.
@danieloeh http://bitlove.org seem to have an API for torrent feeds that they create and host, which gives you a handle on the original file.
The AntennaPod code I have read so far suggests that parsing of RSS enclosures in NSAtom.handleElementStart()
and the structure of FeedMedia
are intimately tied to the idea that the linked file is always the file that is consumed, i.e. no indirection like in torrents. I suspect this will need a rather involved refactoring, to first download the torrent file and the use the actual content of the torrent as the media to be played.
from antennapod.
I have reworked the way the playback part of the app handles media files and also made some changes to the FeedMedia class so that adding Bittorrent functionality should now be possible.
First of all, the FeedMedia class now knows 4 different URLs: A download URL and file URL for the resource in the enclosure tag (i.e. the .torrent file in the case of Bittorrent feeds), a file URL that points to a local media file once it has been downloaded and a URL that points to a media file that can be streamed by the playback service.
I have already taken care of recognizing Bittorrent enclosures in feeds and updated the database to support the new attributes: A FeedItem can now either have an EnclosedFeedMedia
or a BitTorrentFeedMedia
object. Playback of the local media file should also work, but i wasn't able to test it yet, because the downloading part hasn't been implemented yet.
@hermannloose Please let me know if you would still like to work on this feature. The only thing that is missing should be a Downloader-class for BitTorrentFeedMedia. The feedmedia_update
branch contains all the changes i have just described.
I have taken a look at the bitlove.org API, but the only thing you can do at the moment is to obtain torrent information by the original URL. In order to make streaming possible, it would have to work vice versa. However, the current API would make it possible to use Bittorrent for episode downloads even if you haven't subscribed to a Bittorrent feed. I think it would make sense to add support for that, too.
from antennapod.
@danieloeh I'll have a look at your changes next week, previously I didn't spent much time on it since it looked like a bigger refactoring than I was willing to tackle at the moment.
from antennapod.
Wow, seeing this implemented would be great. I'm using BeyondPod right now, but I'm missing chapter marks and Bittorrent support. Since Tim Pritlove (german podcaster, initiator of BitLove, Auphonic and the pushing of chapter marks in podcasts (like his MobileMacs podcast)) unites two unique features of AntennaPod it might make a prominent appearance in their show once this feature is implemented.
votes++;
from antennapod.
@danieloeh Just a heads-up that I am currently busier with university stuff than I thought I would be and not really finding the time to work on this, so if someone else wants to do it that's cool.
from antennapod.
There is an APK available in the Nightly Builds folder in case you would like to take a look at the current state of the feedmedia_update
branch.
Downloading episodes from a torrent-feed already works, as well as downloading an episode from an ordinary feed via bittorrent (by using the Bitlove API), if it is available on bitlove.org. The latter feature has to be enabled in the settings first.
There is also a "Seed Service", which has to be enabled in the settings first. If enabled, it will start after the device has been inactive for a while. It will then seed already downloaded episodes while the device is connected to a Wifi network and charging.
Please note that this APK (or at least all the bittorrent features) will only work reliably on ARM devices at the moment. There are also occasional crashes that haven't been fixed yet.
from antennapod.
Wow, cool! Testing it right now / teste es gerade...
Oh, beendet. Auf einem Nexus 4, neuestes Android.
Am 14.03.2014 15:26 schrieb "danieloeh" [email protected]:
There is an APK available in the Nightly Buildshttps://www.dropbox.com/sh/45vgg13bmh8jmhp/uZ_3KJIi5Kfolder in case you would like to take a look at the current state of the
feedmedia_update branch.
Downloading episodes from a torrent-feed already works, as well as
downloading an episode from an ordinary feed via bittorrent (by using the Bitlove
API http://bitlove.org/help/podcaster/api), if it is available on
bitlove.org. The latter feature has to be enabled in the settings first.
There is also a "Seed Service", which has to be enabled in the settings
first. If enabled, it will start after the device has been inactive for a
while. It will then seed already downloaded episodes while the device is
connected to a Wifi network and charging.
Please note that this APK (or at least all the bittorrent features) will
only work reliably on ARM devices at the moment. There are also occasional
crashes that haven't been fixed yet.Reply to this email directly or view it on GitHubhttps://github.com//issues/31#issuecomment-37652139
.
from antennapod.
Thanks for much for this feature! Works fine on the FairPhone. Some bells & whistles, please? BitLove (or general BitTorrent) icons in Downloads view, to distinguish them from regular downloads.
from antennapod.
I noticed one strange glitch in that build, regarding the Raumzeit podcast feeds: The title is never shown and it appears at the top of the list. Both the Bitlove feeds and the regular ones are affected, but no other podcast so far, and neither in the latest stable version.
from antennapod.
I have just uploaded a new nightly build, which adds a visual indicator for the type of protocol that is used during the download and fixes another bug.
@Cathryne The title-tag of the Raumzeit feed is empty at the moment: http://feeds.feedburner.com/raumzeit-podcast-mp3 (if you view the source and search for the first occurence of 'title', you can see it).
@BitScout Could be a bit more precise about when the app crashes? Does it always crash or only occasionally?
from antennapod.
Oh, sorry! I didn't think of this most basic explanation m-) Will ask the Raumzeit makers about this.
from antennapod.
Looking forward to this feature. Currently my opml import from miro has many bitlove feeds so now I have many feeds on AntennaPod without any download link.
from antennapod.
I just tested the linked apk and got a crash when I hit "cancel all downloads" half way through a download. I have no idea how to debug it, it said nothing more than the standard "antennapod has stopped working" or words to that effect. Is this work likely to get merged into the main branch at some point? I notice it's getting quite behind, and doesn't have the nice new UI improvements. I'm just getting started with android development myself. Let me know what I can do to help, time permitting. Cheers. Love the app, many thanks fot all the hard work on it.
from antennapod.
@timabell The bittorrent implementation is basically done since March 2014. However, on some devices or versions of Android there seems to be a problem with the libtorrent bindings or maybe the way libtorrent has been compiled. Until this problem hasn't been resolved, this shouldn't be merged.
Switching to a different library (like ttorrent) might also be a solution.
from antennapod.
Thanks for the info, I'll post an update if I manage to do anything useful towards this :-)
from antennapod.
Unfortunately the current AntennaPod team doesn't have time to work on this feature and it doesn't seem like it's going anywhere at the moment. If anyone would care to submit the change at some point in the future we would certainly consider integrating it.
from antennapod.
Is anyone still working on this? Peer-to-peer podcasting sounds really great, and maybe people from @dat_project and @ipfs would like to integrate their solutions as well.
from antennapod.
I may be interested in picking this up if I can find the time; especially if it's as simple as switching a torrent client library.
I don't suppose anyone has any idea of the relative complexity of adding dat:// or ipfs support on top of this might be? I also think peer-to-peer podcasting sounds like an awesome idea.
from antennapod.
It is probably quite a lot of work to do. You have to add another Downloader class that handles torrent feeds. I am also not sure about the apk size. A torrent library sounds like it could be quite big. I do not want to increase the apk size for everyone if most users would not use the feature. I have not looked for libraries and their sizes, though.
from antennapod.
Understood @ByteHamster, I do agree that if it adds a significant overhead to the package payload it doesn't make sense to force all users to deal with it.
I may potentially make a fork capable of this functionality, if it seems feasible, but we'll see.
from antennapod.
Just a thought; would there be a way to serve podcasts from the device to antennapod that would be more sympathetic to the project? What if a companion app was made to handle the actual obtainment of episodes so that the only thing AntennaPod need do is consume local files?
from antennapod.
Work on adding local files was started in #2991 but the PR has not seen updates, recently.
Do you have examples for podcasts that use torrent downloads? I have not found any popular podcast that offers torrent downloads.
I also think peer-to-peer podcasting sounds like an awesome idea.
After reading about this a bit, it does not look like podcasts hosted with programs like bitlove will be completely peer-to-peer. The actual feed still needs to be downloaded on a central server. Only the media files can be downloaded via peer-to-peer.
from antennapod.
Unfortunately I don't think there really are any totally decentralised podcasts, none that I know of at least.
This is less for something that exists and more something that I think would be pretty useful if it did exist. I have recently witnessed second hand a podcast come offline because the owner passed away. Being able to subscribe to podcasts that are hosted in a decentralised manner could be a good way to get around this.
Specifically, to get around the feed hosting element that you highlight, the rss feed would probably have to be hosted on something like dat:// or another such dweb protocol.
As I already use AntennaPod as my daily driver for podcasting, it was the first place I thought of when I was considering the idea of decentralised podcasting.
from antennapod.
This is less for something that exists and more something that I think would be pretty useful if it did exist.
I am still not sure if this is viable. Torrent podcasts would need seeders and I don't think mobile phones with limited data plan and limited battery should do that.
from antennapod.
Related Issues (20)
- Issues on database import. Bug makes the app unstable and it wipes all the data of the app to default. HOT 7
- Vertical videos shown on incorrect orientation
- OPML file containing podcast without title or URL makes it impossible to subscribe to further podcasts HOT 18
- swipe refresh loading indication too long
- Refresh Podcasts failed possibly due to a blocked google domain HOT 2
- The "auto resume" feature just disappeared HOT 2
- Introduce 'Untagged' tag HOT 6
- The bottom Media Controls in app do not appear (work around) HOT 2
- [Feature request] UnifiedPush / NextPush support HOT 4
- Add "audio only" option in settings
- separate speed setting in podcasts are not observed HOT 2
- upgraded to androidx.media3 HOT 1
- Newly subscribed podcasts counts don't increment HOT 3
- Additional information / workaroudn for #6576 HOT 7
- Global playback speed cannot always be set via app settings dialog, but is overwritten by feed settings dialog HOT 5
- cert issue HOT 5
- Option to select design of subscriptions screen HOT 2
- Error trying to sync with micro-gpodder-server in server subpath (https://example.com/gpodder/) HOT 5
- Changing podcast speed while paused and changing to a different podcast does not cause speed change to take effect. HOT 2
- `DELETE` action not synced HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from antennapod.