A simple Scala script to download podcasts and sync with an Mp3 player
Scala Shell
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
README.md
jonction.properties
jonction.scala
jonction.sh
urls.txt

README.md

About Jonction

Summary

Jonction was initially written because I wanted a simple and reliable solution to download and synchronise a set of podcast feeds with my MP3 player

  • For each feed I always want the n latest episodes on my player (meaning old episodes are automatically deleted).
  • I do not want a GUI as I also want it to work for a headless server (I want to be able to use old headless PC as a podcast sync device)
  • I do not want an external database for the files metadata. I want each downloaded file to hold its own metadata (meaning, I may modify the ID3 tags of the files to normalize the available ID3 data)
  • I want the synchronisation to work both for MTP and mass-storage devices
  • I want to be able to modify the title of the episodes to improve the display of large titles on small screens
  • I want the feed analysis to be fast, that why I wanted to use the Google Feed API as it has a cache of the feeds

Why a Scala script

Jonction happens to be a Scala script because when I decided that I wanted to code this tool, I was also in the process of learning Scala and I was curious to use Scala in script mode. Retrospectively, I didn't know that the script file would be that large and I should have setup a more traditional project structure with src/test. Some day, when I have time, I might retrofit the code script and create a real scala project because it is getting difficult to improve Jonction without a decent test suite.

Also, This script also is for me a playfield to try Scala features !

Current state

Currently, the script solve my initial use cases, I use it on a day to day basis with something like 20 URLs and an MTP player. No more "ho ! I should have downloaded some podcasts" when stuck in a traffic jam.

However, it really is an "alpha" quality script

  • It is not tested on a large set of feeds
  • Was tested only with my own MTP player

If you try Jonction on a player that already contains important data, make sure you have a backup.

Prerequisite

  • A Unix based system (was only tested on Linux, but may be easily adapted to work with cygwin)
  • A Scala interpreter (I use Scala 2.7.3)
  • a wget command line utility available in the PATH
  • the mtp-tools set of MTP utilities available in the PATH (for an MTP player)
  • The jaudiotagger.jar jar file from project Jaudiotagger

Install

  • Copy the jaudiotagger.jar in the directory of the script
  • Update the urls.txt file to add your own feeds (and get ride of mine, of course)
  • Create the ~/Music/Jonction directory (or change the download.dir value in jonction.properties file to target an other directory). The podcasts will be downloaded in this directory before the upload to the device.
  • By default the jonction.properties file is provided with an MTP player configuration. To switch to a mass-storage player configuration, switch device.type=mtp to device.type=fs and set the device.fs.dir value to the mounted directory of the device.

Run

  • Connect your MP3 player
  • In the directory of the script run the ./jonction.sh launcher.