| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 | import re
from praw import Reddit
from importer.providers import GReddit, Gfycat, IReddit, Imgur, RedGifs, VReddit, YoutubeDlProviderBase, \
    RawImageProviderBase, Youtube
class Downloader:
    providers = [GReddit, Gfycat, IReddit, Imgur, RedGifs, VReddit, Youtube, RawImageProviderBase,
                 YoutubeDlProviderBase]
    def __init__(self, url: str, reddit: Reddit):
        self.Provider = next(filter(lambda x: re.match(x.regex, url), self.providers))
        self.url = url
        self.reddit = reddit
    def download(self):
        with self.Provider(url=self.url, reddit=self.reddit) as provider:
            provider.download()
            self.paths = provider.paths
            self.downloaded = provider.downloaded
 |