2020-12-15 The David W. Niven Collection of Early Jazz Legends, 1921-1991

I think I want a copy of The David W. Niven Collection of Early Jazz Legends, 1921-1991 from the Internet Archive.

This is an extraordinary collection. It has been Mr. Niven’s life’s work. It represents the very finest American music of the twentieth century, and because Mr. Niven took the time and care to record these commentaries, he has produced a library that is accessible to everyone from jazz aficionados to jazz novices. – From the archivist’s notes by Kevin J. Powers

And I think I found a way to get 625 torrent files. This is what bit torrent was made for! 😍

Get the 625 torrent files. This takes a while!

wget -r -H -nc -np -nH --cut-dirs=1 -A .torrent -e robots=off -l1 \
  -i ./itemlist.txt -B 'http://archive.org/download/'

If you’re happy to take them from my site:

Install the Transmission daemon, make sure it doesn’t run, edit settings and change the password, start it again.

sudo apt install transmission-daemon
sudo systemctl stop transmission-daemon
$EDITOR /etc/transmission-daemon/settings.json
sudo systemctl start transmission-daemon

Check it out via your web browser at localhost:9091.

Install the remote client and add all the torrent files, and list them again, just to be sure:

sudo apt install transmission-remote
for t in *.torrent; do transmission-remote --auth=transmission:PASSWORD --start-paused --add $t; done
transmission-remote --auth=transmission:PASSWORD --list

This should list 625 torrent files.

But first, make sure that we don’t get all the files! If you skip this step, you’ll get all the FLAC and WAV files, too. Your poor disk.

transmission-remote --auth=transmission:PASSWORD --torrent all --no-get all

Let’s find the files we care about using a little Perl script. What we need are the torrent numbers, and for each torrent we want the file numbers of the JPG and MP3 files. Not the filenames! If you use the filenames, there is no warning and you’re getting all the files…

#!/usr/bin/env perl
use Modern::Perl;
my $pwd = shift or die "No password provided\n";
for (qx(transmission-remote --auth=transmission:$pwd --torrent all --list)) {
  next unless /^ *(\d+)/;
  my $torrent = $1;
  for (qx(transmission-remote --auth=transmission:$pwd --torrent $torrent --files)) {
    chomp;
    next if /thumb\.jpg$/;
    next unless /\.(jpg|mp3)$/;
    next unless /^ *(\d+)/;
    say "transmission-remote --auth=transmission:$pwd --torrent $torrent --get $1";
  }
}

Then, verify that you like the result and pipe it into a shell in order to execute the commands:

./get-files.pl PASSWORD
./get-files.pl PASSWORD | sh

Verify the result using the web interface. Click on a torrent, click on the information icon in the top right corner, and in the new detail window, click on the right-most tab, the one with the two documents on it. You should see only the JPG and MP3 files checked.

If you’re happy, you could start all the torrents – but I soon ran into an error: “Unable to save torrent file: Too many open files (torrent.c:537)”.

So, don’t do this:

transmission-remote --auth=transmission:PASSWORD --torrent all --start

Instead, either use the web interface to select a hundred torrents at a time and resume them, or use your scripting-fu. Here’s how to start fifty stopped torrents:

for n in ${transmission-remote --auth=transmission:PASSWORD --list | grep Stopped | awk '{ print $1 }' | head -n 50}; do
  transmission-remote --auth=transmission:PASSWORD --torrent $n --start
done

Good luck!

On my system, the transmission daemon saves the files in /var/lib/transmission-daemon/downloads. I ended up with 84G according to du -sh.

The files all belong to the debian-transmission group, so if you want, you could add yourself to that group.

Somehow this isn’t working as expected but I think this is how it ought to work:

sudo usermod alex --append --groups debian-transmission

Comments

Actually, you get a few files of the form foo_Corrected.mp3 for existing foo.mp3 files. I decided to just keep the corrected ones:

for c in */*_Corrected.mp3; do
  echo $c
  d=$(dirname $c)
  n=$(basename $c _Corrected.mp3)
  if test -f "$d/$n.mp3"; then
    rm "$d/$n.mp3"
  fi
done

– 2020-12-18 09:32 UTC


Please make sure you contribute only your own work, or work licensed under the GNU Free Documentation License. Note: in order to facilitate peer review and fight vandalism, we will store your IP number for a number of days. See Privacy Policy for more information. See Info for text formatting rules. You can edit the comment page if you need to fix typos. You can subscribe to new comments by email without leaving a comment.

To save this page you must answer this question:

Just say HELLO