making generate_slimmed-aic-json a first class citizen, switching to non RGBA pings - losing quality, but might force the tv to read it
@ -7,6 +7,7 @@
|
|||||||
- [on boot](#on-boot)
|
- [on boot](#on-boot)
|
||||||
- [channel search](#channel-search)
|
- [channel search](#channel-search)
|
||||||
- [application marketplace](#application-marketplace)
|
- [application marketplace](#application-marketplace)
|
||||||
|
- [license manager](#license-manager)
|
||||||
- [impersonating](#impersonating)
|
- [impersonating](#impersonating)
|
||||||
- [OS update](#os-update)
|
- [OS update](#os-update)
|
||||||
- [channel guide](#channel-guide)
|
- [channel guide](#channel-guide)
|
||||||
@ -271,10 +272,75 @@ sample entry:
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
`generate_slimmed-aic-json.rb` can be used to create a small schedule starting at the current time.
|
||||||
|
|
||||||
#### application marketplace
|
#### application marketplace
|
||||||
|
|
||||||
bar
|
bar
|
||||||
|
|
||||||
|
#### license manager
|
||||||
|
|
||||||
|
after an update of an application (and potentially other times), the device calls a different home:
|
||||||
|
|
||||||
|
request:
|
||||||
|
```
|
||||||
|
POST /license_manager.asp HTTP/1.1
|
||||||
|
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)
|
||||||
|
Host: us.security.lgtvsdp.com
|
||||||
|
Content-Length: 210
|
||||||
|
Content-Type:application/x-www-form-urlencoded
|
||||||
|
X-Device-Product:webOSTV 3.0
|
||||||
|
X-Device-Platform:W16P
|
||||||
|
X-Device-Model:HE_DTV_W16P_AFADATAA
|
||||||
|
X-Device-Netcast-Platform-Version:3.3.1
|
||||||
|
X-Device-Eco-Info:1
|
||||||
|
X-Device-Country-Group:US
|
||||||
|
X-Device-Publish-Flag:Y
|
||||||
|
X-Device-ContentsQA-Flag:Y
|
||||||
|
X-Device-FW-Version:04.30.40
|
||||||
|
X-Device-SDK-VERSION:3.3.1
|
||||||
|
X-Device-ID:<redacted>
|
||||||
|
X-Device-Type:T01
|
||||||
|
X-Device-Language:en-US
|
||||||
|
X-Device-Country:US
|
||||||
|
X-Device-Remote-Flag:N
|
||||||
|
X-Authentication:<redacted>
|
||||||
|
|
||||||
|
|
||||||
|
mode=issuelicense4pre&sid=1827712162&deviceid=<redacted>>&devicemodel=webostv&p=D1609DEB7189B744D4BC272550CBF5BF&g=5&A=52013FFC91EA5A6F41BE025B5E4461FB&hmac=OnSGJj7D3yth5HPdafdtnArDKYc%3D
|
||||||
|
```
|
||||||
|
|
||||||
|
nothing in the request really jumps out
|
||||||
|
|
||||||
|
response:
|
||||||
|
```
|
||||||
|
HTTP/1.1 200 OK
|
||||||
|
Cache-Control: private
|
||||||
|
Content-Length: 935
|
||||||
|
Content-Type: text/html
|
||||||
|
Server: Microsoft-IIS/7.5
|
||||||
|
Set-Cookie: ASPSESSIONIDAARCQAST=DOLHEFIBIEAONHPFCIFPECDL; path=/
|
||||||
|
X-Powered-By: ASP.NET
|
||||||
|
Date: Tue, 15 Nov 2016 19:00:39 GMT
|
||||||
|
|
||||||
|
<?xml version='1.0' encoding='utf-8'?><response result='0' message=''><responsedata>B=957172C7AF8EFA66326A7639D1C5301B;license=tDlsT2zdeFKZMZiOBv+pb9dSbyRclLkZJP4rw4Fv9tJYfqwbmE5kpDvHogWrC/yqMwlZG5tx+21PMV4zZDaYytZCZsfcJfLxHVFjU8MkfAOTtaPlUALmBvK/+jg4tGfE/LMoUGGle1huxAEM5UylS5zUA4yKa7V4XUgfFGde1ug9X3QzbnFH5oLMdmX7KyK3Z2HZ640kW/iGvPAz5lgZwvEx4I62aR7V0k/RbYMQfrC6jWHWVAz/yxNOOKSpMHK8tGNnGYoL9baiOh24jvoZ3lAvlLmPO/W8VmCZXRcmkTKuAvpej1fBFKzsRgfTci05MwqthA4caYxKGZhZdtWXJANzVE5V/2Xo35NG2lhwAEJmQoTP0ao6ygktdt+Eui6Ub4NIIn0WvpaNsQXkdhDnJ6ybpaXFy66KTevuJ7+/7N8E8RNF475EkF3FNuoVzNRTWxFmEk/IlMFVT0GgHh3q2sT8feNSo7usCYMLdnlDl15PDQ6894Weth6B+dbqe2xZk12qa7czTBlYAqjtH7oG2xg0G8N6vqrOHji8BkQ2zGnfqDmLq0OnFwlmUBu1GPyKpmsf+7pyuPEdVv8OI9TaEdqKw13IML6YVSJRHM7Q1hEpjwvbjttgk6XsJMvyVg7LMR3Fm1ZKOuRWbVrH/4j2fY5Nc6yek8y/aladiQnikoZ+CgSmvY58XsYu3Mo6J59X+z6jyUVka1/WhKAdVAHTUN2OZkH4rTYckgDMy3REXCU=;hmac=l0kBybteRX6bdSGjD/w0LV86MVU=</responsedata></response>
|
||||||
|
```
|
||||||
|
|
||||||
|
breaking down the XML response:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<response result='0' message=''>
|
||||||
|
<responsedata>
|
||||||
|
B=957172C7AF8EFA66326A7639D1C5301B;
|
||||||
|
license=tDlsT2zdeFKZMZiOBv+pb9dSbyRclLkZJP4rw4Fv9tJYfqwbmE5kpDvHogWrC/yqMwlZG5tx+21PMV4zZDaYytZCZsfcJfLxHVFjU8MkfAOTtaPlUALmBvK/+jg4tGfE/LMoUGGle1huxAEM5UylS5zUA4yKa7V4XUgfFGde1ug9X3QzbnFH5oLMdmX7KyK3Z2HZ640kW/iGvPAz5lgZwvEx4I62aR7V0k/RbYMQfrC6jWHWVAz/yxNOOKSpMHK8tGNnGYoL9baiOh24jvoZ3lAvlLmPO/W8VmCZXRcmkTKuAvpej1fBFKzsRgfTci05MwqthA4caYxKGZhZdtWXJANzVE5V/2Xo35NG2lhwAEJmQoTP0ao6ygktdt+Eui6Ub4NIIn0WvpaNsQXkdhDnJ6ybpaXFy66KTevuJ7+/7N8E8RNF475EkF3FNuoVzNRTWxFmEk/IlMFVT0GgHh3q2sT8feNSo7usCYMLdnlDl15PDQ6894Weth6B+dbqe2xZk12qa7czTBlYAqjtH7oG2xg0G8N6vqrOHji8BkQ2zGnfqDmLq0OnFwlmUBu1GPyKpmsf+7pyuPEdVv8OI9TaEdqKw13IML6YVSJRHM7Q1hEpjwvbjttgk6XsJMvyVg7LMR3Fm1ZKOuRWbVrH/4j2fY5Nc6yek8y/aladiQnikoZ+CgSmvY58XsYu3Mo6J59X+z6jyUVka1/WhKAdVAHTUN2OZkH4rTYckgDMy3REXCU=;
|
||||||
|
hmac=l0kBybteRX6bdSGjD/w0LV86MVU=
|
||||||
|
</responsedata>
|
||||||
|
</response>
|
||||||
|
```
|
||||||
|
|
||||||
|
both `license` and `hmac` values are obviously hashes, but have been unable to determine what kind
|
||||||
|
|
||||||
# impersonating
|
# impersonating
|
||||||
|
|
||||||
most (all?) of this data is based on `impersonate-lge.rb` interactions
|
most (all?) of this data is based on `impersonate-lge.rb` interactions
|
||||||
@ -301,6 +367,7 @@ the traffic after the user chooses to upgrade:
|
|||||||
```
|
```
|
||||||
```
|
```
|
||||||
|
|
||||||
|
<TODO finish this writeup and hack>
|
||||||
|
|
||||||
## channel guide
|
## channel guide
|
||||||
|
|
||||||
@ -324,6 +391,8 @@ key | value
|
|||||||
|
|
||||||
`contentId` and `pgmGrId` were changed to make them line up with changes made to `schedule.json`
|
`contentId` and `pgmGrId` were changed to make them line up with changes made to `schedule.json`
|
||||||
|
|
||||||
|
<TODO show interactions.. finish the writeup and the hack>
|
||||||
|
|
||||||
|
|
||||||
## application update
|
## application update
|
||||||
|
|
||||||
|
@ -1,44 +1 @@
|
|||||||
{
|
{"updateType":"full","contentSetId":"com.lge.crawler.xml.tms.TmsEpgCrawler","pgmCount":"1","programList":[{"dbAction":"I","contentId":"EP022959710800","seqNo":"0","pgmGrId":"SH022959710800","connectorId":"1010999","serId":"184168","serNo":"","seasonId":"7894663","seasonNo":"2","pgmType":"Series","realEpsdNo":"13","summary":"h4ck the planet","pgmImgUrlName":"http://aic-gfts.lge.com/aic/hacktheplanet.jpg","orgGenreType":"","orgGenreCode":"5","oGenreCode":"2","oGenreType":"","subGenreType":"","subGenreCode":"","makeCom":"","makeCntry":"","makeYear":"1988-02-07","usrPplrSt":"","pplrSt":"","audLang":"en","dataLang":"ENG","audQlty":"","genreImgUrl":"http://aic-gfts.lge.com/aic/hacktheplanet.jpg","vodFlag":"N","pgmImgSize":"V480X720","genreImgSize":"V480X720","lgGenreCode2":"14","lgGenreName2":"Crime","programLock":"","castingFlag":"Y"}]}
|
||||||
"updateType": "full",
|
|
||||||
"contentSetId": "com.lge.crawler.xml.tms.TmsEpgCrawler",
|
|
||||||
"pgmCount": "1",
|
|
||||||
"programList": [
|
|
||||||
{
|
|
||||||
"dbAction": "I",
|
|
||||||
"contentId": "EP022959710001",
|
|
||||||
"seqNo": "0",
|
|
||||||
"pgmGrId": "SH022959710000",
|
|
||||||
"connectorId": "1010999",
|
|
||||||
"serId": "184168",
|
|
||||||
"serNo": "",
|
|
||||||
"seasonId": "7894663",
|
|
||||||
"seasonNo": "2",
|
|
||||||
"pgmType": "Series",
|
|
||||||
"realEpsdNo": "13",
|
|
||||||
"summary": "h4ck the planet",
|
|
||||||
"pgmImgUrlName": "http://aic-gfts.lge.com/aic/hacktheplanet.jpg",
|
|
||||||
"orgGenreType": "",
|
|
||||||
"orgGenreCode": "5",
|
|
||||||
"oGenreCode": "2",
|
|
||||||
"oGenreType": "",
|
|
||||||
"subGenreType": "",
|
|
||||||
"subGenreCode": "",
|
|
||||||
"makeCom": "",
|
|
||||||
"makeCntry": "",
|
|
||||||
"makeYear": "1988-02-07",
|
|
||||||
"usrPplrSt": "",
|
|
||||||
"pplrSt": "",
|
|
||||||
"audLang": "en",
|
|
||||||
"dataLang": "ENG",
|
|
||||||
"audQlty": "",
|
|
||||||
"genreImgUrl": "http://aic-gfts.lge.com/aic/hacktheplanet.jpg",
|
|
||||||
"vodFlag": "N",
|
|
||||||
"pgmImgSize": "V480X720",
|
|
||||||
"genreImgSize": "V480X704",
|
|
||||||
"lgGenreCode2": "14",
|
|
||||||
"lgGenreName2": "Crime",
|
|
||||||
"programLock": "",
|
|
||||||
"castingFlag": "Y"
|
|
||||||
},
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
@ -1,35 +1 @@
|
|||||||
{
|
{"updateType":"full","schCount":"1","scheduleList":[{"dbAction":"I","schdId":"100006/EP022959710800/2016-12-23-05:00","contentId":"EP022959710800","seqNo":"0","chanCode":"100006","strtTime":"2016,12,23,Dec,00,00","strtTimeLong":1482512889,"endTime":"2016,12,23,Dec,00,00","endTimeLong":1482514689,"schdSummary":"h4ck the planet","timeType":"","schdPgmTtl":"h4ck the planet","schdSubTtl":"h4ck the planet","rebrdcstFlag":"Y","capFlag":"","liveFlag":"","dataBrdcstFlag":"","scExplnBrdcstFlag":"","scQualityGbn":"","signBrdcstFlag":"","voiceMultiBrdcstCount":"","threeDFlag":"","schdAdultClassCode":"-1","schdAgeGrdCode":"TVG","pgmGrId":"SH022959710800","genreCode":"61","realEpsdNo":"0"}]}
|
||||||
"updateType": "full",
|
|
||||||
"schCount": "1",
|
|
||||||
"scheduleList": [
|
|
||||||
{
|
|
||||||
"dbAction": "I",
|
|
||||||
"schdId": "100006/EP022959710001/2016-11-11-05:00",
|
|
||||||
"contentId": "EP022959710001",
|
|
||||||
"seqNo": "0",
|
|
||||||
"chanCode": "100006",
|
|
||||||
"strtTime": "2016,11,11,05,00,00",
|
|
||||||
"strtTimeLong": 1478840400,
|
|
||||||
"endTime": "2016,11,11,08,00,00",
|
|
||||||
"endTimeLong": 1478851200,
|
|
||||||
"schdSummary": "h4ck the planet",
|
|
||||||
"timeType": "",
|
|
||||||
"schdPgmTtl": "h4ck the planet",
|
|
||||||
"schdSubTtl": "h4ck the planet",
|
|
||||||
"rebrdcstFlag": "Y",
|
|
||||||
"capFlag": "",
|
|
||||||
"liveFlag": "",
|
|
||||||
"dataBrdcstFlag": "",
|
|
||||||
"scExplnBrdcstFlag": "",
|
|
||||||
"scQualityGbn": "",
|
|
||||||
"signBrdcstFlag": "",
|
|
||||||
"voiceMultiBrdcstCount": "",
|
|
||||||
"threeDFlag": "",
|
|
||||||
"schdAdultClassCode": "-1",
|
|
||||||
"schdAgeGrdCode": "TVG",
|
|
||||||
"pgmGrId": "SH022959710000",
|
|
||||||
"genreCode": "61",
|
|
||||||
"realEpsdNo": "0"
|
|
||||||
},
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
After Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 304 KiB After Width: | Height: | Size: 37 KiB |
After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 304 KiB After Width: | Height: | Size: 22 KiB |
@ -1,35 +1,35 @@
|
|||||||
{
|
{
|
||||||
"chan_logo_list": [
|
"chan_logo_list": [
|
||||||
{
|
{
|
||||||
"chan_logo_file_name": "16715_201412040000_v94x100.png",
|
"chan_logo_file_name": "16715_201412040000_v94x100-a.png",
|
||||||
"logo_bg_color": "#2C2C2C",
|
"logo_bg_color": "#2C2C2C",
|
||||||
"major_chan": "1",
|
"major_chan": "1",
|
||||||
"chan_logo_size": "V94x100",
|
"chan_logo_size": "V94x100",
|
||||||
"code": "16715"
|
"code": "16715"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"chan_logo_file_name": "78812_201412040000_h177x100.png",
|
"chan_logo_file_name": "78812_201412040000_h177x100-a.png",
|
||||||
"logo_bg_color": "#2C2C2C",
|
"logo_bg_color": "#2C2C2C",
|
||||||
"major_chan": "1",
|
"major_chan": "1",
|
||||||
"chan_logo_size": "H177x100",
|
"chan_logo_size": "H177x100",
|
||||||
"code": "78812"
|
"code": "78812"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"chan_logo_file_name": "35513_201412040000_h169x100.png",
|
"chan_logo_file_name": "35513_201412040000_h169x100-a.png",
|
||||||
"logo_bg_color": "#2C2C2C",
|
"logo_bg_color": "#2C2C2C",
|
||||||
"major_chan": "1",
|
"major_chan": "1",
|
||||||
"chan_logo_size": "H169x100",
|
"chan_logo_size": "H169x100",
|
||||||
"code": "35513"
|
"code": "35513"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"chan_logo_file_name": "11066_201412040000_h177x100.png",
|
"chan_logo_file_name": "11066_201412040000_h177x100-a.png",
|
||||||
"logo_bg_color": "#2C2C2C",
|
"logo_bg_color": "#2C2C2C",
|
||||||
"major_chan": "1",
|
"major_chan": "1",
|
||||||
"chan_logo_size": "H177x100",
|
"chan_logo_size": "H177x100",
|
||||||
"code": "11066"
|
"code": "11066"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"chan_logo_file_name": "52199_201412040000_v71x100.png",
|
"chan_logo_file_name": "52199_201412040000_v71x100-a.png",
|
||||||
"logo_bg_color": "#2C2C2C",
|
"logo_bg_color": "#2C2C2C",
|
||||||
"major_chan": "1",
|
"major_chan": "1",
|
||||||
"chan_logo_size": "V71x100",
|
"chan_logo_size": "V71x100",
|
||||||
|
After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 304 KiB After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 304 KiB After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 304 KiB After Width: | Height: | Size: 37 KiB |
136
lg_webOS/generate_slimmed-aic-json.rb
Normal file
@ -0,0 +1,136 @@
|
|||||||
|
#!/usr/bin/env ruby
|
||||||
|
## generate_slimmed-aic-json.rb -- generates a zip file suitable for faking the tv schedule
|
||||||
|
|
||||||
|
require 'json'
|
||||||
|
|
||||||
|
target_dir = sprintf('%s/_public/aic', File.expand_path(File.dirname(__FILE__)))
|
||||||
|
source_dir = sprintf('%s/_source/slimmed', target_dir)
|
||||||
|
target_zip = sprintf('%s/faked-aic.zip', target_dir)
|
||||||
|
|
||||||
|
synchro = Time.now
|
||||||
|
datestamp = synchro.strftime('%Y-%m-%d-05:00')
|
||||||
|
|
||||||
|
schedule_filename = sprintf('%s/schedule.json', source_dir)
|
||||||
|
|
||||||
|
start_time_commas = synchro.strftime('%Y,%m,%d,%h,00,00') # as close to real as possible, but faking the last bit
|
||||||
|
start_time_ticks = synchro.to_i
|
||||||
|
|
||||||
|
end_time_ticks = start_time_ticks + (30 * 60) # adding 30 minuted
|
||||||
|
end_time_commas = Time.at(end_time_ticks).strftime('%Y,%m,%d,%h,00,00')
|
||||||
|
|
||||||
|
uniq_id = sprintf('0229597%s', 10001 + rand(1000))
|
||||||
|
content_id = sprintf('EP%s', uniq_id)
|
||||||
|
program_id = sprintf('SH%s', uniq_id)
|
||||||
|
channel_code = '100006'
|
||||||
|
|
||||||
|
schedule_id = sprintf('%s/%s/%s', channel_code, content_id, datestamp) # 100006/EP022959710001/2016-11-11-05:00
|
||||||
|
|
||||||
|
h4ck_text = 'h4ck the planet'
|
||||||
|
|
||||||
|
schedule = {
|
||||||
|
'updateType' => 'full',
|
||||||
|
'schCount' => '1',
|
||||||
|
'scheduleList' => [
|
||||||
|
{
|
||||||
|
'dbAction' => 'I',
|
||||||
|
'schdId' => schedule_id,
|
||||||
|
'contentId' => content_id, # this needs to match above and in program.json, but also needs to be unique
|
||||||
|
'seqNo' => '0',
|
||||||
|
'chanCode' => channel_code,
|
||||||
|
'strtTime' => start_time_commas,
|
||||||
|
'strtTimeLong' => start_time_ticks,
|
||||||
|
'endTime' => end_time_commas,
|
||||||
|
'endTimeLong' => end_time_ticks,
|
||||||
|
'schdSummary' => h4ck_text,
|
||||||
|
'timeType' => '', # this was blank in the source too
|
||||||
|
'schdPgmTtl' => h4ck_text,
|
||||||
|
'schdSubTtl' => h4ck_text,
|
||||||
|
'rebrdcstFlag' => 'Y',
|
||||||
|
'capFlag' => '',
|
||||||
|
'liveFlag' => '',
|
||||||
|
'dataBrdcstFlag' => '',
|
||||||
|
'scExplnBrdcstFlag' => '',
|
||||||
|
'scQualityGbn' => '',
|
||||||
|
'signBrdcstFlag' => '',
|
||||||
|
'voiceMultiBrdcstCount' => '',
|
||||||
|
'threeDFlag' => '',
|
||||||
|
'schdAdultClassCode' => '-1',
|
||||||
|
'schdAgeGrdCode' => 'TVG',
|
||||||
|
'pgmGrId' => program_id,
|
||||||
|
'genreCode' => '61',
|
||||||
|
'realEpsdNo' => '0'
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
puts sprintf('outputting schedule to[%s]', schedule_filename)
|
||||||
|
|
||||||
|
File.open(schedule_filename, 'w') do |f|
|
||||||
|
f.puts schedule.to_json
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
## now build program.json
|
||||||
|
|
||||||
|
connector_id = '1010999'
|
||||||
|
serial_id = '184168'
|
||||||
|
season_id = '7894663'
|
||||||
|
|
||||||
|
aic_h4ck_image = 'http://aic-gfts.lge.com/aic/hacktheplanet.jpg'
|
||||||
|
|
||||||
|
program_filename = sprintf('%s/program.json', source_dir)
|
||||||
|
|
||||||
|
program = {
|
||||||
|
'updateType' => 'full',
|
||||||
|
'contentSetId' => 'com.lge.crawler.xml.tms.TmsEpgCrawler',
|
||||||
|
'pgmCount' => '1',
|
||||||
|
'programList' => [
|
||||||
|
{
|
||||||
|
'dbAction' => 'I',
|
||||||
|
'contentId' => content_id,
|
||||||
|
'seqNo' => '0',
|
||||||
|
'pgmGrId' => program_id,
|
||||||
|
'connectorId' => connector_id,
|
||||||
|
'serId' => serial_id,
|
||||||
|
'serNo' => '',
|
||||||
|
'seasonId' => season_id,
|
||||||
|
'seasonNo' => '2',
|
||||||
|
'pgmType' => 'Series',
|
||||||
|
'realEpsdNo' => '13',
|
||||||
|
'summary' => h4ck_text,
|
||||||
|
'pgmImgUrlName' => aic_h4ck_image,
|
||||||
|
'orgGenreType' => '',
|
||||||
|
'orgGenreCode' => '5',
|
||||||
|
'oGenreCode' => '2',
|
||||||
|
'oGenreType' => '',
|
||||||
|
'subGenreType' => '',
|
||||||
|
'subGenreCode' => '',
|
||||||
|
'makeCom' => '',
|
||||||
|
'makeCntry' => '',
|
||||||
|
'makeYear' => '1988-02-07',
|
||||||
|
'usrPplrSt' => '',
|
||||||
|
'pplrSt' => '',
|
||||||
|
'audLang' => 'en',
|
||||||
|
'dataLang' => 'ENG',
|
||||||
|
'audQlty' => '',
|
||||||
|
'genreImgUrl' => aic_h4ck_image,
|
||||||
|
'vodFlag' => 'N',
|
||||||
|
'pgmImgSize' => 'V480X720',
|
||||||
|
'genreImgSize' => 'V480X720',
|
||||||
|
'lgGenreCode2' => '14',
|
||||||
|
'lgGenreName2' => 'Crime',
|
||||||
|
'programLock' => '',
|
||||||
|
'castingFlag' => 'Y'
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
puts sprintf('outputting program to[%s]', program_filename)
|
||||||
|
|
||||||
|
File.open(program_filename, 'w') do |f|
|
||||||
|
f.puts program.to_json
|
||||||
|
end
|
||||||
|
|
||||||
|
puts sprintf('creating[%s]', target_zip)
|
||||||
|
`cd #{source_dir}; zip #{target_zip} #{File.basename(program_filename)} #{File.basename(schedule_filename)}; ls -l #{target_zip}`
|