Amazing-Python-Scripts

Форк
0
156 строк · 5.0 Кб
1
import os
2

3
data_folder = 'td_data'
4
static_folder = 'td_static'
5
html_file = 'data_view.html'
6
data_dir_path = os.path.dirname(os.path.abspath(__file__))
7

8

9
class DataView():
10

11
    def __init__(self, data_folder, html_file):
12
        self.data_folder = data_folder
13
        self.html_file = html_file
14

15
        self.all_tags = set()
16
        self.objects = {
17
            '.mp4': [],
18
            '.mp3': [],
19
            '.pdf': [],
20
            'other': []
21
        }
22

23
        self.allowed_data_types = ['.mp4', '.mp3', '.pdf']
24
        self.data_types = {
25
            '.mp4': """
26
                    <video class="td-video" controls>
27
                        <source src="{src_info}" type="video/mp4">
28
                    </video>
29
                    """,
30
            '.mp3': """
31
                    <audio class="td-audio" controls>
32
                        <source src="{src_info}" type="audio/ogg">
33
                    </audio>
34
                    """,
35
            ".pdf": """
36
                    <a class="td-pdf" href="file://""" + data_dir_path + """/{src_info}" target="_blank" >OPEN</a>
37
                    """
38

39
        }
40
        self.list_of_files = {}
41

42
    def find_all_files(self):
43
        for (dirpath, dirnames, filenames) in os.walk(data_folder):
44
            for filename in filenames:
45
                self.list_of_files[filename] = os.sep.join([dirpath, filename])
46

47
    def write_first_html(self, src_tags):
48
        with open(self.html_file, 'w') as h_file:
49
            h_file.write(
50
                """
51
                <!DOCTYPE html>
52
                <html lang="en">
53
                <head>
54
                    <meta charset="UTF-8">
55
                    <meta http-equiv="X-UA-Compatible" content="IE=edge">
56
                    <meta name="viewport" content="width=device-width, initial-scale=1.0">
57

58
                    <!-- ALL THE OUTSIDE CSS -->
59

60
                    <!-- ALL CUSTOM CSS -->
61
                    <link rel="stylesheet" href=" """ + static_folder + """/css/main/data_view.css">
62

63
                    <title>Data View</title>
64

65
                </head>
66
                <body>
67
                <div class="_td-s">
68
                    <div id="search">
69
                        <input id="td-input" type="text" placeholder="Find data...">
70
                    </div>
71
                </div>
72
                <div class="td-main">
73
                    <div class="td-right">
74
                        <div class="_td-t">
75
                            <div class="_td-te tag-active">#all</div>
76
                            {src_tags}
77
                        </div>
78
                    </div>
79
                    <div class="td-left">
80
                        <div class="_td-c">
81
                """.format(src_tags=src_tags)
82
            )
83

84
    def write_middle_html(self, object):
85
        ext = object['ext']
86
        src_info = object['src_info']
87
        src_name = object['src_name']
88
        src_tags = object['src_tags']
89

90
        with open(self.html_file, 'a') as h_file:
91
            h_file.write(
92
                """
93
                <div class="td-element">
94
                    {src_info}
95
                    <div class="_tde-info">{src_name}</div>
96
                    <div class="_tde-tags">{src_tags}</div>
97
                </div>
98
                """.format(src_info=self.data_types[ext].format(src_info=src_info), src_name=src_name, src_tags=src_tags)
99
            )
100

101
    def write_end_html(self):
102
        with open(self.html_file, 'a') as h_file:
103
            h_file.write(
104
                """
105
                        </div>
106
                    </div>
107
                </div>
108
                <!-- ALL OUTSIDE SCRIPTS -->
109
                <script src=" """ + static_folder + """/js/outside/jquery-3.6.1.min.js"></script>
110

111
                <!-- ALL MAIN SCRIPTS-->
112
                <script src=" """ + static_folder + """/js/main/data_view.js"></script>
113
                </body>
114
                </html>
115
                """
116
            )
117

118
    def work_on_files(self):
119
        for file_name in self.list_of_files:
120
            file_path = self.list_of_files[file_name]
121
            name, ext = os.path.splitext(file_name)
122

123
            tags = file_path.split('/')
124
            tags.remove(self.data_folder)
125
            tags.remove(file_name)
126

127
            self.all_tags.update(tags)
128

129
            src_tags = '\n'.join(
130
                '<span class="_td-te2">#{}</span>'.format(t) for t in tags)
131

132
            if ext in self.allowed_data_types:
133
                object = {
134
                    'ext': ext,
135
                    'src_info': file_path,
136
                    'src_name': name,
137
                    'src_tags': src_tags,
138
                }
139

140
                self.objects[ext].append(object)
141

142
        src_tags = '\n'.join('<div class="_td-te">#{}</div>'.format(t)
143
                             for t in list(self.all_tags))
144

145
        self.write_first_html(src_tags)
146

147
        for ext, object_list in self.objects.items():
148
            for object_dict in object_list:
149
                self.write_middle_html(object_dict)
150

151
        self.write_end_html()
152

153

154
data_obj = DataView(data_folder, html_file)
155
data_obj.find_all_files()
156
data_obj.work_on_files()
157

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.