- MCP server with stdio transport for local use - Search episodes, transcripts, hosts, and series - 4,511 episodes with metadata and transcripts - Data loader with in-memory JSON storage 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
256 lines
18 KiB
Plaintext
256 lines
18 KiB
Plaintext
Episode: 3161
|
|
Title: HPR3161: How I manage podcast listening
|
|
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr3161/hpr3161.mp3
|
|
Transcribed: 2025-10-24 18:01:00
|
|
|
|
---
|
|
|
|
This is Hacker Public Radio Episode 3161 for Monday, 14 September 2020. Today's show is entitled,
|
|
How I Manage Podcast Listening. It is hosted by Dave Morris
|
|
and is about 20 minutes long, and carries an explicit flag. The summary is
|
|
another reply to MRX's episode on how he listens to podcasts.
|
|
This episode of HPR is brought to you by An Honesthost.com.
|
|
Get 15% discount on all shared hosting with the offer code HPR15. That's HPR15.
|
|
Better web hosting that's Honest and Fair at An Honesthost.com.
|
|
Hello everybody, Dave Morris here.
|
|
Welcome to Hacker Public Radio. This episode is called How I Manage Podcast Listening.
|
|
I'm replying to MrX's episode on how he listens to podcasts.
|
|
He was asking for other people to chip in and say how they do what he was describing.
|
|
I've got my own home brew semi-home brew podcast management system.
|
|
I have spoken about it before quite a long time ago.
|
|
There's a link to it in the notes, but I didn't talk much about this area of things, playing episodes.
|
|
So I thought I would do that now.
|
|
MrX's episode was called Keeping Track Where I Am, dealing with the problem of what he's
|
|
listening to, how far he's got through a thing and sort of stuff.
|
|
So in summary then, my podcast, the details of my podcast are held in a database
|
|
which runs on my desktop PC, and I keep details from the feed for each episode.
|
|
If there's currently a file relating to the episode that's mentioned in the feed,
|
|
I have downloaded it, haven't deleted it, then the database knows where it is.
|
|
I keep episode details in the database for episodes I've already listened to.
|
|
Just for interest, I guess, really.
|
|
Now every podcast feed that I have is assigned to a group.
|
|
So I have music, science, documentary, technical, and...
|
|
I interface the database on my desktop PC using my interface to it.
|
|
I should say using command line scripts.
|
|
I'm a great command line user.
|
|
I use the PD menu tool, I've done a show about in the past, and I use the menu through that.
|
|
So that gets me to where I want to be very quickly and easily.
|
|
I don't really want to have a GUI to do all this sort of stuff.
|
|
GUIs are a useful in certain contexts, but quite limited as far as I'm concerned.
|
|
The actual episode is on a Raspberry Pi, which runs all the time.
|
|
I used to keep it upstairs in my spare room, but it's now downstairs because I've got a bunch of shelves
|
|
over the top of my desk area.
|
|
The Pi has got an SSD attached to it, and so I mount the podcast directory on it
|
|
to my desktop through FS tab using NFS.
|
|
I download podcast episodes overnight on the Raspberry Pi using my own hacked version of the old,
|
|
venerable, bash podder, which is what I did talk about in the past.
|
|
I have a bunch of MP3 players which have got rockbox installed.
|
|
Rockbox is key to what I'm doing here, and I usually load up my players with episodes
|
|
using a script that's aware of the feed groupings I mentioned earlier.
|
|
It makes a playlist in the database and writes a copy of that to the player.
|
|
Rockbox knows what it's supposed to be playing in and what order.
|
|
The database playlist table holds the alias of the player so I can have a playlist
|
|
per player out of the database.
|
|
As I play an episode, I run a script that adds data to the database to show
|
|
that the episode is being played.
|
|
Rockbox itself tracks which episode I'm listening to where I am in the audio on the player.
|
|
After playing an episode, I run a script that lists episodes marked to be playing
|
|
at the previous point, and it allows me to delete them from my PC and from the database.
|
|
I don't usually delete anything from the player until I next upload to it,
|
|
which I think might be a mistake, but at least I need to add a step that handles that a bit better.
|
|
The reason for this is there's an issue with the size of a group and the space on a player,
|
|
especially in recent times because I'm not listening to podcasts as quickly as I used to
|
|
or maybe I have more feeds than I used to or maybe there are more episodes coming out on feeds.
|
|
I think there's a bit of that.
|
|
And these players are not vastly huge, they're only like four gigs, six gigs, eight gigs.
|
|
So sometimes the number of shows in a group are more than the player can take
|
|
and the mechanism is organised per group because that was not a problem when I first did it.
|
|
I don't delete files on the player until I upload new ones.
|
|
There's part of the process, the script says, always told if you find anything on there, delete it first.
|
|
So doing it that way, I don't know how much space is there there is on the player before I upload to it.
|
|
So that's something I'm going to have to work on.
|
|
I have a script that shows the numbers of files and total sizes for the groups
|
|
and both files which have been copied to players and those pending to be written at your course.
|
|
So I'm going to use these sizes to make decisions about what gets uploaded.
|
|
In the worst case I can write episodes to a player selected by feed name if they're a capacity issue.
|
|
So I don't have to go by groups, I can pick out individual feeds if I want to.
|
|
I don't have an easy way of at the moment of working at how much capacity I have in a feed.
|
|
That's also something I need to have to work on.
|
|
So the sizing issue, capacity issue is something that needs work.
|
|
So I addressed in my notes to talking about how I upload the contents of a feed to a player.
|
|
So I'm using, I actually did this and then snap shorted the output and stuff for the notes.
|
|
The player actually being used is one of my Sansa clips and it's got an alias of clip.
|
|
The player runs rock box as usual.
|
|
It gets mounted by the software I have on media slash USB2.
|
|
And there's an alias I run called player underscore mount and you can see it demonstrated here.
|
|
And the commands that are run by that alias, they're just a collection of command and script.
|
|
They look on the player for a file called player name and display it using the figlet tool which just gives you an interesting looking display of a word.
|
|
So I do player mount and it says clip. That's the name of the thing you've plugged in.
|
|
It's not one of the other ones that I have and so confusion doesn't easily.
|
|
And the database needs to know what player the stuff's been written to just to help manage things.
|
|
So then I run a script called copy episodes and it performs the upload of episodes.
|
|
This is the one that just does a feed.
|
|
It uses an option hyphen locacy followed by a capital C and it that tells it to remove any media found on player before writing stuff.
|
|
There's a directory. This is a rock box thing directly called podcast in other case and I use that to write stuff to.
|
|
If I were to use hyphen locacy space capital N then that allows me to append stuff to the player.
|
|
So I could use copy episodes to write the contents of several feeds to the player if I wanted to.
|
|
The feed name itself is a regular expression so in the example you'll see hacker.
|
|
So the actual command is dot slash copy episodes hyphen locacy and space slash media slash U of B2.
|
|
Hyphen locacy clip of the player locacy hyphen locacy capital C and then hyphen locacy F hacker.
|
|
So that says go and find a feed that's got hacker in it and nobody got one and it's hacker probably radio.
|
|
So the script then generates a playlist on the player and it's stored in the directory playlists which again is a thing that rock box needs.
|
|
It's called podcast dot M3U and it contains the path to the episode relative to the player.
|
|
So rock box and use that to find the episode and play them in sequence I hand them in.
|
|
And of course I hand them in in date order and there you go.
|
|
So it shows what happened and you run this.
|
|
Delete the files off the player it then copies them and displays what it's copying.
|
|
The way I run the bash pod of clone is that it writes it's daily downloads to a directory with the date.
|
|
I mean I saw it 601 format so you'll see there's a list of directory which are actually in date order.
|
|
I don't use that is the date stored in the database to sort them.
|
|
Then there's just a few other messages which really when I look at them they're fairly redundant.
|
|
It says it's created a playlist said it copied seven files pretty redundant.
|
|
That's the database saying that it got seven files added to the playlist.
|
|
Then I run the alias player underscore you mount and mount the thing.
|
|
And there you go it's it done.
|
|
There is an alternative script copy group which does the something very similar but it does it by groups.
|
|
It will for a given group there's usually multiple feeds so it will iterate through.
|
|
So once I've got the episodes on the rock box player,
|
|
I then use the standard rock box menu to navigate to the playlist catalog entry in the main menu.
|
|
And that lists all the playlists currently on the device.
|
|
When I click on the central button on the Sansa clip which means you know into this particular menu entry,
|
|
then it shows a list a playlist with the name podcast.
|
|
That's what I wrote there remember.
|
|
And then if you click on that it shows a numbered list of episodes.
|
|
And you just click on the first one then it starts playing the playlist.
|
|
You do need to go through these steps to make the playlist play but don't find that to be a huge typical.
|
|
They can do it pretty much even looking.
|
|
I've got sound prompting turned on, the majority of my rock box players.
|
|
So it says it just reads the menu entry back to me and tells me what where it is.
|
|
So I often do do this in the dark.
|
|
And my rock box players are set to write a bookmark for the currently playing episode when the player is turned off.
|
|
They're also set to auto resume after stopping.
|
|
So I can stop and turn off during playback minutes.
|
|
So it usually stop it first or just hit turn off.
|
|
They can do that.
|
|
But after I've done that the player will make a bookmark.
|
|
And if you've got the speech turned on it will say but it's doing that.
|
|
And then when I switch back on again it will leave off.
|
|
It will resume where I left off.
|
|
If for any reason I navigate away from the playlist some of the players have got a few other things on like music and stuff like that.
|
|
Then I can get back to where I was with the resume playback.
|
|
I took on the main menu or I could look in recent bookmarks to find a bookmark relating to the podcast that I played.
|
|
Or I could go back to the playlist catalog and work my way down the list to find which one I last listened to.
|
|
I don't think there's probably a point in there where you might fail to resume where you left off.
|
|
I don't think I've ever managed to trigger that.
|
|
I guess because I tend just to use these players as podcast players.
|
|
But on the whole I'm very, very, very happy with it.
|
|
The previous software I had on my earlier players couldn't do anything nearly as sophisticated as this.
|
|
They imposed their own sorting on playlists or they didn't handle playlists and they didn't save state after you stopped them or they didn't resume after you restarted them.
|
|
All these sorts of things. Rockbox handles it all. Rockbox is brilliant.
|
|
But unfortunately the number of players that can handle it these days is dwindling.
|
|
I put a list of my players here just a dump from me from the database.
|
|
I tend to use the Sansa Clip Zip.
|
|
So I've got Clip Zips and Clip Pluses and one Clip.
|
|
The one called Clip was when I bought new. Some of the other ones have been bought off eBay.
|
|
I did a show on all of this so I won't go into any more.
|
|
So how do I track what's been played and what's not and delete stuff?
|
|
Well, what I do is I have a bunch of scripts which get run as I am listening to stuff when I've changed podcast or even changed player.
|
|
So I've got a script which will mark an episode as being played.
|
|
Another script which will delete those that I've selected to, after I've listened to them.
|
|
So I did this as I was preparing the notes.
|
|
And at that particular point I had two players in which were in action.
|
|
One's called Clip which we saw earlier on getting loaded up.
|
|
And the other one's called Zip 2 which is a Clip Zip red one.
|
|
And that's got a whole bunch of things on it. Some of which I've already played.
|
|
So there's a transcript of what happened when I run my scripts.
|
|
It's again run out of menu or PD menu.
|
|
I get a list of all of the episodes on the Clip and they're in numerical order.
|
|
They have a number again on the left hand side.
|
|
And then it's square brackets, a player name and the sequence number within the play list.
|
|
And then they have the title. So it's pretty easy to know what you can.
|
|
In fact, change the order if you want to.
|
|
You'd have to gone to listen to a specific thing manually on the player in order.
|
|
The two are only logically linked together, linked together in my...
|
|
So the second chunk of data here is what's on the Zit player.
|
|
And there's a lot. I didn't list it all. Just listed from the current one.
|
|
Episode 38, sequence 30, as you'd say, in up to 43.
|
|
And it's mintcast and listening to the backlog of mintcast.
|
|
So having displayed all this a lot, you can be a little bit long.
|
|
That might be a disadvantage, I don't know.
|
|
But just sort of lip with it. It's not a thing that bothers me. It's just the way it is.
|
|
You get the prompt select number, call it bracket s.
|
|
Because you can select multiple episodes if you want.
|
|
And I select number eight. Well, number eight is on the zip two.
|
|
It's sequence number 38 and it's mintcast 338.
|
|
So it marks that as playing, being played.
|
|
So this is me. I've just finished the previous episode and I'm now going to listen to the next one.
|
|
So this is marking it as in process.
|
|
And this message is like marking and it says what it's marked and it says someone changed.
|
|
Then the second script is called and it shows two zip two entries marked 0102.
|
|
It says mintcast 337.5 and 338.
|
|
So 337.5 is the one I've just finished listening to.
|
|
338 is what I'm going to listen to next.
|
|
And oh, I should say the rock box. I've got it configured runs from one episode to the next.
|
|
So there's no stopping between them or anything. I've just taken the action.
|
|
But I do need to come here to the PC and run this sequence of commands in order to keep the database contents in step with actually happening on.
|
|
So I'm asked to select a number. I select one from this list, which means I want to delete mintcast 337.
|
|
Then there's a bit more in the listing. I split it up into pieces.
|
|
I actually put text around it just to explain.
|
|
So the next bit shows how many podcast files still exist.
|
|
It says 262 episodes are sitting around in the database in 83 directories, which is information for the sake of it, I guess.
|
|
It also computes the total size of all these podcast, which was 10 gigabytes at that particular point.
|
|
Then there's a log kept of the duration of all of these episodes, just because I like doing this sort of thing.
|
|
And it's currently a listing of this.
|
|
The last few lines of this particular file is kept in a cache file.
|
|
And at that particular time, which was the 24th of August, 11.02 in the morning, there's one week, one day 47 minutes and 58 seconds of podcasts to listen to.
|
|
I want to list them sequentially.
|
|
The final thing is there's a script that's run to analyze what podcasts I'm actually listening to or actually active on whatever players I have.
|
|
And there's only one at this moment, and that's the main cast for it.
|
|
And it's the information's listed out, the player, the podcast and all that sort of stuff.
|
|
So I'd say I usually only have maximum of three players active any time, mostly just one, sometimes two, three very rare.
|
|
Final thing I wanted to say was the ID3 in similar tags on episodes.
|
|
And I did say this in the previous episode.
|
|
Previous episode I'm talking about is number 2211, my podcast, which talks a bit about this stuff.
|
|
But I thought it was worth just doing a brief update on things.
|
|
So as I process the day's batch of incoming podcasts, because they're happening overnight on a Raspberry Pi.
|
|
And I go to a run something on my desktop first thing in the morning, which checks everything and make sure all the information's stored in the database and all that.
|
|
But a longer way I manipulate the audio metadata, generally, to its tags.
|
|
I think ID3 only refers to MP3 tags.
|
|
I have a pulse script, which I wrote, which is the rules file for each field and performs checks and actions on the episodes it finds.
|
|
And I, in general, I tried to make sure that there's a valid title, because I want to see the title in the list or go.
|
|
And sometimes there's no tags whatsoever in the script can fill them in from the feed itself.
|
|
So feed contains bits of information, titles, comments.
|
|
And so it stuffs them into the tag in the actual file.
|
|
Now, some feeds put the feed name in the title.
|
|
So the mincast case, it's easy to look at the list and say, all right, next I'm going to be listening to mincast.
|
|
Sometimes all you get is a title that's just the title of the episode doesn't say what it's actually going to be.
|
|
I know this is a feature of the way I do think that there's no compulsion for them to do this.
|
|
In the case of HBR, there's no flag for HBR in the title itself.
|
|
So my rules add this to it, just for my convenience I can see it.
|
|
Do you find it's supposing how many feeds produce episodes that have no metadata to it?
|
|
I'm saying I used to write to feed owners and ask for these to be filled in.
|
|
But mostly they said, go away or who are you?
|
|
Why are you talking to me?
|
|
So that's why I involved my own method of dealing with that stuff and a thing that annoys me still.
|
|
I don't know why you would bother to make podcasts and not put stuff in the tags and the tags.
|
|
Anyway, that's it really.
|
|
It's a weird and wonderful way of doing things.
|
|
Mistrex's solution to this is a fascinating one.
|
|
I think there's another response in the queue.
|
|
I haven't heard yet.
|
|
Down to person has done one, I think.
|
|
And so it's an interesting subject, I thought.
|
|
You have anything to add to this one.
|
|
I would be fascinated to hear what you do.
|
|
All right then.
|
|
Bye.
|
|
You've been listening to Heka Public Radio at HekaPublicRadio.org.
|
|
We are a community podcast network that releases shows every weekday Monday through Friday.
|
|
Today's show, like all our shows, was contributed by an HPR listener like yourself.
|
|
If you ever thought of recording a podcast, then click on our contributing to find out how easy it really is.
|
|
Heka Public Radio was founded by the digital dog pound and the Infonomicon Computer Club.
|
|
And it's part of the binary revolution at binrev.com.
|
|
If you have comments on today's show, please email the host directly.
|
|
Leave a comment on the website or record a follow-up episode yourself.
|
|
Unless otherwise stated, today's show is released under Creative Commons, Attribution, ShareLife, 3.0 license.
|