コード例 #1
0
 def update_settings(self):
     # テンプレートを読み込む
     template = Common.read_file(Common.TEMPLATE_FILE)
     # 設定ファイルに書き出すトークンを設定
     keys = list(self.data.keys())
     if len(keys) == 0:
         namelist = 'n/a'
     else:
         namelist = ('|'.join(keys))
         if len(keys) == 1:
             Common.SET('defaultname', keys[0])
     # 設定ファイルを書き出す
     Common.write_file(
         Common.SETTINGS_FILE,
         template.format(tokenname=namelist, tokenname2=namelist))
コード例 #2
0
def initializeChannel():
    # リセット
    Common.SET('garapon_ch', '')
    # チャンネル情報を取得
    response_body = Request().channel()
    if response_body:
        response_data = json.loads(response_body)
        if response_data['status'] == 1:
            # チャンネル情報をファイルに書き出す
            Common.write_json(Common.CHANNEL_FILE, response_data)
            # チャンネル数を設定
            Common.SET('garapon_ch', '%d channels' % len(response_data['ch_list'].keys()))
            # 設定画面のテンプレートを読み込む
            template = Common.read_file(Common.TEMPLATE_FILE)
            # テンプレートに書き出すジャンル情報
            genre = Genre().getLabel()
            # チャンネル情報とあわせてテンプレートに適用
            source = template.format(
                channel=Channel().getLabel(),
                g0=genre['g0'],
                g00=genre['g00'],
                g01=genre['g01'],
                g02=genre['g02'],
                g03=genre['g03'],
                g04=genre['g04'],
                g05=genre['g05'],
                g06=genre['g06'],
                g07=genre['g07'],
                g08=genre['g08'],
                g09=genre['g09'],
                g10=genre['g10'],
                g11=genre['g11']
            )
            # 設定画面をファイルに書き出す
            Common.write_file(Common.SETTINGS_FILE, source)
            # 完了
            Common.notify('Channel initialized successfully')
            return True
        else:
            Common.log('channel failed', response_body, error=True)
            Common.notify('Channel initialization failed')
            return False
    else:
        Common.log('empty response', error=True)
        Common.notify('Channel initialization failed')
        return False
コード例 #3
0
 def set_timer(self):
     # 現在時刻
     now = time.time()
     if now > self.next_aired:
         xbmc.executebuiltin('Container.Refresh')
         Common.log('updateOnAir: xbmc.executebuiltin')
     else:
         # 遅延を設定
         delay = self.next_aired - now + 30
         if delay < 0:
             delay = 0
         # idを設定
         Common.write_file(Common.RESUME_FILE, '')
         id = os.path.getmtime(Common.RESUME_FILE)
         # スレッドを起動
         threading.Timer(delay, self.check_onair, args=[id]).start()
         Common.log('updateOnAir: threading.Timer.start: %d %f' % (id, delay))
コード例 #4
0
    elif action == 'deletetoken':
        name = args.get('name')
        token = Token().lookup(name)
        if name and token:
            Token().delete(name, token)
            # settings.xmlを更新
            Token().update_settings()
        # トークン一覧を表示
        xbmc.executebuiltin('Container.Update(%s?action=token,replace)' %
                            (sys.argv[0]))
    elif action == 'sendmessage':
        name = Common.GET('recipientname')
        message = Common.GET('message')
        # 送信データ
        values = {'action': 'send', 'name': name, 'message': message}
        xbmc.executebuiltin('RunPlugin(%s?%s)' %
                            (sys.argv[0], urlencode(values)))
    elif action == 'send':
        name = args.get('name', Common.GET('defaultname'))
        token = Token().lookup(name)
        message = args.get('message', '')
        # メッセージを送信
        if token and Token().send_message(token=token, message=message):
            # 送信に成功した場合は履歴に格納
            cache_dir = os.path.join(Common.CACHE_PATH, name)
            if not os.path.isdir(cache_dir):
                os.makedirs(cache_dir)
            label = datetime.datetime.now().strftime('%Y%m%d-%H%M%S')
            path = os.path.join(cache_dir, label)
            Common.write_file(path, message)