def _get_setting(self, setting_id, value_for_none=None):
        """ Retrieves channel specific settings. Just to prevent us from importing AddonSettings in all channels.

        @param setting_id:
        @return:

        :param str setting_id:      the channels specific setting
        :param str value_for_none:  What value should we interpret as None?

        :return: The settings value from the Add-on using the Kodi settings API.
        :rtype: str

        """

        setting = AddonSettings.get_channel_setting(self, setting_id, value_for_none)
        return setting
    def __init__(self, channel_info):
        """Initialisation of the class.

        Arguments:
        channel_info: ChannelInfo - The channel info object to base this channel on.

        All class variables should be instantiated here and this method should not
        be overridden by any derived classes.

        """

        chn_class.Channel.__init__(self, channel_info)

        # ==== Actual channel setup STARTS here and should be overwritten from derived classes =====
        self.mainListUri = "#programs"
        self.programPageSize = 100
        self.videoPageSize = 100
        self.swfUrl = "http://player.dplay.se/4.0.6/swf/AkamaiAdvancedFlowplayerProvider_v3.8.swf"
        self.subtitleKey = "subtitles_{0}_srt".format(self.language)
        self.channelSlugs = ()
        self.liveUrl = None
        self.recentUrl = None
        self.primaryChannelId = None
        self.baseUrlApi = "disco-api.dplay.{0}".format(self.language)

        if self.channelCode == "tv5json":
            self.noImage = "tv5seimage.png"
            self.baseUrl = "http://www.dplay.se/api/v2/ajax"
            # No live stream: self.liveUrl = "https://secure.dplay.se/secure/api/v2/user/authorization/stream/132040"
            self.primaryChannelId = 21

        elif self.channelCode == "tv9json":
            self.noImage = "tv9seimage.png"
            self.baseUrl = "http://www.dplay.se/api/v2/ajax"
            # No live stream: self.liveUrl = "https://secure.dplay.se/secure/api/v2/user/authorization/stream/132043"
            self.primaryChannelId = 26

        elif self.channelCode == "tv11json":
            self.noImage = "dplayimage.png"
            self.baseUrl = "http://www.dplay.se/api/v2/ajax"
            # No live stream: self.liveUrl = "https://secure.dplay.se/secure/api/v2/user/authorization/stream/132039"
            self.primaryChannelId = 22

        elif self.channelCode == "dplayse":
            self.noImage = "dplayimage.png"
            self.baseUrl = "http://www.dplay.se/api/v2/ajax"

        elif self.channelCode == "dplayno":
            self.noImage = "dplayimage.png"
            self.baseUrl = "http://www.dplay.no/api/v2/ajax"

        elif self.channelCode == "tlcnorge":
            self.noImage = "dplayimage.png"
            self.baseUrl = "http://www.dplay.no/api/v2/ajax"
            self.primaryChannelId = 15

        elif self.channelCode == "tvnorge":
            self.noImage = "dplayimage.png"
            self.baseUrl = "http://www.dplay.no/api/v2/ajax"
            self.primaryChannelId = 28

        elif self.channelCode == "femnorge":
            self.noImage = "dplayimage.png"
            self.baseUrl = "http://www.dplay.no/api/v2/ajax"
            self.primaryChannelId = 29

        elif self.channelCode == "maxnorge":
            self.noImage = "dplayimage.png"
            self.baseUrl = "http://www.dplay.no/api/v2/ajax"
            self.primaryChannelId = 30

        elif self.channelCode == "voxnorge":
            self.noImage = "dplayimage.png"
            self.baseUrl = "http://www.dplay.no/api/v2/ajax"
            self.primaryChannelId = 31

        elif self.channelCode == "animalplanetnorge":
            self.noImage = "dplayimage.png"
            self.baseUrl = "http://www.dplay.no/api/v2/ajax"
            self.primaryChannelId = 35

        elif self.channelCode == "discoverynorge":
            self.noImage = "dplayimage.png"
            self.baseUrl = "http://www.dplay.no/api/v2/ajax"
            self.primaryChannelId = 45

        elif self.channelCode == "discoverysciencenorge":
            self.noImage = "dplayimage.png"
            self.baseUrl = "http://www.dplay.no/api/v2/ajax"
            self.primaryChannelId = 71

        elif self.channelCode == "discoveryworldnorge":
            self.noImage = "dplayimage.png"
            self.baseUrl = "http://www.dplay.no/api/v2/ajax"
            self.primaryChannelId = 72

        elif self.channelCode == "investigationdiscoverynorge":
            self.noImage = "dplayimage.png"
            self.baseUrl = "http://www.dplay.no/api/v2/ajax"
            self.primaryChannelId = 73

        elif self.channelCode == "dplaydk":
            self.noImage = "dplayimage.png"
            self.baseUrl = "http://www.dplay.dk/api/v2/ajax"

        else:
            raise NotImplementedError("ChannelCode %s is not implemented" %
                                      (self.channelCode, ))

        if self.primaryChannelId:
            self.recentUrl = "https://{0}/content/videos?decorators=viewingHistory&" \
                             "include=images%2CprimaryChannel%2Cshow&" \
                             "filter%5BvideoType%5D=EPISODE&" \
                             "filter%5BprimaryChannel.id%5D={1}&" \
                             "page%5Bsize%5D={2}&" \
                             "sort=-publishStart"\
                .format(self.baseUrlApi, self.primaryChannelId, self.videoPageSize)

        #===========================================================================================
        # THIS CHANNEL DOES NOT SEEM TO WORK WITH PROXIES VERY WELL!
        #===========================================================================================
        self._add_data_parser("#programs", preprocessor=self.load_programs)
        # self._add_data_parser("https://secure.dplay.\w+/secure/api/v2/user/authorization/stream/",
        #                     matchType=ParserData.MatchRegex,
        #                     updater=self.update_channel_item)

        # Recent
        self._add_data_parser(
            "/content/videos?decorators=viewingHistory&"
            "include=images%2CprimaryChannel%2Cshow&filter%5BvideoType%5D=EPISODE&"
            "filter%5BprimaryChannel.id%5D=",
            name="Recent video items",
            json=True,
            preprocessor=self.__get_images_from_meta_data,
            match_type=ParserData.MatchContains,
            parser=[
                "data",
            ],
            creator=self.create_video_item_with_show_title)

        self._add_data_parser(
            "/content/videos?decorators=viewingHistory&"
            "include=images%2CprimaryChannel%2Cshow&filter%5BvideoType%5D=EPISODE&"
            "filter%5BprimaryChannel.id%5D=",
            name="Recent more pages",
            json=True,
            preprocessor=self.__get_images_from_meta_data,
            match_type=ParserData.MatchContains,
            parser=[
                "data",
            ],
            creator=self.create_video_item)

        # Search
        self._add_data_parser(r"http.+content/shows\?.+query=.+",
                              match_type=ParserData.MatchRegex,
                              name="Search shows",
                              json=True,
                              preprocessor=self.__get_images_from_meta_data,
                              parser=[
                                  "data",
                              ],
                              creator=self.create_program_item)

        self._add_data_parser(r"http.+content/videos\?.+query=.+",
                              match_type=ParserData.MatchRegex,
                              name="Search videos",
                              json=True,
                              preprocessor=self.__get_images_from_meta_data,
                              parser=[
                                  "data",
                              ],
                              creator=self.create_video_item_with_show_title)

        self._add_data_parser(r"http.+content/videos\?.+query=.+",
                              match_type=ParserData.MatchRegex,
                              name="Search Pages",
                              json=True,
                              parser=[
                                  "meta",
                              ],
                              creator=self.create_page_item)

        # Others
        self._add_data_parser("*",
                              json=True,
                              preprocessor=self.__get_images_from_meta_data,
                              parser=[
                                  "data",
                              ],
                              creator=self.create_video_item,
                              updater=self.update_video_item)

        self._add_data_parser("*",
                              json=True,
                              parser=[
                                  "meta",
                              ],
                              creator=self.create_page_item)

        #===========================================================================================
        # non standard items
        api_cookie = UriHandler.get_cookie("st", self.baseUrlApi)
        api_cookie_set = AddonSettings.get_channel_setting(
            self, "api_cookie_set", store=LOCAL) or 0
        # The cookie is invalid earler then its expire date. Let's limit it at 30 days
        if time.time() - api_cookie_set > 30 * 24 * 3600:
            Logger.debug("Resetting api_cookie for %s", self)
            api_cookie = None

        if not api_cookie:
            guid = uuid.uuid4()
            guid = str(guid).replace("-", "")
            # https://disco-api.dplay.se/token?realm=dplayse&deviceId
            # =aa9ef0ed760df76d184b262d739299a75ccae7b67eec923fe3fcd861f97bcc7f&shortlived=true
            url = "https://{0}/token?realm=dplay{1}&deviceId={2}&shortlived=true"\
                .format(self.baseUrlApi, self.language, guid)
            JsonHelper(UriHandler.open(url, proxy=self.proxy))
            # noinspection PyTypeChecker
            AddonSettings.set_channel_setting(self,
                                              "api_cookie_set",
                                              time.time(),
                                              store=LOCAL)

        self.imageLookup = {}
        self.showLookup = {}
        self.__REQUIRES_LOGIN = "******"
        self.__now = datetime.datetime.utcnow()
        self.__has_premium = False

        #===========================================================================================
        # Test cases:
        #  Arga snickaren : Has clips

        # ====================================== Actual channel setup STOPS here ===================
        return