codec_long_name=H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
DISPOSITION:hearing_impaired=0
DISPOSITION:visual_impaired=0
DISPOSITION:clean_effects=0
DISPOSITION:attached_pic=0
DISPOSITION:timed_thumbnails=0
DISPOSITION:descriptions=0
DISPOSITION:still_image=0
TAG:handler_name=VideoHandler
TAG:vendor_id=[0][0][0][0]
TAG:encoder=Lavc59.37.100 libx264
codec_long_name=AAC (Advanced Audio Coding)
DISPOSITION:hearing_impaired=0
DISPOSITION:visual_impaired=0
DISPOSITION:clean_effects=0
DISPOSITION:attached_pic=0
DISPOSITION:timed_thumbnails=0
DISPOSITION:descriptions=0
DISPOSITION:still_image=0
TAG:handler_name=SoundHandler
TAG:vendor_id=[0][0][0][0]
| Success(result, _, y) -> printfn "Success: %A %s" result (y.ToString())
| Failure(errorMsg, x, _) -> System.Console.WriteLine("Failure: {0} {1}", errorMsg, x)
let eq<'a when 'a: equality> (c: 'a) (s: 'a seq) = s |> Seq.contains c
let letterOrDigitPE c = isLetter c || isDigit c || eq c "[]:.-_/() "
let kvPEr = many1Satisfy2 (fun x -> letterOrDigitPE x && (x = '[' |> not)) letterOrDigitPE
let valuePE = many1SatisfyL letterOrDigitPE "value"
let kvPE = pipe3 kvPEr (pstring "=") valuePE (fun x _ y -> (x, y))
let kvPE1 = many (pipe2 kvPE (optional newline) (fun x _ -> x))
let kvPE2 = pipe5 (pstring "[STREAM]") newline kvPE1 (pstring "[/STREAM]") (optional newline) (fun _ _ c _ _ -> c)
test kvPE3 (foldData.Trim())