e.g. Audible
Send HTTP requests to audible.com/search using the file name as search query and then scrape information from the first result in the HTML response.Groovy: Select all
{ drive }/Audible/
{
def query = fn.space(' ').before(/ - \d+$/)
def url = 'https://www.audible.com/search'.toURL(keywords: query, ipRedirectOverride: true, overrideBaseCountry: true)
def ul = html(url).select('li.authorLabel').first().parent()
def title = ul.select('h3 a').text()
def author = ul.select('li.authorLabel a').text()
def narrator = ul.select('li.narratorLabel a').text()
def series = ul.select('li.seriesLabel a').text()
def book = any{ ul.select('li.seriesLabel').text().tokenize().last() }{ null }
if (series) {
"$author/$series/$book - $title (narrated by $narrator)"
} else {
"$author/$title (narrated by $narrator)"
}
}
The example code above assumes that the files at hand are already well-named. The filename is used verbatim as search query to audible.com/search and so you may need to modify the code to fit your needs if your files are named differently and thus require some additional logic to extract the appropriate search query for each file:
Code: Select all
The Hobbit by J. R. R. Tolkien.mp3
The Hobbit.mp3
e.g. Custom Format Server
Send HTTP requests to a custom format server and use the JSON response as target file path:Format: Select all
{ json('http://localhost:8080/'.toURL(f:f)) }