package Ġcom . dev brid ie . telegram yout ub ed l . yout ub ed l Ċ Ċ import Ġorg . apache . commons . exec . CommandLine Ċ import Ġorg . apache . commons . exec . Default Executor Ċ import Ġorg . apache . commons . exec . Pump Stream Handler Ċ import Ġjava . io . ByteArray OutputStream Ċ import Ġjava . io . File Ċ import Ġjava . nio . charset . Charset Ċ Ċ data Ġclass ĠY outube Dl Executor Result ( ĊĠĠĠĠĠĠĠ Ġval Ġcode : ĠInt , ĊĠĠĠĠĠĠĠ Ġval Ġout : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġerr : ĠString Ċ ) Ċ Ċ class ĠY outube Dl ExitCode Exception ( val Ġout : ĠString , Ġval Ġerr : ĠString , Ġval Ġresult : ĠY outube Dl Executor Result ) Ġ: ĠRuntimeException (" youtube - dl Ġexited Ġwith Ġcode Ġ${ result . code }") Ċ Ċ class ĠY outube Dl Executor Ġ{ ĊĠĠĠ Ġprivate Ġval Ġout Stream Ġ= ĠByteArrayOutputStream () ĊĠĠĠ Ġprivate Ġval Ġerror Stream Ġ= ĠByteArrayOutputStream () ĊĊĠĠĠ Ġval Ġworking Directory Ġ= ĠFile (" downloads "). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġmkdir s () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġexecutor Ġ= ĠDefault Executor (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġstream Handler Ġ= ĠP ump Stream Handler ( out Stream , Ġerror Stream ) ĊĠĠĠĠĠĠĠ Ġworking Directory Ġ= Ġthis @ Y outube Dl Executor . working Directory ĊĠĠĠĠĠĠĠ Ġset Exit Values ( null ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Output Text () Ġ= ĠString ( out Stream . toByteArray (), ĠCharset . default Charset ()) ĊĠĠĠ Ġprivate Ġfun Ġget Error Text () Ġ= ĠString ( error Stream . toByteArray (), ĠCharset . default Charset ()) ĊĊĠĠĠ Ġfun Ġexecute ( f : ĠCommandLine . () Ġ-> ĠUnit ): ĠY outube Dl Executor Result Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcommand Line Ġ= ĠCommandLine (" youtube - dl ") ĊĠĠĠĠĠĠĠ Ġf . invoke ( command Line ) ĊĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġexecutor . execute ( command Line ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠY outube Dl Executor Result ( code , Ġget Output Text (), Ġget Error Text ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( code Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠY outube Dl ExitCode Exception ( result . out , Ġresult . err , Ġresult ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠCommandLine . argument ( argument : ĠString ) Ġ{ ĊĠĠĠ Ġthis . add Argument ( argument , Ġfalse ) Ċ }