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)); } }
/// <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)); } }
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)); } }