Export list of unlistened episods?

I see that it is possible to export the list of subscriptions and the list of favorites, but is it possible to also export for each subscription the list of unlistened episods?

Hi @brab

Anything is possible :wink: But for someone to build it and for the main team to accept the code, it would be helpful to learn more about your use-case. Can you explain a bit about why you would like to have this; how you would use it?


Hi @keunes

Thank you for taking the time to answer. My Fairphone 2 is at the end of its life (at 5 years, I hope it makes it to 6), and I’m considering switching to a phone where AntennaPod is not available. I would thus like to have a way to set up another app. I know I can transfer subscriptions using OPML, but aside from manually writing down the episodes I have not listened to, I don’t know how to get that information.

Thanks a lot for AntennaPod, it’s been my podcasting app of choice for 5 years now.

1 Like

Please don’t :wink:

And as a Fairphone 2 and 3 user I would like to say: please don’t write off Fairphone 3 based on the FP2 experience. It’s a world’s difference (both hard and software).

Right. While I think AntennaPod should support data-portability, I’m not sure this is the right way. Because an exported list probably won’t allow you to import it on another phone - it would probably only allow you to get an HTML list. I would rather see time & love being spent on direct app integration (early discussion initiated here).

It is possible to export your AntennaPod database and get the information from there. Now, that’s quite technical and I personally don’t have much (if any) experience with it. But I’d be happy to give it a shot if you’re not in a rush (I wouldn’t be able to do it soon – somewhere over the winter break).

If Antennapod was the only deciding factor, I would not switch.

I’ve been quite lucky (and happy) with my FP2, and I plan to keep it at least till next fall. But I’m thinking of what comes after.

I agree exporting the list would not allow me to import it easily, but it’s already half the job. (I actually had the same issue when I started using Antennapod 5 years ago: I had to write down all the episodes I had yet to listen from the old app, and mark them as unplayed in Antennapod.)

Ah, this is great to know. I do a weekly backup of the database (I was bitten by corruption a few years ago, but it never happened again), so I have the data. I’d love to have instructions on how to get the information out of it. And as I said, there is clearly no hurry.

Thanks again for taking the time to reply.

1 Like

Good thing you were not in a hurry, because I’m a bit behind on my forum activities.

The export AntennaPod database is a sqlite file, which at least I have found to be fairly straight forward to understand the contents of. I don’t know your background and previous experience with databases. There are other tools around, but to illustrate I’m using the sqlite3 command line tool:

sqlite3 AntennaPodBackup-2023-03-10.db

After opening the database, it can be examined and two interesting TABLEs appear:

sqlite> .schema Feeds
CREATE TABLE Feeds (id INTEGER PRIMARY KEY AUTOINCREMENT ,title TEXT,custom_title TEXT,file_url TEXT,download_url TEXT,downloaded INTEGER,link TEXT,description TEXT,payment_link TEXT,last_update TEXT,language TEXT,author TEXT,image INTEGER,type TEXT,feed_identifier TEXT,auto_download INTEGER DEFAULT 1,flattr_status INTEGER,username TEXT,password TEXT,include_filter TEXT DEFAULT '',exclude_filter TEXT DEFAULT '',keep_updated INTEGER DEFAULT 1,is_paged INTEGER DEFAULT 0,next_page_link TEXT,hide TEXT,last_update_failed INTEGER DEFAULT 0,auto_delete_action INTEGER DEFAULT 0, image_url TEXT, feed_playback_speed REAL DEFAULT -1.0, sort_order TEXT, feed_volume_adaption INTEGER DEFAULT 0, feed_skip_intro INTEGER DEFAULT 0, feed_skip_ending INTEGER DEFAULT 0, episode_notification INTEGER DEFAULT 0, tags TEXT, minimal_duration_filter INTEGER DEFAULT -1);

Where Feeds contain all your subscriptions, and FeedItems contain all their episodes:

sqlite> .schema FeedItems
CREATE TABLE FeedItems (id INTEGER PRIMARY KEY AUTOINCREMENT ,title TEXT,content_encoded TEXT,pubDate INTEGER,read INTEGER,link TEXT,description TEXT,payment_link TEXT,media INTEGER,feed INTEGER,has_simple_chapters INTEGER,item_identifier TEXT,flattr_status INTEGER,image INTEGER,auto_download INTEGER, image_url TEXT, podcastindex_chapter_url TEXT);
CREATE INDEX FeedItems_feed ON FeedItems (feed);
CREATE INDEX FeedItems_image ON FeedItems (image);
CREATE INDEX FeedItems_pubDate ON FeedItems (pubDate);
CREATE INDEX FeedItems_read ON FeedItems (read);

The read field corresponds to whether an episode has been listened to or not. If the value is 1 it has been played, 0 means unplayed and the special value -1 means the episode is new (still in the inbox).

SELECT feed,id,title,item_identifier,link FROM FeedItems WHERE read!=1 ORDER BY id DESC LIMIT 5;
1|78229|#144 Helsingborg – ett murat drama|640a574dcbae23001187fc2a|https://stadenpodcast.se
603|78224|Anne Bonny – Karibiens sjörövardrottning|rss:sr.se/pod/eid/2134838|https://sverigesradio.se/avsnitt/2134838
2|78222|Risky Business #698 - Why LastPass was probably DPRK|https://risky.biz/RB698|https://risky.biz/RB698
620|78221|Så slår Anonymous Sudan och ryska hackare mot Sverige|rss:sr.se/pod/eid/2132114|https://sverigesradio.se/avsnitt/2132114
534|78213|Cigarrpodden #89|a1b81a6e-14c6-45c9-b712-88f5676b31b3|https://figaromusic.libsyn.com/cigarrpodden-89

You should be able to do similar queries towards your own database, but for completeness; Here’s the corresponding RSS feed links for the matches above:

sqlite> SELECT id, download_url FROM Feeds WHERE id=1 OR id=603 OR id=2 OR id=620 OR id=534;

The item_identifier in the database should match the value in the <guid> tag of the RSS, and thus be suitable as input for scripting. Depending on how many subscriptions and episodes there are, it might be simpler to just care about the titles and manually update the state in the new player.

Does this help you achieve what you need?

1 Like

Yes, this is exactly what I needed. Thanks a lot!

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.