<commit_before># Podcasts

A simple Android app for playing podcasts (MP3s).

## Server Side

Two to three times per day, cron job running on an Ubuntu Linux server checks
several podcast sites to look for new podcast tracks.  The script downloads
the tracks then does some post-processing:

  * Speed up, usually by 40-50%, reducing a 60-minute track to 40 minutes.
    Lowers pitch so the voices don't sound like chipmonks.

  * Normalize the volume so different tracks are at about the same level.

  * Tweaks the MP3 tags.  Often, tags aren't set to useful information in the
    original MP3 (e.g., a title of "Episode 37").

See scripts/*.

## The App

The app periodically checks the server for new tracks, but only if connected
to my home Wi-Fi network "montana".  The check can be done manually, too, via
the app's menu.  The app pulls any tracks from the server, verifies each was
copied correctly, then deletes the track from the server.

When playing tracks, the app remembers the position of each track.  If you
switch from playing one track to another then go back to the first track, the
app picks up where you left off.

The app has large buttons and a minimal user interface designed to be easy to
use while driving or exercising.  In landscape mode, the app disables the
screen lock so that the display won't turn off while you're driving.  Responds
to the buttons on my car's steering wheel to skip forward 30 seconds or back
10.

There are buttons to skip forward by 30 seconds and back by 10.  These buttons
make it easy to skip past commercial messages.  Hold the forward button for a
few seconds to skip to the end of the current track and mark it "done".

There is a menu button to delete all tracks that are marked "done".

Play/pause/play backs up 2 seconds for a little overlap of where you left off.<commit_msg>Polishing the README.md file.<commit_after># Podcasts

A simple Android app for playing podcasts (MP3s).

## Server Side

Two to three times per day, a cron job running on an Ubuntu Linux server
checks several podcast sites to look for new podcast tracks.  The script
downloads the tracks then does some post-processing:

  * Speed up, usually by 40-50%, reducing a 60-minute track to 40 minutes.
    Lowers pitch so the voices don't sound like chipmonks.

  * Normalize the volume so different tracks are at about the same level.

  * Tweaks the MP3 tags.  Often, tags aren't set to useful information in the
    original MP3 (e.g., a title of "Episode 37").

See scripts/*.

## The App

The app periodically checks the server for new tracks, but only if connected
to my home Wi-Fi network.  The check can be initiated manually, too, via the
app's menu.  The app pulls any tracks from the server, verifies each was
copied correctly, then deletes the tracks from the server.

When playing tracks, the app remembers the position of each track.  If you
switch from playing one track to another then go back to the first track, the
app picks up where you left off.

The app has large buttons and a minimal user interface designed to be easy to
use while driving or exercising.  In landscape mode, the app disables the
screen lock so that the display won't turn off while you're driving.  The app
responds to the buttons on my car's steering wheel.

There are buttons to skip forward by 30 seconds and back by 10 making it easy
to skip past commercial messages.  Hold the forward button for a couple
seconds to skip to the end of the current track and mark it "done".

Long-press a track to select it for playing.  Short-press a track to see
details about the track.

Play/pause/play backs up 2 seconds for a little overlap of where you left off.

There is a menu button to delete all tracks that are marked "done".
{'fraction_non_alphanumeric': 0.0408, 'fraction_numerical': 0.010666666666666666, 'mean_word_length': 3.7420986093552466, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5668845', 'n_tokens_mistral': 1021, 'n_tokens_neox': 949, 'n_words': 641}