Amazing-Python-Scripts
156 строк · 5.0 Кб
1import os
2
3data_folder = 'td_data'
4static_folder = 'td_static'
5html_file = 'data_view.html'
6data_dir_path = os.path.dirname(os.path.abspath(__file__))
7
8
9class DataView():
10
11def __init__(self, data_folder, html_file):
12self.data_folder = data_folder
13self.html_file = html_file
14
15self.all_tags = set()
16self.objects = {
17'.mp4': [],
18'.mp3': [],
19'.pdf': [],
20'other': []
21}
22
23self.allowed_data_types = ['.mp4', '.mp3', '.pdf']
24self.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}
40self.list_of_files = {}
41
42def find_all_files(self):
43for (dirpath, dirnames, filenames) in os.walk(data_folder):
44for filename in filenames:
45self.list_of_files[filename] = os.sep.join([dirpath, filename])
46
47def write_first_html(self, src_tags):
48with open(self.html_file, 'w') as h_file:
49h_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
84def write_middle_html(self, object):
85ext = object['ext']
86src_info = object['src_info']
87src_name = object['src_name']
88src_tags = object['src_tags']
89
90with open(self.html_file, 'a') as h_file:
91h_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
101def write_end_html(self):
102with open(self.html_file, 'a') as h_file:
103h_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
118def work_on_files(self):
119for file_name in self.list_of_files:
120file_path = self.list_of_files[file_name]
121name, ext = os.path.splitext(file_name)
122
123tags = file_path.split('/')
124tags.remove(self.data_folder)
125tags.remove(file_name)
126
127self.all_tags.update(tags)
128
129src_tags = '\n'.join(
130'<span class="_td-te2">#{}</span>'.format(t) for t in tags)
131
132if ext in self.allowed_data_types:
133object = {
134'ext': ext,
135'src_info': file_path,
136'src_name': name,
137'src_tags': src_tags,
138}
139
140self.objects[ext].append(object)
141
142src_tags = '\n'.join('<div class="_td-te">#{}</div>'.format(t)
143for t in list(self.all_tags))
144
145self.write_first_html(src_tags)
146
147for ext, object_list in self.objects.items():
148for object_dict in object_list:
149self.write_middle_html(object_dict)
150
151self.write_end_html()
152
153
154data_obj = DataView(data_folder, html_file)
155data_obj.find_all_files()
156data_obj.work_on_files()
157