- Update to 3.4
PR: ports/89562 Submitted by: Jon Jenssen <jon.jenssen@eunet.no>
This commit is contained in:
parent
17a54193f9
commit
978d0d9335
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=149574
5 changed files with 18 additions and 324 deletions
|
@ -6,10 +6,9 @@
|
|||
#
|
||||
|
||||
PORTNAME= ripit
|
||||
PORTVERSION= 2.0
|
||||
PORTREVISION= 2
|
||||
PORTVERSION= 3.4
|
||||
CATEGORIES= audio
|
||||
MASTER_SITES= http://www.initio.no/~oyvindmo/distfiles/
|
||||
MASTER_SITES= http://www.suwald.com/ripit/
|
||||
|
||||
MAINTAINER= ports@FreeBSD.org
|
||||
COMMENT= A perl-script frontend for encoding audio CDs to MP3 files
|
||||
|
@ -17,10 +16,11 @@ COMMENT= A perl-script frontend for encoding audio CDs to MP3 files
|
|||
# See pkg-message about other dependencies.
|
||||
RUN_DEPENDS= ${SITE_PERL}/CDDB_get.pm:${PORTSDIR}/audio/p5-CDDB_get
|
||||
RUN_DEPENDS+= lame:${PORTSDIR}/audio/lame
|
||||
RUN_DEPENDS+= dagrab:${PORTSDIR}/audio/dagrab
|
||||
RUN_DEPENDS+= cdparanoia:${PORTSDIR}/audio/cdparanoia
|
||||
|
||||
NO_BUILD= yes
|
||||
PLIST_FILES= bin/ripit.pl
|
||||
PLIST_FILES= bin/ripit.pl \
|
||||
bin/ripit
|
||||
USE_PERL5= yes
|
||||
|
||||
post-patch:
|
||||
|
@ -30,6 +30,7 @@ do-install:
|
|||
@ ${INSTALL_SCRIPT} ${WRKSRC}/ripit.pl ${PREFIX}/bin
|
||||
|
||||
post-install:
|
||||
@ ${LN} -s ${PREFIX}/bin/ripit.pl ${PREFIX}/bin/ripit
|
||||
@ ${CAT} ${PKGMESSAGE}
|
||||
|
||||
.include <bsd.port.mk>
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
MD5 (ripit-2.0.tar.gz) = b1d8cdff1346849ea47e766e40e14111
|
||||
SIZE (ripit-2.0.tar.gz) = 7477
|
||||
MD5 (ripit-3.4.tar.gz) = 85071a068347b7817d1471c373f55b99
|
||||
SIZE (ripit-3.4.tar.gz) = 51374
|
||||
|
|
|
@ -1,315 +0,0 @@
|
|||
--- ripit.pl.orig Sat Aug 25 18:20:06 2001
|
||||
+++ ripit.pl Mon Nov 17 23:31:30 2003
|
||||
@@ -9,41 +9,47 @@
|
||||
# Create an M3U file
|
||||
#
|
||||
# Options:
|
||||
-# [start_track] - rips from this track to last track
|
||||
-# --halt - powers off the machine when finished
|
||||
-# if your configuration supports it
|
||||
-# --bitrate [rate] - Encode MP3 at this bitrate
|
||||
+# [start_track] - rips from this track to last track
|
||||
+# --halt - powers off the machine when finished
|
||||
+# if your configuration supports it
|
||||
+# --bitrate [rate] - Encode MP3 at this bitrate
|
||||
+# --quality [value] - Encode Ogg at this quality setting
|
||||
# --year [year] - Tag MP3 with this year (included as CDDB
|
||||
# does not store this information)
|
||||
-# --genre [genre] - Overrides CDDB genre, e.g. rock,funk
|
||||
-# --device [device] - CDROM device to rip from
|
||||
+# --genre [genre] - Overrides CDDB genre, e.g. rock,funk
|
||||
+# --device [device] - CDROM device to rip from
|
||||
# --encopt [options] - Parameters to pass to encoder
|
||||
# --encoder [encoder] - Encoder to use, see below
|
||||
# --cdripper [ripper] - Cdripper to use, see below
|
||||
# --cdopt [options] - Parameters to pass to cdripper
|
||||
# --outputdir [dir] - Where MP3s should go
|
||||
+# --numcpu [cpus] - Number of parallel encoders to run
|
||||
#
|
||||
# Version 2.0 20/08/01 - Simon Quinn
|
||||
+# Ripping via FreeBSD's "dd" command - Lars Eggert <larse@isi.edu>
|
||||
+# May use Ogg's -q quality option - Øyvind Møll <oyvindmo@initio.no>
|
||||
#
|
||||
-# Usage: ripit.pl [--halt] [--bitrate rate] [--year year] [--genre genre]
|
||||
-# [--device cddevice] [--encopt options] [--encoder encoder]
|
||||
-# [--cdripper cdripper] [--cdopt options] [--outputdir dir]
|
||||
-# [start_track]
|
||||
+# Usage: ripit.pl [--halt] [--bitrate rate] [--quality value] [--year year]
|
||||
+# [--genre genre] [--device cddevice] [--encopt options]
|
||||
+# [--encoder encoder] [--cdripper cdripper] [--cdopt options]
|
||||
+# [--outputdir dir] [--numcpu cpus] [start_track]
|
||||
####################################################################
|
||||
#
|
||||
# User configurable variables
|
||||
#
|
||||
|
||||
$cddev = "/dev/cdrom"; # CD Audio device
|
||||
-$outputdir = "/tmp/cdrip/"; # Where the MP3s should go,
|
||||
- # must have trailing /
|
||||
+$outputdir = "/tmp/cdrip"; # Where the MP3s should go
|
||||
$bitrate = 160; # Bitrate for MP3s
|
||||
-$encoder = 0; # 0 - Lame, 1 - OggVorbis
|
||||
+$quality = 0; # Quality setting for Ogg
|
||||
+$encoder = 0; # 0 - Lame, 1 - Gogo, 2 - OggVorbis
|
||||
$encopt = ""; # options for mp3 encoder
|
||||
$cdripper = 0; # 0 - dagrab,
|
||||
# 1 - cdparanoia, 2 - cdda2wav,
|
||||
- # 3 - tosha, 4 - cdd
|
||||
+ # 3 - tosha, 4 - cdd,
|
||||
+ # 5 - dd (FreeBSD-4.4 and higher)
|
||||
$cdopt = ""; # options for cdaudio ripper
|
||||
+$numcpu = 1; # Number of parallel encoders to run
|
||||
|
||||
$CDDB_HOST = "freedb.freedb.org"; # set cddb host
|
||||
$CDDB_PORT = 8880; # set cddb port
|
||||
@@ -77,6 +83,9 @@
|
||||
$nocddbinfo = 1; # Assume no CDDB info exists
|
||||
$trackselection = ""; # Passed from command line
|
||||
|
||||
+$ripper_died = 0;
|
||||
+$SIG{HUP} = \$catch_hup;
|
||||
+
|
||||
####################################################
|
||||
# Do the following:
|
||||
# 1. Get command line parameters
|
||||
@@ -91,6 +100,7 @@
|
||||
# Get the parameters from the command line
|
||||
if ( ! &GetOptions("halt" => \$haltonfinish,
|
||||
"bitrate=i" => \$bitrate,
|
||||
+ "quality=i" => \$quality,
|
||||
"year=i" => \$year,
|
||||
"genre=s" => \$genre,
|
||||
"device=s" => \$cddev,
|
||||
@@ -98,11 +108,16 @@
|
||||
"encoder=i" => \$encoder,
|
||||
"cdripper=i" => \$cdripper,
|
||||
"cdopt=s" => \$cdopt,
|
||||
- "outputdir=s" => \$outputdir ) ) {
|
||||
- print "Usage: ripit.pl [--halt] [--bitrate rate] [--year year]
|
||||
+ "outputdir=s" => \$outputdir,
|
||||
+ "numcpu=i" => \$numcpu ) ) {
|
||||
+ print "
|
||||
+Usage: ripit.pl [--halt] [--bitrate rate] [--quality value] [--year year]
|
||||
[--device cddevice] [--encopt options] [--encoder encoder]
|
||||
[--cdripper cdripper] [--cdopt options] [--outputdir dir]
|
||||
- [start_track]\n";
|
||||
+ [--numcpu cpus] [start_track]
|
||||
+Rippers: 0 - dagrab, 1 - cdparanoia, 2 - cdda2wav, 3 - tosha, 4 - cdd, 5 - dd
|
||||
+Encoders: 0 - Lame, 1 - Gogo, 2 - OggVorbis
|
||||
+";
|
||||
exit 1;
|
||||
}
|
||||
|
||||
@@ -110,6 +125,9 @@
|
||||
print STDERR "Warning: year is not Y2K compliant - $year\n";
|
||||
}
|
||||
|
||||
+# Make sure outputdir ends with a slash
|
||||
+$outputdir =~ s/(.*)\/?/$1\//;
|
||||
+
|
||||
if ($haltonfinish == 1) {print "Will halt machine when finished.\n";}
|
||||
|
||||
# Get starting track parameter if it has been given
|
||||
@@ -132,8 +150,8 @@
|
||||
&create_dirs(); # Create directories MP3 files
|
||||
&rip_cd(); # Rip, Encode & Tag
|
||||
|
||||
-print "Waiting for MP3 Encoder to finish...\n";
|
||||
-wait;
|
||||
+print "Waiting for MP3 Encoder(s) to finish...\n";
|
||||
+while (wait != -1) {};
|
||||
|
||||
&create_m3u(); # Create the M3U file for the MP3 files
|
||||
|
||||
@@ -157,6 +175,10 @@
|
||||
|
||||
exit;
|
||||
|
||||
+sub catch_hup {
|
||||
+ $ripper_died = 1;
|
||||
+}
|
||||
+
|
||||
#
|
||||
# Create the track selection from the parameters passed
|
||||
# on the command line
|
||||
@@ -207,6 +229,7 @@
|
||||
#Configure CDDB_get parameters
|
||||
$config{CDDB_HOST} = $CDDB_HOST;
|
||||
$config{CDDB_PORT} = $CDDB_PORT;
|
||||
+ $config{HTTP_PROXY}= $ENV{HTTP_PROXY} if $ENV{HTTP_PROXY}; # Use proxy if available
|
||||
$config{CDDB_MODE} = $CDDB_MODE;
|
||||
$config{CD_DEVICE} = $cddev;
|
||||
$config{input} = $CDDB_INPUT;
|
||||
@@ -280,7 +303,6 @@
|
||||
#
|
||||
sub create_dirs {
|
||||
# Directory created will be: /outputdir/Artist - Album/
|
||||
- # The value must end in /
|
||||
|
||||
$mp3dir = $outputdir.$artist." - ".$album."/";
|
||||
|
||||
@@ -336,31 +358,37 @@
|
||||
$riptrackname = &get_trackname($_, $tracklist[$_ - 1]);
|
||||
$riptrackno = $_;
|
||||
|
||||
+ if ( ! -r "$riptrackname.wav" && ! -r "$riptrackname.mp3" ) {
|
||||
+ print "Ripping track $tracklist[$_ - 1]...\n";
|
||||
&printflush(RIPLOG,"Ripping $tracklist[$_ - 1]...\n");
|
||||
|
||||
# Choose the cdaudio ripper to use
|
||||
if ($cdripper == 0) {
|
||||
if (system("dagrab -d $cddev -v $cdopt -f \"$riptrackname.rip\" $riptrackno")) {
|
||||
- &printflush(RIPLOG,"cdparanoia failed on $tracklist[$_ - 1]\n");
|
||||
+ &printflush(RIPLOG,"dagrab failed on $tracklist[$_ - 1]\n");
|
||||
+ kill 1, @encoders;
|
||||
die "dagrab failed on $tracklist[$_ - 1]";
|
||||
}
|
||||
}
|
||||
elsif ($cdripper == 1) {
|
||||
if (system("cdparanoia -d $cddev $cdopt $riptrackno \"$riptrackname.rip\"")) {
|
||||
&printflush(RIPLOG,"cdparanoia failed on $tracklist[$_ - 1]\n");
|
||||
+ kill 1, @encoders;
|
||||
die "cdparanoia failed on $tracklist[$_ - 1]";
|
||||
}
|
||||
}
|
||||
elsif ($cdripper == 2) {
|
||||
- if (system("cdda2wav -D $cddev -Q -H $cdopt -t $riptrackno \"$riptrackname.rip\"")) {
|
||||
+ if (system("cdda2wav -D $cddev -q -Q -H $cdopt -t $riptrackno \"$riptrackname.rip\"")) {
|
||||
&printflush(RIPLOG,"cdda2wav failed on $tracklist[$_ - 1]\n");
|
||||
+ kill 1, @encoders;
|
||||
die "cdda2wav failed on $tracklist[$_ - 1]";
|
||||
}
|
||||
}
|
||||
elsif ($cdripper == 3) {
|
||||
if (system("tosha -d $cddev -f wav -t $riptrackno -o \"$riptrackname.rip\"")) {
|
||||
- &printflush(RIPLOG,"tosha failed on $tracklist[$_ - 1]\n");
|
||||
- die "tosha failed on $tracklist[$_ - 1]";
|
||||
+ &printflush(RIPLOG,"tosha failed on $tracklist[$_ - 1]\n");
|
||||
+ kill 1, @encoders;
|
||||
+ die "tosha failed on $tracklist[$_ - 1]";
|
||||
}
|
||||
}
|
||||
elsif ($cdripper == 4) {
|
||||
@@ -369,9 +397,37 @@
|
||||
$cdd_dev =~ s/c$//;
|
||||
if (system("cdd -t $riptrackno -q -f $cdd_dev - 2>/dev/null | sox -t cdr -x - \"$riptrackname.rip\"")) {
|
||||
&printflush(RIPLOG,"cdd failed on $tracklist[$_ - 1]\n");
|
||||
+ kill 1, @encoders;
|
||||
die "cdd failed on $tracklist[$_ - 1]";
|
||||
}
|
||||
}
|
||||
+ elsif ($cdripper == 5) {
|
||||
+ # Rip via FreeBSD's "dd" command and the associated CDDA devices
|
||||
+ # under /dev. Requires 4.4-RELEASE or higher.
|
||||
+ my $cdd_dev = $cddev;
|
||||
+ if ($cdd_dev =~ /^\/dev\/(.*)/) { $cdd_dev = $1; }
|
||||
+ die "dd extraction only works with ATAPI devices" unless $cddev =~ /acd/;
|
||||
+ # See if the device corresponding to the track already exists...
|
||||
+ my $trackdev = $cdd_dev;
|
||||
+ $trackdev =~ s/(.*)c/$1/;
|
||||
+ $trackdev .= "t$riptrackno";
|
||||
+ unless (-e "/dev/$trackdev") {
|
||||
+ # ...no, it doesn't. Create it.
|
||||
+ &printflush(RIPLOG, "CDDA track device /dev/$trackdev, doesn't ".
|
||||
+ "exist, creating...\n");
|
||||
+ my $cwd = `pwd`;
|
||||
+ chdir "/dev";
|
||||
+ system("sh MAKEDEV $trackdev") == 0 or die "cannot make $trackdev";
|
||||
+ chdir $cwd;
|
||||
+ }
|
||||
+ # Ready to extract the data. Also do endian conversion.
|
||||
+ if (system("dd if=/dev/$trackdev conv=swab bs=2352 ".
|
||||
+ "of=\"$riptrackname.rip\" 2> /dev/null")) {
|
||||
+ &printflush(RIPLOG,"dd failed on $tracklist[$_ - 1]\n");
|
||||
+ kill 1, @encoders;
|
||||
+ die "cannot rip track $riptrackno";
|
||||
+ }
|
||||
+ }
|
||||
else {
|
||||
die "No CD Ripper defined";
|
||||
}
|
||||
@@ -381,11 +437,13 @@
|
||||
rename "$riptrackname.rip","$riptrackname.wav";
|
||||
|
||||
&printflush(RIPLOG,"Rip complete $tracklist[$_ - 1]\n");
|
||||
+ }
|
||||
|
||||
- # Start the Encoder in the background. but only once
|
||||
- if ($startenc == 0) {
|
||||
- $startenc = 1;
|
||||
- unless (fork) { &enc_cd(); }
|
||||
+ # Start the Encoder in the background. but only once per CPU
|
||||
+ if ($startenc < $numcpu) {
|
||||
+ sleep $startenc * 5;
|
||||
+ $startenc = $startenc + 1;
|
||||
+ unless ($encoders[$startenc]=fork) { &enc_cd(); }
|
||||
}
|
||||
|
||||
}
|
||||
@@ -407,24 +465,37 @@
|
||||
$riptrackno = $_;
|
||||
$ncount++;
|
||||
|
||||
- print "\nMP3 Encoding track ".$ncount." of ".($#seltrack + 1)."\n";
|
||||
- &printflush(RIPLOG,"Encoding $tracklist[$_ - 1]...\n");
|
||||
-
|
||||
# Keep looping until the file appears, ie wait for cdparanoia
|
||||
# timeout after 30 minutes
|
||||
$x=0;
|
||||
- while( ! -r "$riptrackname.wav" ){
|
||||
+ while( ! -r "$riptrackname.wav" && ! -r "$riptrackname.mp3" ){
|
||||
$x++;
|
||||
if ($x > 179) { die "MP3 encoder waited 30 minutes before giving up"; }
|
||||
+ if ($ripper_died) { die "CD Ripper seems to have died - exiting"; }
|
||||
sleep 10;
|
||||
}
|
||||
|
||||
+ if ( ! -r "$riptrackname.mp3" ) {
|
||||
+ print "\nMP3 Encoding track ".$ncount." of ".($#seltrack + 1)."\n";
|
||||
+ &printflush(RIPLOG,"Encoding $tracklist[$_ - 1]...\n");
|
||||
+
|
||||
# Set the encoder we are going to use
|
||||
if ($encoder == 0) {
|
||||
$enc = "lame $encopt -S -b $bitrate --tt \"$tracklist[$_ - 1]\" --ta \"$artist\" --tl \"$album\" --ty \"$year\" --tg \"$genre\" --tn $riptrackno --add-id3v2 \"$riptrackname.wav\" \"$riptrackname.mp3\"";
|
||||
}
|
||||
elsif ($encoder == 1) {
|
||||
- $enc = "oggenc $encopt -b $bitrate -t \"$tracklist[$_ - 1]\" -a \"$artist\" -l \"$album\" -d \"$year\" -N $riptrackno -o \"$riptrackname.ogg\" \"$riptrackname.wav\"";
|
||||
+ $enc = "gogo \"$riptrackname.wav\" \"$riptrackname.mp3\" $encopt -b $bitrate";
|
||||
+ }
|
||||
+ elsif ($encoder == 2) {
|
||||
+ if ($quality > 0) {
|
||||
+ $oggenc_quality_option = "-q $quality";
|
||||
+ } else {
|
||||
+ $oggenc_quality_option = "-b $bitrate";
|
||||
+ }
|
||||
+ $enc = "oggenc $encopt $oggenc_quality_option -t \"$tracklist[$_ - 1]\" -a \"$artist\" -l \"$album\" -d \"$year\" -N $riptrackno -o \"$riptrackname.ogg\" \"$riptrackname.wav\"";
|
||||
+ }
|
||||
+ else {
|
||||
+ die "No encoder defined";
|
||||
}
|
||||
|
||||
if ( ! system("$enc >$enclog 2>&1 </dev/null")) {
|
||||
@@ -438,7 +509,8 @@
|
||||
&printflush(RIPLOG,"MP3 Encoder Failed on $tracklist[$_ - 1]\n");
|
||||
die "MP3 Encoder Failed on $tracklist[$_ - 1]";
|
||||
}
|
||||
-
|
||||
+ }
|
||||
+
|
||||
}
|
||||
exit ;
|
||||
}
|
||||
@@ -452,10 +524,10 @@
|
||||
$file="$artist.m3u";
|
||||
if ($use_underscore == 1) { $file =~ s/ /_/g; }
|
||||
|
||||
- if($encoder == 1) {
|
||||
- system("cd \"$mp3dir\" ; ls -rt *.ogg >\"$file\"");
|
||||
+ if($encoder == 2) {
|
||||
+ system("cd \"$mp3dir\" ; ls *.ogg | sort >\"$file\"");
|
||||
}
|
||||
else {
|
||||
- system("cd \"$mp3dir\" ; ls -rt *.mp3 >\"$file\"");
|
||||
+ system("cd \"$mp3dir\" ; ls *.mp3 | sort >\"$file\"");
|
||||
}
|
||||
}
|
|
@ -7,7 +7,7 @@ is a console program that needs no user intervention. It requires
|
|||
p5-CDDB for CDDB access. A track ripper program and an encoder are
|
||||
also needed.
|
||||
|
||||
WWW: http://www.geocities.com/ukcave/ripit.html
|
||||
WWW: http://www.suwald.com/ripit/ripit.html
|
||||
|
||||
--
|
||||
Port by Oyvind Moll <oyvindmo@initio.no>
|
||||
|
|
|
@ -1,5 +1,13 @@
|
|||
ripit can use a number of different programs to do the actual track
|
||||
extraction and audio encoding. By default ripit uses dagrab and
|
||||
extraction and audio encoding. By default ripit uses cdparanoia and
|
||||
lame respectively, so this port depends on those two having been
|
||||
installed. If you want ripit to use other helper utils, just install
|
||||
them and tell ripit which ones to use.
|
||||
|
||||
It is recommended that you set your CD-device, the preferred ripper
|
||||
and encoder, any encoding quality preferences etc. on the ripit
|
||||
command line and adding "--save" to get those as the default values.
|
||||
This will enable you to later on just type "ripit" and start doing
|
||||
your work.
|
||||
|
||||
For more help, type "ripit --help"
|
||||
|
|
Loading…
Reference in a new issue