Page 1 of 2

[Extension] Audio CD ripping helper

Posted: 24 Jan 2016 21:38
by mederi

Code: Select all

profiles={ {"Audio CD -> mp3", " :cdda-track=? :sout=#transcode{vcodec=none,acodec=mp3,ab=128,channels=2,samplerate=44100}:file{mux=mp3,dst=\"H:\\Track ?.mp3\"}"}, {"Audio CD -> wav", " :cdda-track=? :sout=#transcode{vcodec=none,acodec=s16l,ab=128,channels=2,samplerate=44100}:file{mux=wav,dst=\"H:\\Track ?.wav\"}"}, } ----- function descriptor() return { title = "Audio CD ripping helper", capabilities={}, } end function activate() create_dialog() end function deactivate() end function meta_changed() end function close() vlc.deactivate() end ----- function create_dialog() d = vlc.dialog(descriptor().title) d:add_label(string.rep(" ",50),1,1,1,1) d:add_label(string.rep(" ",50),2,1,1,1) d:add_label(string.rep(" ",50),3,1,1,1) d:add_label(string.rep(" ",50),4,1,1,1) d:add_label(string.rep(" ",50),5,1,1,1) ---- d:add_label("Source MRL: ",1,1,1,1) ti_mrl = d:add_text_input("cdda:///E:/",2,1,1,1) d:add_label("(Media > Open Disc... > Audio CD)",3,1,2,1) d:add_label("Tracks: ",1,2,1,1) ti_tracks = d:add_text_input("15",2,2,1,1) d:add_label("Then ? in output string represents the counter.",3,2,2,1) d:add_label("Output options: \\ Profiles:",1,3,1,1) dd_profile = d:add_dropdown(2,3,1,1) for i,v in ipairs(profiles) do dd_profile:add_value(v[1],i) end d:add_button("Apply profile", click_Profile, 3,3,1,1) d:add_label("(Media > Stream... wizard)",4,3,1,1) ti_sout_string = d:add_text_input(profiles[1][2], 1,4,5,1) d:add_button("Enqueue converting tracks", click_Convert, 2,5,1,1) d:add_label("Then start the 1st converting track in playlist (View > Playlist).",3,5,2,1) end function click_Profile() ti_sout_string:set_text(profiles[dd_profile:get_value()][2]) end function click_Convert() local j=tonumber(ti_tracks:get_text()) if not j then j=1 ti_tracks:set_text(j) end local source_string = ti_mrl:get_text() local options_string = ti_sout_string:get_text() local table_items={} table.insert(table_items,{path="vlc://pause:5", name="[Convert! START]", options={}}) for i=1,j do table.insert(table_items,{path=source_string, name="[Convert!] Audio CD - Track "..i, options=SplitString(string.gsub(options_string,"%?",i), " :")}) end table.insert(table_items,{path="vlc://pause:10", name="[Convert! END]", options={}}) vlc.playlist.enqueue(table_items) end ----- function SplitString(s, d) -- string, delimiter pattern local t={} local i=1 local ss, j, k local b=false while true do j,k = string.find(s,d,i) if j then ss=string.sub(s,i,j-1) i=k+1 else ss=string.sub(s,i) b=true end table.insert(t, ss) if b then break end end return t end
--- EDIT 27.1.2016 ---
fixed text: "(Media > Stream... wizard)"

Re: [Extension] Audio CD ripping helper

Posted: 27 Dec 2016 00:49
by kodela
Hi @mederi:

I have entered your lua script in "C:\Program Files (x86)\VideoLAN\VLC\lua\extensions". Unfortunately, I do not know how it should work. Have you described that anywhere?

Re: [Extension] Audio CD ripping helper

Posted: 27 Dec 2016 13:20
by mederi
There are just brief remarks directly in the dialog box. After activation of the Extension in VLC menu (View > Audio CD ripping helper) the dialog box window of the Extension should appear on the screen. There you just edit the default text (command line options) in the input fields:
- E:\ drive with Audio CD [cdda:///E:/];
- how many audio tracks are there [15];
- you can select a predefined conversion profile (mp3, wav);
- you can edit output options, especially the output destination at the end (dst="H:\Track ?.mp3") - the question mark represents the counter and will be automatically replaced with appropriate number (1 - 15);
- then press the "Enqueue converting tracks" button and the converting tracks will appear in VLC playlist (View > Playlist Ctrl+L). There you can remove the tracks you do not need. Finally start the conversion by "playing" the first conversion track in playlist. Just make sure that "Random" and "Loop" VLC features are turned off.
Feel free to edit the script to add/remove various transcoding profiles, default options, ...
The Extension should be further improved before publishing it officially.

Re: [Extension] Audio CD ripping helper

Posted: 27 Dec 2016 18:30
by kodela
Hello medri,

Thanks for the function description. I don't know why, but for me the option for the audio CD ripping helper was not shown in the view menu. Now it is there.

I have tried it and it works perfectly.

Greeting, kodela

Re: [Extension] Audio CD ripping helper

Posted: 06 Apr 2017 23:34
by philipr
Thank you to mederi for pointing me to this thread. The real purpose of this reply is to put the word "Convert/Save" in the thread since my previous forum search didn't find it.

Re: [Extension] Audio CD ripping helper

Posted: 27 May 2017 19:50
by johncrouton
Hi there,

I'm trying (and failing) to get this extension working on Lubuntu with VLC version 2.2.4 Weatherwax. If you can shed any light on where I'm going wrong that would be greatly appreciated.

I copied the code above in to a simple text editor and saved it as audiocdrippinghelper.lua. The copied that file to /usr/share/vlc/lua/http. Restarted VLC and checked in View menu for the extension but it's not visible.

The instructions (here: https://www.vlchelp.com/install-vlc-media-player-addon/) on installing lua extensions says that you've got to put the .lua file in to either /usr/lib/vlc/lua/playlist/ or /usr/share/vlc/lua/extensions/. Neither of these exist on my system.

Have I named the file correctly? Where would you expect to put the file on Lubuntu? Thanks in advance..

Re: [Extension] Audio CD ripping helper

Posted: 27 May 2017 21:31
by mederi
Your filename is fine. I am not Linux user but following installation paths should be correct:
* Linux (all users): /usr/lib/vlc/lua/extensions/
* Linux (current user): ~/.local/share/vlc/lua/extensions/
The script is Extension type so it belongs to "extensions" directory. If the directory does not exists, then you need to create it there.

Re: [Extension] Audio CD ripping helper

Posted: 06 Jul 2017 08:31
by heckruler
Right. Linux.

The filename "audiocdrippinghelper.lua" is fine. Whatever.lua

Dude is right, it has to be placed in:

* Linux (current user): ~/.local/share/vlc/lua/extensions/

BUT. For Linux it needs some adjustments.

* Linux path to your music directory:

Code: Select all

{"Audio CD -> mp3", " :cdda-track=? :sout=#transcode{vcodec=none,acodec=mp3,ab=128,channels=2,samplerate=44100}:file{mux=mp3,dst=\"H:\\Track ?.mp3\"}"},
Needs to be more like

Code: Select all

{"Audio CD -> mp3", " :cdda-track=? :sout=#transcode{vcodec=none,acodec=mp3,ab=128,channels=2,samplerate=44100}:file{mux=mp3,dst=\"~/?.mp3\"}"},
Or wherever you keep your music. Mine is under /media/username/safehome/My Music/ because I have a raid array setup and a dark horrifying winXP past.

* Default CD drive:

Code: Select all

ti_mrl = d:add_text_input("cdda:///E:/",2,1,1,1)
Needs to be more like

Code: Select all

ti_mrl = d:add_text_input("cdda:///dev/sr0",2,1,1,1)
Relaunch VLC. Under "View" there should be "Audio CD ripping helper". Click it. Opens a window.

Yes, you have to count how many tracks are on the CD and put that under "tracks". Shrug.

Apply profile. Enqueue converting tracks.

Open the playlist, it has a list of instructions to go rip. Hit play and away it goes.

And don't forget to turn off your playlist loop. Otherwise, it just keeps ripping and overwriting.

Re: [Extension] Audio CD ripping helper

Posted: 06 Jul 2017 14:12
by mederi
Thank you for instructions for Linux users.

Re: [Extension] Audio CD ripping helper

Posted: 29 Aug 2017 22:13
by Neuk2015
I have recently replaced my Macbook Pro with a Windows 10 laptop. I have become exasperated with how problematic it is to find a simple answer to my questions. I am not about to download the extension for the ripping helper; I am not at all advanced enough to succeed. I know that one period out of place negates the whole thing. It is a simple step by step process from opening the disc tray to finalizing an audio rip. I will not become engrossed in the detail of the site here searching like a needle in a haystack. I'll figure it out online or just use Windows Schmidiot Player.

The bottom line of my post today is that it does not need to be this difficult in 2017 to rip audio.

Thanks!

Re: [Extension] Audio CD ripping helper

Posted: 10 Jan 2019 21:20
by Balilou
Thank you very much for the extension, mederi.
That's the first time I needed to rip an entire CD and a 15 min' search in google was sufficient to find your post, copy the lines in a lua files and launch it....And one hour of painstaking job avoided (73 tracks on the CD !)

Re: [Extension] Audio CD ripping helper

Posted: 05 Feb 2019 21:32
by Trees23unseen
Hello, for the destination folder, are we to paste the folder location in place of the question mark that you pointed out?

Re: [Extension] Audio CD ripping helper

Posted: 06 Feb 2019 23:42
by mederi

Code: Select all

dst="H:\Track ?.mp3"
? is the counter as explained in my second post here. You have to use it in your filename in "Output options" string. There you should edit the destination folder and filename, for example:

Code: Select all

dst="D:\converted tracks\Audio track ?.mp3"
If you are a Linux user, then read heckruler's post here.

Re: [Extension] Audio CD ripping helper

Posted: 07 Feb 2019 05:14
by Trees23unseen
:cdda-track=? :sout=#transcode{vcodec=none,acodec=mp3,ab=128,channels=2,samplerate=44100}:file{mux=mp3,dst="C:\Users\Mark\Downloads\Music\ 8.mp3"}
It worked.
Thanks for your help & the extension. VLC is fast, I'm glad I can use it now.

Re: [Extension] Audio CD ripping helper

Posted: 07 Feb 2019 13:21
by mederi
If you convert more/all tracks, then you really have to use the question mark in the filename. It will be automatically replaced with appropriate number.

Code: Select all

:cdda-track=? :sout=#transcode{vcodec=none,acodec=mp3,ab=128,channels=2,samplerate=44100}:file{mux=mp3,dst="C:\Users\Mark\Downloads\Music\?.mp3"}
Automatic output: 1.mp3, 2.mp3, 3.mp3, ...

Re: [Extension] Audio CD ripping helper

Posted: 07 Nov 2019 14:54
by mederi
And another experience with this extension and more instructions: https://forum.videolan.org/viewtopic.php?f=14&t=150070

Re: [Extension] Audio CD ripping helper

Posted: 26 Jun 2021 12:59
by idrinkwater
Hi!

Thank you for your script! It was super helpful to me to save me from going insane saving files individually!! I'm using VLC version 3.0.16 and it works great!

However, I didn't want to have to rename the files after they've been created, so I modified your script to let me create the file names I want. Here's the modified script!

Things to note:

1) The file naming format is: "Album Name - 01 - Track Name.mp3" (or .flac, etc). This is the file name I wanted, so I lazily just did that. Someone could easily change this to their liking inside the get_name() function.
2) I am ripping to FLAC, so I added a FLAC profile. And I put it as the first option, since it's what I'll be doing all the time
3) I renamed the script (within VLC's View Menu) to "Audio CD ripping helper NAMES" to differentiate from the original.
4) I arbitrarily picked a large number of tracks (up to 40), in case anyone is ripping something that has a large number of tracks. If, heaven forbid, there is an album with more than 40, anything about 40 will just be labeled "AlbumName - 41 - Track 41" etc. For anything less than 40, you can leave all unused track names as "Track 12", "Track 13", etc. They will be ignored. (No need to clear them out.)

My message is too long... will submit below in a new message!

Re: [Extension] Audio CD ripping helper

Posted: 26 Jun 2021 13:06
by idrinkwater
Script too long. Only 32 tracks now

Code: Select all

profiles={ {"Audio CD -> FLAC", " :cdda-track=? :sout=#transcode{vcodec=none,acodec=flac,ab=128,channels=2,samplerate=44100}:file{mux=flac,dst=\"C:\\rip\\AUTOFILENAME.flac\"}"}, {"Audio CD -> mp3", " :cdda-track=? :sout=#transcode{vcodec=none,acodec=mp3,ab=128,channels=2,samplerate=44100}:file{mux=mp3,dst=\"C:\\rip\\AUTOFILENAME.mp3\"}"}, {"Audio CD -> wav", " :cdda-track=? :sout=#transcode{vcodec=none,acodec=s16l,ab=128,channels=2,samplerate=44100}:file{mux=wav,dst=\"C:\\rip\\AUTOFILENAME.wav\"}"}, } ----- function descriptor() return { title = "Audio CD ripping helper NAMES", capabilities={}, } end function activate() create_dialog() end function deactivate() end function meta_changed() end function close() vlc.deactivate() end ----- function create_dialog() d = vlc.dialog(descriptor().title) d:add_label(string.rep("&nbsp;",50),1,1,1,1) d:add_label(string.rep("&nbsp;",50),2,1,1,1) d:add_label(string.rep("&nbsp;",50),3,1,1,1) d:add_label(string.rep("&nbsp;",50),4,1,1,1) d:add_label(string.rep("&nbsp;",50),5,1,1,1) ---- d:add_label("Source MRL: ",1,1,1,1) ti_mrl = d:add_text_input("cdda:///D:/",2,1,1,1) d:add_label("(Media > Open Disc... > Audio CD)",3,1,2,1) d:add_label("Tracks: ",1,2,1,1) ti_tracks = d:add_text_input("15",2,2,1,1) d:add_label("Then ? in output string represents the counter.",3,2,2,1) d:add_label("Output options: \\ Profiles:",1,3,1,1) dd_profile = d:add_dropdown(2,3,1,1) for i,v in ipairs(profiles) do dd_profile:add_value(v[1],i) end d:add_button("Apply profile", click_Profile, 3,3,1,1) d:add_label("(Media > Stream... wizard)",4,3,1,1) d:add_label("Do NOT remove or replace \'AUTOFILENAME\' - it is required placeholder for track names used below",2,4,3,1) ti_sout_string = d:add_text_input(profiles[1][2], 1,5,5,1) d:add_button("Enqueue converting tracks", click_Convert, 2,6,1,1) d:add_label("Then start the 1st converting track in playlist (View > Playlist).",3,6,2,1) d: add_label("Album: ",1,7,1,1) ti_album = d:add_text_input("Album",2,7,1,1) d:add_label("Enter Track Names Below (left to right, top to bottom)",3,7,2,1) ti_t = {} ti_t[1] = d:add_text_input("Track 1",1,8,1,1) ti_t[2] = d:add_text_input("Track 2",2,8,1,1) ti_t[3] = d:add_text_input("Track 3",3,8,1,1) ti_t[4] = d:add_text_input("Track 4",4,8,1,1) ti_t[5] = d:add_text_input("Track 5",1,9,1,1) ti_t[6] = d:add_text_input("Track 6",2,9,1,1) ti_t[7] = d:add_text_input("Track 7",3,9,1,1) ti_t[8] = d:add_text_input("Track 8",4,9,1,1) ti_t[9] = d:add_text_input("Track 9",1,10,1,1) ti_t[10] = d:add_text_input("Track 10",2,10,1,1) ti_t[11] = d:add_text_input("Track 11",3,10,1,1) ti_t[12] = d:add_text_input("Track 12",4,10,1,1) ti_t[13] = d:add_text_input("Track 13",1,11,1,1) ti_t[14] = d:add_text_input("Track 14",2,11,1,1) ti_t[15] = d:add_text_input("Track 15",3,11,1,1) ti_t[16] = d:add_text_input("Track 16",4,11,1,1) ti_t[17] = d:add_text_input("Track 17",1,12,1,1) ti_t[18] = d:add_text_input("Track 18",2,12,1,1) ti_t[19] = d:add_text_input("Track 19",3,12,1,1) ti_t[20] = d:add_text_input("Track 20",4,12,1,1) ti_t[21] = d:add_text_input("Track 21",1,13,1,1) ti_t[22] = d:add_text_input("Track 22",2,13,1,1) ti_t[23] = d:add_text_input("Track 23",3,13,1,1) ti_t[24] = d:add_text_input("Track 24",4,13,1,1) ti_t[25] = d:add_text_input("Track 25",1,14,1,1) ti_t[26] = d:add_text_input("Track 26",2,14,1,1) ti_t[27] = d:add_text_input("Track 27",3,14,1,1) ti_t[28] = d:add_text_input("Track 28",4,14,1,1) ti_t[29] = d:add_text_input("Track 29",1,15,1,1) ti_t[30] = d:add_text_input("Track 30",2,15,1,1) ti_t[31] = d:add_text_input("Track 31",3,15,1,1) ti_t[32] = d:add_text_input("Track 32",4,15,1,1) end function click_Profile() ti_sout_string:set_text(profiles[dd_profile:get_value()][2]) end function click_Convert() local j=tonumber(ti_tracks:get_text()) if not j then j=1 ti_tracks:set_text(j) end local source_string = ti_mrl:get_text() local options_string = ti_sout_string:get_text() local table_items={} table.insert(table_items,{path="vlc://pause:5", name="[Convert! START]", options={}}) for i=1,j do table.insert(table_items,{path=source_string, name="[Convert!] " .. get_name(i), options=SplitString(string.gsub(string.gsub(options_string,"%?",i),"AUTOFILENAME",get_name(i)), " :")}) end table.insert(table_items,{path="vlc://pause:10", name="[Convert! END]", options={}}) vlc.playlist.enqueue(table_items) end function get_name(i) local s_name = ti_album:get_text() .. " - " s_name = s_name .. this_or_that(i < 10,"0","") s_name = s_name .. i s_name = s_name .. " - " if i < 33 then s_name = s_name .. ti_t[i]:get_text() else s_name = s_name .. "Track " .. i end return s_name end function this_or_that(cond, T, F) if cond then return T else return F end end ----- function SplitString(s, d) -- string, delimiter pattern local t={} local i=1 local ss, j, k local b=false while true do j,k = string.find(s,d,i) if j then ss=string.sub(s,i,j-1) i=k+1 else ss=string.sub(s,i) b=true end table.insert(t, ss) if b then break end end return t end

Re: [Extension] Audio CD ripping helper

Posted: 28 Jun 2021 15:30
by mederi
I was thinking of a similar solution for users who use names from a working CDDB Server (Tools > Preferences > Show settings=All > Input/Codecs \ Access modules \ Audio CD). I would read all available audio tracks with names, and offer users to edit names before ripping process. I just do not have such a good original Audio CD to test with CDDB.

Re: [Extension] Audio CD ripping helper

Posted: 11 Jul 2021 17:44
by Pallas_L
Hi idrinkwater :) ,

First, I like to thank you for sharing your script.

I contact you regarding your script which can name all the songs being ripped by VLC. I had copied your script to a notepad & saved it as audiocdripperhelper NAMES.lua and put it into extensions folder.

I can see audiocdripperhelper NAMES in the VLC Media Player View tab and I manually typed in the 14 songs names and the Album name but when ripped, the output is still Track 1.mp3 instead of [No Strings Attached] Bye Bye Bye.mp3, why is this so? Any solution pls?

Hope to receive your reply soon, thank you so much.

Cool Regards,
Pallas

Re: [Extension] Audio CD ripping helper

Posted: 12 Jul 2021 18:09
by zcot
This is a modified extension I have been using for a few years. I simply took this original script and wanted to be able to use the network populated song names("Allow metadata network access") to be able to create the filenames instead.

So this will do the rip and use the song titles for the filenames. And it will also save the extra metadata if you like it.

So you need to have the destination directory already created when you run the extension (but I've been playing with some changes to the script recently and it will create a new folder and allow you to add the path in the GUI, but this version is not considered working "stable").

You start out by clearing the playlist, and loading the cd, and allowing the network metadata to be retrieved. Now you load the extension.

You follow each line in the extension GUI and this works exactly like the original extension except it will automatically populate the track count for you.

After the cd files have been transcoded and saved, now there is an extra function in the extension and it will reload the saved files onto the playlist, and it allows you to right-click on each track to see the "Information" and in this area you can save the metadata to the newly created local files, -simply add/remove a space or some character, or make any change to the metadata page and the built-in "Save Metadata" button will appear for you to save it.

This is the modification of mederi's original script:
https://termbin.com/cccr

Re: [Extension] Audio CD ripping helper

Posted: 13 Jul 2021 08:26
by Pallas_L
Hi zcot,

Thanks for your reply but Sorry I don't understand your explanation, it's too complicated for me.

I just like my output songs to be named, that's all.

Have a great day :)

Cool Regards,
Pallas

Re: [Extension] Audio CD ripping helper

Posted: 13 Jul 2021 18:02
by zcot
it's too complicated for me.
It's not too complicated to use.

It's exactly like how mederi created it, except it will use the song titles for filenames automatically. And there is also an extra button to use if you want to save metadata(artist, album, track number) into the song files.

And it's like the modified extension idrinkwater is showing, except the naming format is different(filename does not include Album name). But it would not be hard to alter the naming format to use the same format from the idrinkwater script. This is a good one because it sorts the files correctly in the original order.

A combination of all 3 scripts is the best, and one where we can also create a new folder for the files at the same time.

Re: [Extension] Audio CD ripping helper

Posted: 16 Jul 2021 08:30
by Pallas_L
Hi zcot.

fyi, I had successfully used idrinkwater's script and name the album name & song tracks and it went very well, I'm very satisfied.

Thanks so much for your concern on my issue.

Have a wonderful week ahead.

Cool Regards,
Pallas

Re: [Extension] Audio CD ripping helper

Posted: 27 Aug 2021 15:02
by zcot
So, I was looking at the modification I have and checked it out on a Windows box and see it completely fails. It's the difference with how paths were being handled. I fixed that up.


mederi said I should take it to the moon. I figured to maybe just get it pretty far out. He suggested the great 'loadstring' function to be able to get a dynamic setup for the track info if we are showing all the track names.

I like the file naming scheme that idrinkwater introduced so that's integrated. And so you can include any ARTIST, or ALBUM, or NUMBER or track TITLE names into the file naming scheme, as well as any other characters or different markings of the way you want the filename to come out.


The folder create options are there too, Artist name, Album name, or any folder manual naming scheme. It just makes an added convenience, because you can set the "default path" to your base music directory, and then easily organize further from there.

I didn't fix Windows using \ (backslash) in paths. But this is not a problem because vlc will handle it correctly (on Windows) no matter how you structure the paths. However in this script I did not do any processing for using the backslash(it just makes it more convoluted to handle that because the backslash is a specialized character in lua). So on Windows, you just use the / (frontslash) instead.


It will now works in 2 modes, either manual mode where you can just type out any and all relevant infos, or metadata mode(load the cd onto the playlist first) where it will automatically populate the artist, album, and filename info, you can edit it as well before transcoding to disk.

And I added 5 "default" variables that you will want to edit before you put the extension into play. Just check the top of the extension file and edit accordingly before you copy it to the vlc directories.


Here is an information page: https://gist.github.com/zcot/accd7033dc ... 4f15e8c52b
The script is called "Audio CD ripping helper OMG": https://gist.github.com/zcot/bc9f349f75 ... 31065738e2