aboutsummaryrefslogtreecommitdiff
path: root/extractors/common.py
blob: db8f5c1997759a0b1240c4ffefb7bfa242617652 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import os
from pathlib import Path
from sh import youtube_dl
from utils import read_file, write_file


class Extractor():

    def __init__(self, reg, url):
        self.root = reg.group(1)
        self._albums = []
        self.root_path = self._root_path()
        self._update_cache(self.root)

    def _root_path(self):
        file_path = os.path.abspath(__file__)
        folder_path = Path(file_path).parent
        root_path = Path(folder_path).parent
        return root_path

    def _update_cache(self, url):
        urls_cache = []
        cache_file = Path(self.root_path, '.urls_cache.txt')
        urls_cache = read_file(cache_file)

        for url in urls_cache:
            if url.startswith(self.root):
                return
        write_file(cache_file, self.root)

    def _yt_wrapper(self, url, output):
        for line in youtube_dl(
                url, audio_format="mp3",
                add_metadata=True,
                o=output + self.filename_template,
                _iter=True):
            print(line.strip())

    def download_albums(self, output):
        for album in self._albums:
            print("Parsing " + album + "...")
            self._yt_wrapper(album, output)