h4ck/lg_webOS/generate_slimmed-aic-json.rb

137 lines
4.3 KiB
Ruby
Raw Normal View History

#!/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}`