-
Notifications
You must be signed in to change notification settings - Fork 0
/
mpcplaylist.py
107 lines (106 loc) · 4.02 KB
/
mpcplaylist.py
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
import os
from os import path
from os.path import join, getsize
# import sys
# import glob
# import shutil
# import zipfile
# import re
# import requests
# ===========================================================================
# Notes: This is a learning project for me. It will not be the optimal way to
# do thing, and it might not be optimized in any way, but it should be a
# semi-functional project when done. I might re-visit it in the future to
# optimize and include new skills.
#
# Goal: To create video-playlist for each directory and include subtitles.
#
# Approach: Walk directory structure starting from working directory.
# for each directory check for video files. Sort them and add to playlist.
# for each added video file also check for matching subtitle, and add if exist.
# ===========================================================================
Files_Audio = ['.aac', '.mp3', '.ogg', '.flac', '.wav']
Files_Video = ['.mp4', '.mvk', '.mpg', '.mpeg', '.avi']
Files_Subtitle = ['.vtt', '.sub', '.ass', '.srt']
# ===========================================================================
# Create this:
# MPCPLAYLIST
# 1,type,0
# 1,filename,001 Introduction to If Else.mp4
# 1,subtitle,001 Introduction to If Else.vtt
# 2,type,0
# 2,filename,002 IF Else - Some Examples.mp4
# 2,subtitle,002 IF Else - Some Examples.vtt
# ===========================================================================
wd = 'C:\\tmp'
os.chdir(wd)
cwd = os.getcwd()
print(cwd)
if wd != cwd: # Exit if not in the correct directory
exit(404)
# ===========================================================================
overwrite = 0 # set true if you want to replace existing playlists
workdir = []
print('[OK]')
print('\n')
print('Found the following directories:')
print('=' * 78)
for root, dirs, files in os.walk(wd, topdown=True):
for name in files:
pass
# print(os.path.join(root, name))
for name in dirs:
d = os.path.join(root, name)
workdir.append(d)
print(d)
print('=' * 78)
print('\n')
for folder in workdir:
filelist = []
print('-' * 78)
print(folder)
print('-' * 78)
wf = os.listdir(folder)
wf.sort()
total_files = len(wf)
print("Files found:", total_files)
for f in wf:
if os.path.isdir(os.path.join(folder, f)):
pass # os.path.join(keyfiles_path, '*.key'
elif os.path.isfile(os.path.join(folder, f)):
# (dir_name, filename) = os.path.split(f)
(n, x) = os.path.splitext(f)
x.lower()
if x in Files_Video:
filelist.append(f)
print(f)
if len(filelist) > 0:
print(filelist)
pln = os.path.join(folder, '_playlist.mpcpl')
print(pln)
if os.path.isfile(pln) and overwrite == 0:
print('_playlist already exist!')
elif not path.isfile(pln) or overwrite == 1:
print('*** overwrite! ***')
try: # ###[ save list as text playlist ]####################################
with open(pln, 'wt', encoding='utf-8', newline='\n') as pw:
pw.write('MPCPLAYLIST\n')
for count, line in enumerate(filelist):
(subN, lineX) = os.path.splitext(line)
count += 1
pva = str(count) + ',type,0\n'
pw.write(pva)
pva = str(count) + ',filename,' + line + '\n'
pw.write(pva)
for xtx in Files_Subtitle:
testname = subN + xtx
sub = os.path.join(folder, testname)
if os.path.isfile(sub):
print('Found file: ' + sub)
pva = str(count) + ',subtitle,' + testname + '\n'
pw.write(pva)
except Exception as err:
print('There was some error in the file operations.')
print(err)
print(type(err).__name__)
# exit()