Possibly convenience methods for Language and multiple audios.
Right now I'm doing:
Code: Select all
{ def _lang = any{ au["Language"] }{ video.first()["Language"] }
net.filebot.Language.findLanguage(_lang).ISO3.upperInitial() }
Code: Select all
{ def _lang = any{ au["Language"] }{ video.first()["Language"] }
net.filebot.Language.findLanguage(_lang).ISO3.upperInitial() }
The link you provided is more than sufficient. That's how we noticed the changes in mediainfo from v17 to v18 so I'd say it's useful to have.rednoah wrote: ↑11 Jul 2019, 09:15 1.
MediaInfo changes quite often, so the MediaInfo fields that various bindings are based on are subject to change. I'll see about better documentation, but it'll focus on purpose and possible values, rather than implementation details. That being said, implementation details are and remain available in the public API documentation.
{audioLanguages} does do Languages but not different audio formats. Most of my movies are BD rips, which means there are commentary tracks with lower audio quality, hence the "convenience". Kim already has a way to extract all audio streams and various info, it's doable.rednoah wrote: ↑11 Jul 2019, 09:15 2.
{audioLanguages} is available in recent releases, though it's based on MediaInfo audio stream languages only. Language is on my list of public API classes already, since Language objects are returned by various format bindings.
There are files for which a mediainfo language field is set for video but not for audio, for some reason. No idea why they do it, but it comes from the encoders most likely.
Code: Select all
filebot -script fn:mediainfo .
Code: Select all
TheTVDB.requestJson()
TheTVDB.resolveImage()
Code: Select all
TheMovieDB.properties.configuration.images.secure_base_url
TheMovieDB.request()
TheMovieDB.resolveImage()
Well, TheTVDB / TheMovieDB API is not infinite, and FileBot will implement as much as necessary. It makes sense to implement more of it, so that I can expose it as stable public API to you via scripting.kim wrote: ↑05 Aug 2019, 18:24 The problem with this is you have all the power, e.g. you will not support episode in amc/htpc viewtopic.php?f=6&t=3660#p20471
Code: Select all
filebot -list --q Firefly --format "{episode} => {episode.info.director} | {episode.info.writer} | {episode.info.overview}"
Code: Select all
net.filebot.web.OpenSubtitlesHasher.* ( computeHash() )
net.filebot.Cache.getCache()
MediaInfo.snapshot()
Code: Select all
{episode}
Code: Select all
MediaInfo.snapshot()
Code: Select all
getMediaInfo(file, "{vf}")
Code: Select all
net.filebot.Cache.getCache('IMDbData_JSON', net.filebot.CacheType.Weekly).computeIfAbsent(IMDbId) {}
Code: Select all
computeHash(inputFile)
Code: Select all
def f = '/path/to/file' as File
// Get Format property of Video Stream #0
println f.mediaInfo.Video[0].Format
// Iterate audio streams
f.mediaInfo.Audio.each{
println it.StreamKindID
println it.Format
}
Code: Select all
f.hash 'moviehash' // OpenSubtitles Movie Hash
f.hash 'crc32'
f.hash 'md5'
f.hash 'sha256'
Code: Select all
{episode.seriesInfo.artwork}
Code: Select all
{episode.seriesInfo.raw}
Code: Select all
{episode.info.raw}