/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 Ġe Al va . com Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . e al va . to que . service . v lc Ċ Ċ import Ġandroid . net . Uri Ċ import Ġcom . e al va . e al v ab rain z . brain z . data . Artist M bid Ċ import Ġcom . e al va . e al v ab rain z . brain z . data . Release Group M bid Ċ import Ġcom . e al va . e al v ab rain z . brain z . data . Release M bid Ċ import Ġcom . e al va . e al v ab rain z . brain z . data . Track M bid Ċ import Ġcom . e al va . e al val og . e Ċ import Ġcom . e al va . e al val og . invoke Ċ import Ġcom . e al va . e al val og . lazy Logger Ċ import Ġcom . e al va . e al val og . w Ċ import Ġcom . e al va . to que . common . Millis Ċ import Ġcom . e al va . to que . file . file Extension Ċ import Ġcom . e al va . to que . file . isFile Scheme Ċ import Ġcom . e al va . to que . file . is Network Scheme Ċ import Ġcom . e al va . to que . service . media . Media File Tag Info Ċ import Ġcom . e al va . to que . service . media . Media Metadata Parser Ċ import Ġcom . e al va . to que . service . media . Media Metadata Parser Factory Ċ import Ġcom . e al va . to que . service . media . Star Rating Ċ import Ġcom . e al va . to que . tag . Artist Parser Ċ import Ġcom . e al va . to que . tag . Song Tag Ċ import Ġcom . e al va . to que . tag . to Album Sort Ċ import Ġcom . e al va . to que . tag . to Artist Sort Ċ import Ġcom . e al va . to que . tag . to Title Sort Ċ import Ġe al v atag . audio . Supported File Format Ċ import Ġorg . vide ol an . lib v lc . interfaces . IM edia Ċ import Ġjava . io . File Ċ import Ġkotlin . math . min Ċ Ċ private Ġval ĠLOG Ġby Ġlazy Logger ( Media Metadata Parser :: class ) Ċ Ċ fun ĠUri . tag Can Parse Extension (): ĠBoolean Ġ= ĊĠ ĠSupported File Format . from Extension ( file Extension ) Ġ!== ĠSupported File Format . UNKNOWN Ċ Ċ class ĠV lc Media Metadata Parser Factory ( ĊĠ Ġprivate Ġval Ġlib V lc Singleton : ĠLib V lc Singleton Ċ ) Ġ: ĠMedia Metadata Parser Factory Ġ{ ĊĠ Ġoverride Ġfun Ġmake (): ĠMedia Metadata Parser Ġ= ĠMedia Metadata Parser Impl ( lib V lc Singleton ) Ċ } Ċ Ċ private Ġclass ĠMedia Metadata Parser Impl ( private Ġval Ġlib V lc : ĠLib V lc Singleton ) Ġ: ĠMedia Metadata Parser Ġ{ ĊĠ Ġoverride Ġsuspend Ġfun Ġparse Metadata ( uri : ĠUri , Ġartist Parser : ĠArtist Parser ): ĠMedia File Tag Info Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( uri . isFile Scheme () Ġ&& Ġuri . tag Can Parse Extension ()) Ġ{ ĊĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ ĠFile Tag Info ( File ( uri . path . or Empty ()), Ġartist Parser ) ĊĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLOG . e ( e ) Ġ{ Ġit (" Could Ġnot Ġopen Ġfile Ġ'% s ' Ġuri =% s ", Ġuri . path . or Empty (), Ġuri ) Ġ} ĊĠĠĠĠĠĠĠ Ġlib V lc . with Instance Ġ{ ĠV lc Tag Info ( uri , Ġit , Ġartist Parser ) Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ ĠLOG . w Ġ{ Ġit (" Fallback Ġto ĠLib VL C Ġas Ġno Ġparser Ġfound Ġfor Ġ% s ", Ġuri ) Ġ} ĊĠĠĠĠĠ Ġlib V lc . with Instance Ġ{ ĠV lc Tag Info ( uri , Ġit , Ġartist Parser ) Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠFile Tag Info Ġprivate Ġconstructor ( ĊĠ Ġprivate Ġval Ġtag : ĠSong Tag , ĊĠ Ġprivate Ġval Ġartist Parser : ĠArtist Parser Ċ ) Ġ: ĠMedia File Tag Info Ġ{ ĊĠ Ġoverride Ġval Ġduration : ĠM illis ĊĠĠĠ Ġget () Ġ= ĠM illis ( tag . duration ) ĊĠ Ġoverride Ġval Ġtitle : ĠString ĊĠĠĠ Ġget () Ġ= Ġtag . title ĊĠ Ġoverride Ġval Ġtitle Sort : ĠString ĊĠĠĠ Ġget () Ġ= Ġtag . title Sort ĊĠ Ġoverride Ġval Ġartists : ĠList < String > ĊĠĠĠ Ġget () Ġ= Ġartist Parser . parse All ( tag . media Art ists ) ĊĠ Ġoverride Ġval Ġartists Sort : ĠList < String > ĊĠĠĠ Ġget () Ġ= Ġartist Parser . parse All ( tag . media Art ists Sort ) ĊĠ Ġoverride Ġval Ġalbum : ĠString ĊĠĠĠ Ġget () Ġ= Ġtag . album ĊĠ Ġoverride Ġval Ġalbum Sort : ĠString ĊĠĠĠ Ġget () Ġ= Ġtag . album Sort ĊĠ Ġoverride Ġval Ġalbum Artist : ĠString ĊĠĠĠ Ġget () Ġ= Ġtag . reference Album Artist ĊĠ Ġoverride Ġval Ġalbum Artist Sort : ĠString ĊĠĠĠ Ġget () Ġ= Ġtag . reference Album Artist Sort ĊĠ Ġoverride Ġval Ġcomposer : ĠString ĊĠĠĠ Ġget () Ġ= Ġtag . composer ĊĠ Ġoverride Ġval Ġcomposer Sort : ĠString ĊĠĠĠ Ġget () Ġ= Ġtag . composer Sort ĊĠ Ġoverride Ġval Ġgen res : ĠList < String > ĊĠĠĠ Ġget () Ġ= Ġtag . genre ĊĠĠĠĠĠ Ġ. split To Sequence ("/") ĊĠĠĠĠĠ Ġ. filter Ġ{ Ġit . isNotBlank () Ġ} ĊĠĠĠĠĠ Ġ. map To ( ArrayList ()) Ġ{ Ġit . trim () Ġ} ĊĠ Ġoverride Ġval Ġtrack Number : ĠInt ĊĠĠĠ Ġget () Ġ= Ġtag . track Number ĊĠ Ġoverride Ġval Ġtotal Tracks : ĠInt ĊĠĠĠ Ġget () Ġ= Ġtag . total Tracks ĊĠ Ġoverride Ġval Ġdisc Number : ĠInt ĊĠĠĠ Ġget () Ġ= Ġtag . disc Number ĊĠ Ġoverride Ġval Ġtotal Dis cs : ĠInt ĊĠĠĠ Ġget () Ġ= Ġtag . total Dis cs ĊĠ Ġoverride Ġval Ġyear : ĠInt ĊĠĠĠ Ġget () Ġ= Ġtag . year ĊĠ Ġoverride Ġval Ġrating : ĠStar Rating ĊĠĠĠ Ġget () Ġ= Ġtag . star Rating ĊĠ Ġoverride Ġval Ġcomment : ĠString ĊĠĠĠ Ġget () Ġ= Ġtag . comment ĊĠ Ġoverride Ġval Ġl yr ics : ĠString ĊĠĠĠ Ġget () Ġ= Ġtag . get L yr ics ("") ĊĠ Ġoverride Ġval Ġartist M bid : ĠArtist M bid ? ĊĠĠĠ Ġget () Ġ= Ġtag . artist M bid ?. to Artist M bid () ĊĠ Ġoverride Ġval Ġrelease Artist M bid : ĠArtist M bid ? ĊĠĠĠ Ġget () Ġ= Ġtag . release Artist M bid ?. to Artist M bid () ĊĠ Ġoverride Ġval Ġrelease M bid : ĠRelease M bid ? ĊĠĠĠ Ġget () Ġ= Ġtag . release M bid ?. to Release M bid () ĊĠ Ġoverride Ġval Ġtrack M bid : ĠTrack M bid ? ĊĠĠĠ Ġget () Ġ= Ġtag . release Track M bid ?. to Track M bid () ĊĠ Ġoverride Ġval Ġrelease Group M bid : ĠRelease Group M bid ? ĊĠĠĠ Ġget () Ġ= Ġtag . release Group M bid ?. to Release Group M bid () ĊĠ Ġoverride Ġval Ġlanguage : ĠString ĊĠĠĠ Ġget () Ġ= Ġtag . get Language ("") ĊĊĠ Ġoverride Ġval Ġcopyright : ĠString Ġ= Ġ"" ĊĠ Ġoverride Ġval Ġdescription : ĠString Ġ= Ġ"" ĊĠ Ġoverride Ġval Ġsetting : ĠString Ġ= Ġ"" ĊĠ Ġoverride Ġval Ġnow Playing : ĠString Ġ= Ġ"" ĊĠ Ġoverride Ġval Ġpublisher : ĠString Ġ= Ġ"" ĊĠ Ġoverride Ġval Ġencoded By : ĠString Ġ= Ġ"" ĊĠ Ġoverride Ġval Ġdirector : ĠString Ġ= Ġ"" ĊĠ Ġoverride Ġval Ġseason : ĠString Ġ= Ġ"" ĊĠ Ġoverride Ġval Ġepisode : ĠString Ġ= Ġ"" ĊĠ Ġoverride Ġval Ġshow Name : ĠString Ġ= Ġ"" ĊĠ Ġoverride Ġval Ġactors : ĠString Ġ= Ġ"" ĊĊĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġas String () ĊĠ Ġoverride Ġfun Ġclose () Ġ{ ĊĠĠĠ Ġtag . close () ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġoperator Ġfun Ġinvoke ( ĊĠĠĠĠĠ Ġfile : ĠFile , ĊĠĠĠĠĠ Ġartist Parser : ĠArtist Parser ĊĠĠĠ Ġ): ĠMedia File Tag Info Ġ= ĠFile Tag Info ( ĊĠĠĠĠĠ ĠSong Tag ( ĊĠĠĠĠĠĠĠ Ġfile , ĊĠĠĠĠĠĠĠ Ġignore Artwork Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġcreate Missing Tag Ġ= Ġfalse ĊĠĠĠĠĠ Ġ), ĊĠĠĠĠĠ Ġartist Parser ĊĠĠĠ Ġ) ĊĠ Ġ} Ċ } Ċ Ċ private Ġconst Ġval ĠEND _ OF _ DATE _ INDEX Ġ= Ġ 3 Ċ Ċ @ Suppress (" NOTH ING _ TO _ INLINE ") Ċ private Ġinline Ġfun ĠString ?. or Unknown (): ĠString Ġ= Ġif Ġ( isNull Or Blank ()) Ġ" Unknown " Ġelse Ġthis Ċ Ċ private Ġclass ĠV lc Tag Info Ġprivate Ġconstructor ( ĊĠ Ġprivate Ġval Ġmedia : ĠI Media , ĊĠ Ġartist Parser : ĠArtist Parser Ċ ) Ġ: ĠMedia File Tag Info Ġ{ ĊĠ Ġprivate Ġfun Ġmeta ( id : ĠInt ): ĠString ? Ġ= Ġmedia . get Meta ( id ) ĊĠ Ġprivate Ġval Ġ_ artists Ġ= Ġartist Parser . parse All ( listOf ( meta ( IM edia . Meta . Artist ). or Unknown ())) ĊĠ Ġprivate Ġval Ġ_ artists Sort Ġ= Ġ_ artists . map Ġ{ Ġit . to Artist Sort () Ġ} ĊĠ Ġoverride Ġval Ġduration : ĠM illis ĊĠĠĠ Ġget () Ġ= ĠM illis ( media . duration ) ĊĠ Ġoverride Ġval Ġtitle : ĠString ĊĠĠĠ Ġget () Ġ= Ġmeta ( IM edia . Meta . Title ). or Unknown () ĊĠ Ġoverride Ġval Ġtitle Sort : ĠString ĊĠĠĠ Ġget () Ġ= Ġtitle . to Title Sort () ĊĠ Ġoverride Ġval Ġartists : ĠList < String > ĊĠĠĠ Ġget () Ġ= Ġ_ artists ĊĠ Ġoverride Ġval Ġartists Sort : ĠList < String > ĊĠĠĠ Ġget () Ġ= Ġ_ artists Sort ĊĠ Ġoverride Ġval Ġalbum : ĠString ĊĠĠĠ Ġget () Ġ= Ġmeta ( IM edia . Meta . Album ). or Unknown () ĊĠ Ġoverride Ġval Ġalbum Sort : ĠString ĊĠĠĠ Ġget () Ġ= Ġalbum . to Album Sort () ĊĠ Ġoverride Ġval Ġalbum Artist : ĠString ĊĠĠĠ Ġget () Ġ= Ġmeta ( IM edia . Meta . Album Artist ). or Unknown () ĊĠ Ġoverride Ġval Ġalbum Artist Sort : ĠString ĊĠĠĠ Ġget () Ġ= Ġalbum Artist . to Artist Sort () ĊĠ Ġoverride Ġval Ġcomposer : ĠString Ġ= Ġ"" ĊĠ Ġoverride Ġval Ġcomposer Sort : ĠString Ġ= Ġ"" ĊĠ Ġoverride Ġval Ġgen res : ĠList < String > ĊĠĠĠ Ġget () Ġ= Ġmeta ( IM edia . Meta . Genre ) ĊĠĠĠĠĠ Ġ. or Unknown () ĊĠĠĠĠĠ Ġ. split To Sequence ("/") ĊĠĠĠĠĠ Ġ. filter Ġ{ Ġit . isNotBlank () Ġ} ĊĠĠĠĠĠ Ġ. map To ( ArrayList ()) Ġ{ Ġit . trim () Ġ} ĊĠ Ġoverride Ġval Ġtrack Number : ĠInt ĊĠĠĠ Ġget () Ġ= Ġmeta ( IM edia . Meta . Track Number )?. toInt OrNull () Ġ?: Ġ 0 ĊĠ Ġoverride Ġval Ġtotal Tracks : ĠInt ĊĠĠĠ Ġget () Ġ= Ġmeta ( IM edia . Meta . Track Total )?. toInt OrNull () Ġ?: Ġ 0 ĊĠ Ġoverride Ġval Ġdisc Number : ĠInt ĊĠĠĠ Ġget () Ġ= Ġmeta ( IM edia . Meta . Disc Number )?. toInt OrNull () Ġ?: Ġ 0 ĊĠ Ġoverride Ġval Ġtotal Dis cs : ĠInt Ġ= Ġ 0 ĊĊĠ Ġoverride Ġval Ġyear : ĠInt ĊĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠ Ġval Ġdate Ġ= Ġmeta ( IM edia . Meta . Date ). or Empty () ĊĠĠĠĠĠ Ġreturn Ġdate . substring ( 0 , Ġmin ( END _ OF _ DATE _ INDEX , Ġdate . length )). toInt OrNull () Ġ?: Ġ 0 ĊĠĠĠ Ġ} ĊĠ Ġoverride Ġval Ġrating : ĠStar Rating ĊĠĠĠ Ġget () Ġ= ĠStar Rating . STAR _ NONE ĊĠ Ġoverride Ġval Ġcomment : ĠString Ġ= Ġ"" ĊĠ Ġoverride Ġval Ġl yr ics : ĠString Ġ= Ġ"" ĊĠ Ġoverride Ġval Ġartist M bid : ĠArtist M bid ? Ġ= Ġnull ĊĠ Ġoverride Ġval Ġrelease Artist M bid : ĠArtist M bid ? Ġ= Ġnull ĊĠ Ġoverride Ġval Ġrelease M bid : ĠRelease M bid ? Ġ= Ġnull ĊĠ Ġoverride Ġval Ġtrack M bid : ĠTrack M bid ? Ġ= Ġnull ĊĠ Ġoverride Ġval Ġrelease Group M bid : ĠRelease Group M bid ? Ġ= Ġnull ĊĠ Ġoverride Ġval Ġlanguage : ĠString ĊĠĠĠ Ġget () Ġ= Ġmeta ( IM edia . Meta . Language ). or Empty () ĊĠ Ġoverride Ġval Ġcopyright : ĠString ĊĠĠĠ Ġget () Ġ= Ġmeta ( IM edia . Meta . Copyright ). or Empty () ĊĠ Ġoverride Ġval Ġdescription : ĠString ĊĠĠĠ Ġget () Ġ= Ġmeta ( IM edia . Meta . Description ). or Empty () ĊĠ Ġoverride Ġval Ġsetting : ĠString ĊĠĠĠ Ġget () Ġ= Ġmeta ( IM edia . Meta . Setting ). or Empty () ĊĠ Ġoverride Ġval Ġnow Playing : ĠString ĊĠĠĠ Ġget () Ġ= Ġmeta ( IM edia . Meta . Now Playing ). or Unknown () ĊĠ Ġoverride Ġval Ġpublisher : ĠString ĊĠĠĠ Ġget () Ġ= Ġmeta ( IM edia . Meta . Publisher ). or Empty () ĊĠ Ġoverride Ġval Ġencoded By : ĠString ĊĠĠĠ Ġget () Ġ= Ġmeta ( IM edia . Meta . Encoded By ). or Empty () ĊĠ Ġoverride Ġval Ġdirector : ĠString ĊĠĠĠ Ġget () Ġ= Ġmeta ( IM edia . Meta . Director ). or Empty () ĊĠ Ġoverride Ġval Ġseason : ĠString ĊĠĠĠ Ġget () Ġ= Ġmeta ( IM edia . Meta . Season ). or Empty () ĊĠ Ġoverride Ġval Ġepisode : ĠString ĊĠĠĠ Ġget () Ġ= Ġmeta ( IM edia . Meta . Episode ). or Empty () ĊĠ Ġoverride Ġval Ġshow Name : ĠString ĊĠĠĠ Ġget () Ġ= Ġmeta ( IM edia . Meta . Show Name ). or Empty () ĊĠ Ġoverride Ġval Ġactors : ĠString ĊĠĠĠ Ġget () Ġ= Ġmeta ( IM edia . Meta . Act ors ). or Empty () ĊĊĠ Ġoverride Ġfun Ġclose () Ġ{ ĊĠĠĠ Ġmedia . release () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġas String () ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġoperator Ġfun Ġinvoke ( ĊĠĠĠĠĠ Ġuri : ĠUri , ĊĠĠĠĠĠ Ġlib V lc : ĠLib V lc , ĊĠĠĠĠĠ Ġartist Parser : ĠArtist Parser ĊĠĠĠ Ġ): ĠMedia File Tag Info Ġ{ ĊĠĠĠĠĠ Ġreturn ĠV lc Tag Info ( ĊĠĠĠĠĠĠĠ Ġlib V lc . make Native Media ( uri ). apply Ġ{ Ġif Ġ(! is Parsed ) Ġparse ( parse Flag From Uri ( uri )) Ġ}, ĊĠĠĠĠĠĠĠ Ġartist Parser ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Flag From Uri ( uri : ĠUri ): ĠInt Ġ= ĊĠĠĠĠĠ Ġif Ġ( uri . is Network Scheme ()) ĠPAR SE _ NETWORK Ġelse ĠPAR SE _ LOCAL ĊĊĠĠĠ Ġ/** ĠParse Ġmetadata Ġif Ġthe Ġfile Ġis Ġlocal . ĠDoes n 't Ġbother Ġwith Ġart work Ġ*/ ĊĠĠĠ Ġprivate Ġconst Ġval ĠPAR SE _ LOCAL Ġ= ĠI Media . Parse . Parse Local ĊĊĠĠĠ Ġ/** ĠParse Ġmetadata Ġeven Ġif Ġover Ġa Ġnetwork Ġconnection . ĠDoes n 't Ġbother Ġwith Ġart work Ġ*/ ĊĠĠĠ Ġprivate Ġconst Ġval ĠPAR SE _ NETWORK Ġ= ĠI Media . Parse . Parse Network ĊĠ Ġ} Ċ } Ċ Ċ fun ĠStringBuilder . append Indent ed Line ( title : ĠString , Ġobj : ĠAny ?, Ġis Last : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠ Ġappend (" ĠĠ Ġ") ĊĠ Ġappend ( title ) ĊĠ Ġappend (': ') ĊĠ Ġif Ġ( is Last ) Ġ{ ĊĠĠĠ Ġappend Line ( obj ) ĊĠ Ġ} Ġelse Ġ{ ĊĠĠĠ Ġappend ( obj ) ĊĠĠĠ Ġappend Line (',') ĊĠ Ġ} Ċ } Ċ Ċ fun ĠMedia File Tag Info . asString (): ĠString Ġ{ ĊĠ Ġreturn Ġbuild String Ġ{ ĊĠĠĠ Ġappend Line (" Media Metadata [ ") ĊĠĠĠ Ġappend Indent ed Line (" title ", Ġtitle ) ĊĠĠĠ Ġappend Indent ed Line (" title Sort ", Ġtitle Sort ) ĊĠĠĠ Ġappend Indent ed Line (" artists ", Ġartists ) ĊĠĠĠ Ġappend Indent ed Line (" artists Sort ", Ġartists Sort ) ĊĠĠĠ Ġappend Indent ed Line (" album ", Ġalbum ) ĊĠĠĠ Ġappend Indent ed Line (" album Sort ", Ġalbum Sort ) ĊĠĠĠ Ġappend Indent ed Line (" album Artist ", Ġalbum Artist ) ĊĠĠĠ Ġappend Indent ed Line (" album Artist Sort ", Ġalbum Artist Sort ) ĊĠĠĠ Ġappend Indent ed Line (" composer ", Ġcomposer ) ĊĠĠĠ Ġappend Indent ed Line (" composer Sort ", Ġcomposer Sort ) ĊĠĠĠ Ġappend Indent ed Line (" genres ", Ġgen res ) ĊĠĠĠ Ġappend Indent ed Line (" track Number ", Ġtrack Number ) ĊĠĠĠ Ġappend Indent ed Line (" total Tracks ", Ġtotal Tracks ) ĊĠĠĠ Ġappend Indent ed Line (" disc Number ", Ġdisc Number ) ĊĠĠĠ Ġappend Indent ed Line (" total Dis cs ", Ġtotal Dis cs ) ĊĠĠĠ Ġappend Indent ed Line (" year ", Ġyear ) ĊĠĠĠ Ġappend Indent ed Line (" rating ", Ġrating ) ĊĠĠĠ Ġappend Indent ed Line (" comment ", Ġcomment ) ĊĠĠĠ Ġappend Indent ed Line (" lyr ics ", Ġl yr ics ) ĊĠĠĠ Ġappend Indent ed Line (" artist M bid ", Ġartist M bid ) ĊĠĠĠ Ġappend Indent ed Line (" release Artist M bid ", Ġrelease Artist M bid ) ĊĠĠĠ Ġappend Indent ed Line (" release M bid ", Ġrelease M bid ) ĊĠĠĠ Ġappend Indent ed Line (" track M bid ", Ġtrack M bid ) ĊĠĠĠ Ġappend Indent ed Line (" release Group M bid ", Ġrelease Group M bid ) ĊĠĠĠ Ġappend Indent ed Line (" language ", Ġlanguage ) ĊĠĠĠ Ġappend Indent ed Line (" copyright ", Ġcopyright ) ĊĠĠĠ Ġappend Indent ed Line (" description ", Ġdescription ) ĊĠĠĠ Ġappend Indent ed Line (" setting ", Ġsetting ) ĊĠĠĠ Ġappend Indent ed Line (" now Playing ", Ġnow Playing ) ĊĠĠĠ Ġappend Indent ed Line (" publisher ", Ġpublisher ) ĊĠĠĠ Ġappend Indent ed Line (" encoded By ", Ġencoded By ) ĊĠĠĠ Ġappend Indent ed Line (" director ", Ġdirector ) ĊĠĠĠ Ġappend Indent ed Line (" season ", Ġseason ) ĊĠĠĠ Ġappend Indent ed Line (" episode ", Ġepisode ) ĊĠĠĠ Ġappend Indent ed Line (" show Name ", Ġshow Name ) ĊĠĠĠ Ġappend Indent ed Line (" actors ", Ġactors , Ġtrue ) ĊĠĠĠ Ġappend Line (" ]") ĊĠ Ġ} Ċ } Ċ Ċ fun ĠString . to Artist M bid () Ġ= ĠArtist M bid ( this ) Ċ fun ĠString . to Release M bid () Ġ= ĠRelease M bid ( this ) Ċ fun ĠString . to Release Group M bid () Ġ= ĠRelease Group M bid ( this ) Ċ fun ĠString . to Track M bid () Ġ= ĠTrack M bid ( this ) Ċ