Exemple #1
0
        public MatchingThread Resolve(ChannelInfo channelInfo)
        {
            ushort networkId = channelInfo.NetworkId, serviceId = channelInfo.ServiceId;

            if (networkId == 0)
            {
                //録画ファイルなどではネットワークIDが分からないのでサービスIDだけで検索
                //BSとCSの間ではサービスIDが重複する可能性があるがほとんどないので割り切る
                foreach (ChannelEntry channel in channelDatabase.GetByServiceId(serviceId))
                {
                    MatchingThread ret = boardDatabase.GetMatchingThreadForChannel(channel);
                    if (ret != null)
                    {
                        return(ret);
                    }
                }
                return(null);
            }
            else
            {
                ChannelEntry channel = channelDatabase.GetByNetworkIdAndServiceId(networkId, serviceId);//channels.txtの登録チャンネルに解決
                if (channel == null)
                {
                    return(null);
                }
                return(boardDatabase.GetMatchingThreadForChannel(channel));
            }
        }
Exemple #2
0
 /// <summary>
 /// 対応する実況IDを探す 対応がなければ0を返す
 /// </summary>
 /// <param name="networkId">ネットワークID 不明なら0</param>
 /// <param name="serviceId">サービスID</param>
 public int Resolve(ushort networkId, ushort serviceId)
 {
     if (networkId == 0)
     {
         //録画ファイルではネットワークIDが分からないのでサービスIDだけで検索
         //ニコニコ実況に対応しているチャンネルで同じサービスIDのものはないはずなので普通はこれで大丈夫
         foreach (ChannelEntry channel in channelDatabase.GetByServiceId(serviceId))
         {
             int jkid = jkIdTable.GetJkId(channel);
             if (jkid != 0)
             {
                 return(jkid);
             }
         }
         return(0);
     }
     else
     {
         ChannelEntry channel = channelDatabase.GetByNetworkIdAndServiceId(networkId, serviceId);
         if (channel == null)
         {
             return(0);
         }
         return(jkIdTable.GetJkId(channel));
     }
 }
Exemple #3
0
        public MatchingThread Resolve(ChannelInfo channelInfo, bool ignoreMainThreadTitleKeywords)
        {
            MatchingThread getMatchingThread(ChannelEntry channel)
            {
                if (!ignoreMainThreadTitleKeywords)
                {
                    return(this.boardDatabase.GetMatchingThread(channel));
                }
                else
                {
                    ThreadMappingRuleEntry ruleEntry = this.boardDatabase.GetMatchingThreadMappingRuleEntry(channel);
                    if (ruleEntry == null)
                    {
                        return(null);
                    }
                    BoardEntry boardEntry = this.boardDatabase.GetBoardEntryById(ruleEntry.BoardId);
                    if (boardEntry == null)
                    {
                        return(null);
                    }
                    return(new MatchingThread(boardEntry.Title, boardEntry.Uri, ruleEntry.ThreadTitleKeywords));
                }
            }

            ushort networkId = channelInfo.NetworkId, serviceId = channelInfo.ServiceId;

            if (networkId == 0)
            {
                //録画ファイルなどではネットワークIDが分からないのでサービスIDだけで検索
                //BSとCSの間ではサービスIDが重複する可能性があるがほとんどないので割り切る
                foreach (ChannelEntry channel in channelDatabase.GetByServiceId(serviceId))
                {
                    MatchingThread ret = getMatchingThread(channel);
                    if (ret != null)
                    {
                        return(ret);
                    }
                }
                return(null);
            }
            else
            {
                ChannelEntry channel = channelDatabase.GetByNetworkIdAndServiceId(networkId, serviceId);//channels.txtの登録チャンネルに解決
                if (channel == null)
                {
                    return(null);
                }
                return(getMatchingThread(channel));
            }
        }