    def get_download_url(self) -> Dict[int, str]:
        """Get the download url, and return a dict of episode and the url.
        Download url also can be magnet link.
        For example:

        ... code-block:: python

            {
                1: 'https://example.com/Bangumi/1/1.mp4'
                2: 'https://example.com/Bangumi/1/2.mp4'
                3: 'https://example.com/Bangumi/1/3.mp4'
            }

        The keys `1`, `2`, `3` is the episode, the value is the url of bangumi.
        :return: dict
        """
        if self.source is not None:
            try:
                source = DATA_SOURCE_MAP[self.source]()
            except KeyError:
                raise ValueError(
                    "Script data source is invalid, usable sources: {}".format(", ".join(DATA_SOURCE_MAP.keys()))
                )
            ret = {}
            data = source.fetch_episode_of_bangumi(**self._data)
            for i in data:
                if int(i.episode) not in data:
                    ret[int(i.episode)] = i.download
            return ret
        else:
            return {}
Get the download url, and return a dict of episode and the url.
Download url also can be magnet link.
For example:

... code-block:: python

{
1: 'https://example.com/Bangumi/1/1.mp4'
2: 'https://example.com/Bangumi/1/2.mp4'
3: 'https://example.com/Bangumi/1/3.mp4'
}

The keys `1`, `2`, `3` is the episode, the value is the url of bangumi.
:return: dict
bgmi/script.py