package Ġcom . k us amar u . st android . nico api . nic ol ive Ċ Ċ import Ġcom . k us amar u . st android . nico api . nic ol ive . dataclass . N ico Live K onom i Tag Data Ċ import Ġcom . k us amar u . st android . nico api . nic ol ive . dataclass . N ico Live Program Data Ċ import Ġcom . k us amar u . st android . tool . Ok HttpClient Singleton Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġokhttp 3 . MediaType . Companion . to MediaType OrNull Ċ import Ġokhttp 3 . Request Ċ import Ġokhttp 3 . RequestBody . Companion . to RequestBody Ċ import Ġorg . json . JSONArray Ċ import Ġorg . json . JSONObject Ċ import Ġorg . js oup . J soup Ċ Ċ /** Ċ Ġ* Ġ å¥½ ãģ¿ ãĤ¿ ãĤ° API Ġ ãģ¾ ãģ¨ ãĤģ Ċ Ġ* Ċ Ġ* Ġ å¥½ ãģ¿ ãĤ¿ ãĤ° ãģ¯ ãĢģ çķª çµĦ åįĺ ä½į ãģ§ãģ¯ ãģªãģı ãĥ¦ãĥ¼ãĤ¶ãĥ¼ åįĺ ä½į ãģ§ è¨Ńå®ļ ãģķãĤĮãĤĭ ãģ®ãģ§ ãģĿ ãģĵ ãģ§ å·® åĪ¥ åĮĸ ãģķãĤĮ ãģ¦ ãĤĭ ãĤĵ ãģĺ ãĤ ĥ ãģªãģĦ ãģĭ ãģ¨ Ċ Ġ* Ġ*/ Ċ class ĠN ico Live K onom i Tag API Ġ{ ĊĊĠĠĠ Ġ/** ĠãĤ · ãĥ³ãĤ° ãĥ« ãĥĪ ãĥ³ ãģª Ok Http Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġok HttpClient Ġ= ĠOk HttpClient Singleton . ok HttpClient ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å¥½ ãģ¿ ãĤ¿ ãĤ° ãģĭãĤī çķª çµĦ ãĤĴ æ¤ ľç´¢ ãģĻãĤĭ ãĢĤ HTML ãĤĴ è¿Ķ ãģĻ ãĢĤ ãĥĳ ãĥ¼ãĤ¹ ãģ¯ [ parse Search Program List ] ãģ§ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠãĤ Ĥ ãģĹãģ ı ãģ¯ èĩª åĪĨ ãģĮ ãĥķãĤ© ãĥŃ ãĥ¼ ãģĹãģ¦ãģĦãĤĭ ãĤ¿ ãĤ° ãĤĴåıĸå¾Ĺ ãģĻãĤĭãģ¨ ãģį ãģ« ãĤĤ ä½¿ ãģĪãĤĭ ï¼Ī [ get Following Tag ] ãģ¯ ãĥ¦ãĥ¼ãĤ¶ãĥ¼ ID ãģĮ å¿ħè¦ģ ãģª ãģ®ãģ§ ï¼ī ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġuser Session Ġãĥ ¦ãĥ¼ãĤ¶ ãĥ¼ãĤ » ãĥĥ ãĤ·ãĥ§ãĥ³ ĊĠĠĠĠ Ġ* Ġ@ param Ġtag Id ĠãĤ ¿ ãĤ° ãģ® ID ãĢĤ ãĢĮ sy amu Ġgame ãĢį ãģª ãĤī ãĢĮ 5 2 6 3 9 5 4 ãĢį ãĢĤ èĩª åĪĨ ãģ® ãĥķãĤ© ãĥŃ ãĥ¼ ãģĹãģ¦ãģĦãĤĭ ãĤ¿ ãĤ° ãģĮ æ¬ ² ãģĹãģĦ åł´åĲĪãģ¯ null ãģ§ ãģĦ ãģĦ ãģ§ãģĻ ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġsearch Program From K onom i Tag ( user Session : ĠString , Ġtag Id : ĠString ? Ġ= Ġnull ) Ġ= Ġwith Context ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest . Builder (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tag Id Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl (" https :// live . nic ov ideo . jp / recent ? has K onom i Tag = true & nic op edia Article Id =$ tag Id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl (" https :// live . nic ov ideo . jp / recent ? has K onom i Tag = true ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" User - Agent ", Ġ" T at imi Droid ; @ tak us an _ 2 3 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" Cookie ", Ġ" user _ session =$ user Session ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () ĊĠĠĠĠĠĠĠ Ġ}. build () ĊĠĠĠĠĠĠĠ Ġok HttpClient . new Call ( request ). execute () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ search Program From K onom i Tag ] ãĤĴ ãģĭãĤī æ¤ ľç´¢ çµĲæŀľ ãģ® çķª çµĦ ä¸Ģ è¦§ ãĤĴ è¿Ķ ãģĻ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠHTML åĨħ ãģ« JSON ãģĮ æ½ ľ ãĤĵ ãģ§ ãģĦ ãĤĭ ãģ®ãģ§ ãģĿãĤĮ ãĤĴä½¿ ãģ£ãģ¦ ãĥĳ ãĥ¼ãĤ¹ ãĢĤ èī¯ ãģĭ ãģ£ãģŁ ãĤ¹ãĤ¯ ãĥ¬ ãĤ¤ ãĥĶ ãĥ³ãĤ° ãģĺ ãĤ ĥ ãģªãģı ãģ¦ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġhtml ĠHTML ĊĠĠĠĠ Ġ* Ġ@ return Ġ çķª çµĦ ãĥĩãĥ¼ãĤ¿ ãĤ¯ãĥ©ãĤ¹ ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġparse Search Program List ( html : ĠString ?) Ġ= Ġwith Context ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ è¿Ķ ãģĻ éħį åĪĹ ĊĠĠĠĠĠĠĠ Ġval Ġresult Program List Ġ= Ġarray ListOf < N ico Live Program Data >() ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= ĠJ soup . parse ( html ) ĊĠĠĠĠĠĠĠ Ġval Ġjson Element Ġ= Ġdocument . getElementById (" embedded - data "). attr (" data - props ") ĊĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= ĠJSONObject ( json Element ) ĊĠĠĠĠĠĠĠ Ġ// Ġ çķª çµĦ ãģ® JSON éħį åĪĹ ĊĠĠĠĠĠĠĠ Ġval Ġprogram JSONArray Ġ= ĠjsonObject . getJSONObject (" view "). getJSONObject (" recent Programs "). getJSONObject (" nico Program List State "). get JSONArray (" program List ") ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġprogram JSONArray . length ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprogram JSONObject Ġ= Ġprogram JSONArray . getJSONObject ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbegin At Ġ= Ġprogram JSONObject . getLong (" begin At ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġend At Ġ= Ġprogram JSONObject . getLong (" end At ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprogram Id Ġ= Ġprogram JSONObject . getString (" id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlive Cycle Ġ= Ġprogram JSONObject . getString (" live Cycle ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcommunity Name Ġ= Ġprogram JSONObject . getJSONObject (" social Group "). getString (" name ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbroad C aster Name Ġ= Ġprogram JSONObject . getJSONObject (" program Provider "). getString (" name ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġprogram JSONObject . getString (" title ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġthumb Url Ġ= Ġprogram JSONObject . getJSONObject (" screenshot Thumbnail "). getString (" live Screenshot Thumbnail Url ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Program List . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠN ico Live Program Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġtitle , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbegin At Ġ= Ġbegin At . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend At Ġ= Ġend At . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommunity Name Ġ= Ġcommunity Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogram Id Ġ= Ġprogram Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbroad C aster Ġ= Ġbroad C aster Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlife Cycle Ġ= Ġlive Cycle , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġth um Ġ= Ġthumb Url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Official Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn @ with Context Ġresult Program List ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ search Program From K onom i Tag ] ãģĭãĤī èĩª åĪĨ ãģĭ ãĥķãĤ© ãĥŃ ãĥ¼ ãģĹãģ¦ãģĦãĤĭ ãĤ¿ ãĤ° ãĤĴ åıĸ ãĤĬ åĩº ãģĻ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġhtml ĠHTML ĊĠĠĠĠ Ġ* Ġ@ return Ġ å¥½ ãģ¿ ãĤ¿ ãĤ° ãģ® éħį åĪĹ ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġparse My Following Tag List ( html : ĠString ?) Ġ= Ġwith Context ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ è¿Ķ ãģĻ éħį åĪĹ ĊĠĠĠĠĠĠĠ Ġval Ġresult Following Tag List Ġ= Ġarray ListOf < N ico Live K onom i Tag Data >() ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= ĠJ soup . parse ( html ) ĊĠĠĠĠĠĠĠ Ġval Ġjson Element Ġ= Ġdocument . getElementById (" embedded - data "). attr (" data - props ") ĊĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= ĠJSONObject ( json Element ) ĊĠĠĠĠĠĠĠ Ġval Ġfollowing User Object Ġ= ĠjsonObject . getJSONObject (" view "). getJSONObject (" user Follow ee K onom i Tag "). getJSONObject (" relations ") ĊĠĠĠĠĠĠĠ Ġ// Ġãĥ ¦ãĥ¼ãĤ¶ãĥ¼ ID ãģĮ ãĤŃ ãĥ¼ ãģ«ãģª ãģ£ ãģ¦ãģĦãĤĭ ãģ®ãģ§ ãĤŃ ãĥ¼ãĤĴ åıĸ ãĤĭ ĊĠĠĠĠĠĠĠ Ġval ĠuserId Ġ= Ġfollowing User Object . keys (). next () ĊĠĠĠĠĠĠĠ Ġval Ġfollowing JSONArray Ġ= Ġfollowing User Object . get JSONArray ( userId ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġfollowing JSONArray . length ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfollowing JSONObject Ġ= Ġfollowing JSONArray . getJSONObject ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġfollowing JSONObject . getString (" name ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfollow ers Count Ġ= Ġfollowing JSONObject . getInt (" followers Count ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġfollowing JSONObject . getString (" id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Following Tag List . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠN ico Live K onom i Tag Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag Id Ġ= Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfollow ers Count Ġ= Ġfollow ers Count , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Following Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn @ with Context Ġresult Following Tag List ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ãģĬ ãģĻ ãģĻ ãĤģ å¥½ ãģ¿ ãĤ¿ ãĤ° API ãĤĴ åı © ãģı ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġãĥĳ ãĥ¼ãĤ¹ ãģ¯ Ġ[ parse K onom i Tag ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġuser Session Ġãĥ ¦ãĥ¼ãĤ¶ ãĥ¼ãĤ » ãĥĥ ãĤ·ãĥ§ãĥ³ ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġget Recommend K onom i Tag ( user Session : ĠString ) Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ åıĸå¾Ĺ ãģł ãģĭãĤī GET ãģł ãģ¨ æĢĿ ãģ£ãģŁ ï¼Ł ãģ ĸ ãĤĵ ãģ Ń ãĥ¼ãĤ ĵ POST ãģ§ ãģĹãģŁ ï¼Ī ãģ¯ ï¼Ł ï¼ī ĊĠĠĠĠĠĠĠ Ġval Ġpost JSON Ġ= ĠJSONObject (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput (" recommend _ recipe ", ĠJSONObject (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" recipe _ id ", Ġ" live _ k onom i _ tag ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" recipe _ version ", Ġ" 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" site _ id ", Ġ" nic ol ive ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest . Builder (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl (" https :// api . live 2 . nic ov ideo . jp / api / v 1 / k onom i Tags / Get Recommended ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" User - Agent ", Ġ" T at imi Droid ; @ tak us an _ 2 3 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" Cookie ", Ġ" user _ session =$ user Session ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" x - service - id ", Ġ" nic ol ive ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost ( post JSON . toString (). to RequestBody (" application / json ". to MediaType OrNull ())) ĊĠĠĠĠĠĠĠ Ġ}. build () ĊĠĠĠĠĠĠĠ Ġok HttpClient . new Call ( request ). execute () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠãĤ ¿ ãĤ° ãĤĴ ãĥķãĤ© ãĥŃ ãĥ¼ ãģĻãĤĭ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġuser Session Ġãĥ ¦ãĥ¼ãĤ¶ ãĥ¼ãĤ » ãĥĥ ãĤ·ãĥ§ãĥ³ ĊĠĠĠĠ Ġ* Ġ@ param Ġtag Id ĠãĤ ¿ ãĤ° ãģ® ID ĊĠĠĠĠ Ġ* Ġ@ return Ġ ãĤ¹ãĥĨ ãĥ¼ãĤ¿ ãĤ¹ ãĤ³ãĥ¼ãĥī ãģĮ 2 0 0 ãģª ãĤī æĪĲåĬŁ ãĢĤ çī¹ ãģ« ãĥ¬ ãĤ¹ ãĥĿ ãĥ³ãĤ¹ ãĥľ ãĥĩãĤ£ ãĥ¼ ãģ¯ ãģªãģĦ ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġpost Follow Tag ( user Session : ĠString , Ġtag Id : ĠString ) Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpost JSON Ġ= ĠJSONObject (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput (" tag _ ids ", ĠJSONArray (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( JSONObject (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" value ", Ġtag Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest . Builder (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl (" https :// api . live 2 . nic ov ideo . jp / api / v 1 / k onom i Tags / Follow ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" User - Agent ", Ġ" T at imi Droid ; @ tak us an _ 2 3 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" Cookie ", Ġ" user _ session =$ user Session ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" x - service - id ", Ġ" nic ol ive ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost ( post JSON . toString (). to RequestBody (" application / json ". to MediaType OrNull ())) ĊĠĠĠĠĠĠĠ Ġ}. build () ĊĠĠĠĠĠĠĠ Ġok HttpClient . new Call ( request ). execute () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠãĤ ¿ ãĤ° ãģ® ãĥķãĤ© ãĥŃ ãĥ¼ãĤĴ å¤ĸ ãģĻ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġuser Session Ġãĥ ¦ãĥ¼ãĤ¶ ãĥ¼ãĤ » ãĥĥ ãĤ·ãĥ§ãĥ³ ĊĠĠĠĠ Ġ* Ġ@ param Ġtag Id ĠãĤ ¿ ãĤ° ãģ® ID ĊĠĠĠĠ Ġ* Ġ@ return Ġ ãĤ¹ãĥĨ ãĥ¼ãĤ¿ ãĤ¹ ãĤ³ãĥ¼ãĥī ãģĮ 2 0 0 ãģª ãĤī æĪĲåĬŁ ãĢĤ çī¹ ãģ« ãĥ¬ ãĤ¹ ãĥĿ ãĥ³ãĤ¹ ãĥľ ãĥĩãĤ£ ãĥ¼ ãģ¯ ãģªãģĦ ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġpost Remove Follow Tag ( user Session : ĠString , Ġtag Id : ĠString ) Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpost JSON Ġ= ĠJSONObject (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput (" tag _ ids ", ĠJSONArray (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( JSONObject (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" value ", Ġtag Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest . Builder (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl (" https :// api . live 2 . nic ov ideo . jp / api / v 1 / k onom i Tags / Un follow ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" User - Agent ", Ġ" T at imi Droid ; @ tak us an _ 2 3 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" Cookie ", Ġ" user _ session =$ user Session ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" x - service - id ", Ġ" nic ol ive ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost ( post JSON . toString (). to RequestBody (" application / json ". to MediaType OrNull ())) ĊĠĠĠĠĠĠĠ Ġ}. build () ĊĠĠĠĠĠĠĠ Ġok HttpClient . new Call ( request ). execute () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġãĥ ¦ãĥ¼ãĤ¶ãĥ¼ ãģĮ ãĥķãĤ© ãĥŃ ãĥ¼ ãģĹãģ¦ãģĦãĤĭ å¥½ ãģ¿ ãĤ¿ ãĤ° ãĤĴ è¿Ķ ãģĻ ãĢĤ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġãĥĳ ãĥ¼ãĤ¹ ãģ¯ [ parse K onom i Tag ] ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param ĠuserId Ġãĥ ¦ãĥ¼ãĤ¶ãĥ¼ ID ĊĠĠĠĠ Ġ* Ġ@ param Ġtype Ġ ãģĿãģ® ãģ¾ ãģ¾ãģ§ ĊĠĠĠĠ Ġ* Ġ@ param Ġuser Session Ġãĥ ¦ãĥ¼ãĤ¶ ãĥ¼ãĤ » ãĥĥ ãĤ·ãĥ§ãĥ³ ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġget Following Tag ( user Session : ĠString , ĠuserId : ĠString , Ġtype : ĠString Ġ= Ġ" USER ") Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ ãģª ãĤĵ ãģ§ POST ãģª ãĤĵ ãģł ãĤĪ ĊĠĠĠĠĠĠĠ Ġval Ġpost JSON Ġ= ĠJSONObject (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput (" follow er _ id ", ĠJSONObject (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" value ", ĠuserId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput (" type ", Ġtype ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest . Builder (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġurl (" https :// api . live 2 . nic ov ideo . jp / api / v 1 / k onom i Tags / Get Following ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" User - Agent ", Ġ" T at imi Droid ; @ tak us an _ 2 3 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" Cookie ", Ġ" user _ session =$ user Session ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" x - service - id ", Ġ" nic ol ive ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost ( post JSON . toString (). to RequestBody (" application / json ". to MediaType OrNull ())) ĊĠĠĠĠĠĠĠ Ġ}. build () ĊĠĠĠĠĠĠĠ Ġok HttpClient . new Call ( request ). execute () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ãģĬ ãģĻ ãģĻ ãĤģ å¥½ ãģ¿ ãĤ¿ ãĤ° API ãĢģ å¥½ ãģ¿ ãĤ¿ ãĤ° åıĸå¾Ĺ API ĠãĤĴ ãĥĳ ãĥ¼ãĤ¹ ãģĻãĤĭ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġresponse String Ġãĥ ¬ ãĤ¹ ãĥĿ ãĥ³ãĤ¹ ãĥ ĺ ãĥĥ ãĥĢ ãĥ¼ ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġparse K onom i Tag ( response String : ĠString ?) Ġ= Ġwith Context ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Re comment Tag List Ġ= Ġarray ListOf < N ico Live K onom i Tag Data >() ĊĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= ĠJSONObject ( response String ) ĊĠĠĠĠĠĠĠ Ġval Ġk onom i Tag JSONArray Ġ= ĠjsonObject . get JSONArray (" k onom i _ tags ") ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġk onom i Tag JSONArray . length ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġk onom i Tag JSONObject Ġ= Ġk onom i Tag JSONArray . getJSONObject ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġk onom i Tag JSONObject . getString (" name ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfollow ers Count Ġ= Ġk onom i Tag JSONObject . getInt (" followers _ count ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtag Id Ġ= Ġk onom i Tag JSONObject . getJSONObject (" tag _ id "). getString (" value ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Re comment Tag List . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠN ico Live K onom i Tag Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtag Id Ġ= Ġtag Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfollow ers Count Ġ= Ġfollow ers Count , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Following Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn @ with Context Ġresult Re comment Tag List ĊĠĠĠ Ġ} Ċ Ċ }