Premier commit
This commit is contained in:
commit
3062472c97
5 changed files with 816 additions and 0 deletions
128
file.py
Normal file
128
file.py
Normal file
|
@ -0,0 +1,128 @@
|
|||
import posixpath
|
||||
|
||||
class File:
|
||||
"""
|
||||
Décrit une référence de fichier dans le disque
|
||||
"""
|
||||
def __init__(self, path, name,api_id=None):
|
||||
self.path = path
|
||||
self.name = name
|
||||
self.info_lang = []
|
||||
self.info_quality = []
|
||||
self.info_subtitles = []
|
||||
self.year = self._find_year()
|
||||
self.title = self._get_title()
|
||||
self.simple_name = self.title.replace(' ', '')
|
||||
self.api_id = api_id
|
||||
|
||||
def get_ext(self):
|
||||
_, ext = posixpath.splitext(self.name)
|
||||
return ext
|
||||
|
||||
def without_ext(self):
|
||||
_, ext = posixpath.splitext(self.name)
|
||||
return ext
|
||||
|
||||
def _get_title(self):
|
||||
fname, ext = posixpath.splitext(self.name)
|
||||
# 1) séparateurs
|
||||
fname = fname.replace('.', ' ')
|
||||
fname = fname.replace('_', ' ')
|
||||
fname = fname.replace('-', ' ')
|
||||
# 2.1) marqueurs de qualitée
|
||||
for m in ['HDRiP', 'HDRip', 'HDTS', 'HD', 'DVDRIP', 'DvDRIP', '720p', '1080p', 'DVDSCR', 'BluRay', 'BrRip', 'BRRip']:
|
||||
if m in fname:
|
||||
self.info_quality.append(m)
|
||||
fname = fname.replace(m, '')
|
||||
# 2.2) marqueur de sous-titres
|
||||
for m in ['SRT FR', 'STFR', 'STEN']:
|
||||
if m in fname:
|
||||
self.info_subtitles.append(m)
|
||||
fname = fname.replace(m, '')
|
||||
# 2.3) marqueurs de langues & sous-titres
|
||||
for m in ['VOSTFR', 'VOST-FR', 'VOSTMulti']:
|
||||
if m in fname:
|
||||
self.info_lang.append(m)
|
||||
self.info_subtitles.append(m)
|
||||
fname = fname.replace(m, '')
|
||||
# 2.4) marqueurs de langues
|
||||
for m in ['VO', 'VF','FRENCH', 'FR', 'ENG', '[Eng]', 'VJAP']:
|
||||
if m in fname:
|
||||
self.info_lang.append(m)
|
||||
fname = fname.replace(m, '')
|
||||
# 2.5) marqueurs autres
|
||||
for m in ['UNCENSORED', 'X264', 'x264', 'X265', '[www Cpasbien com]', '[www newpct1 com]', 'YIFY', 'JYK']:
|
||||
fname = fname.replace(m, '')
|
||||
# 3) minuscule
|
||||
fname = fname.lower()
|
||||
# 4) année
|
||||
if self.year is not None:
|
||||
fname = fname.replace('['+str(self.year)+']', '')
|
||||
fname = fname.replace('[ '+str(self.year)+' ]', '')
|
||||
fname = fname.replace('['+str(self.year)+' ]', '')
|
||||
fname = fname.replace('[ '+str(self.year)+']', '')
|
||||
# 5) espaces en bout et centraux
|
||||
fname = fname.lstrip().rstrip()
|
||||
while ' ' in fname:
|
||||
fname = fname.replace(' ', ' ')
|
||||
return fname
|
||||
|
||||
def _find_year(self):
|
||||
fname, ext = posixpath.splitext(self.name)
|
||||
fname = fname.replace(' ', '')
|
||||
for i in range(1800, 2100):
|
||||
if '['+str(i)+']' in fname:
|
||||
return i
|
||||
return None
|
||||
|
||||
def filename_same(self, other):
|
||||
# Compare les noms de fichiers de self et de other
|
||||
# En supprimant les espaces, la date, et les marques de qualitée
|
||||
return self.simple_name == other.simple_name
|
||||
|
||||
def additional_info(self):
|
||||
"""
|
||||
Info supplémentaires sur la langue, la qualitée et les sous-titres du fichier
|
||||
"""
|
||||
info = {}
|
||||
if len(self.info_lang) > 0:
|
||||
for m in ['VOSTFR', 'VOST-FR', 'VOSTMulti', 'VO']:
|
||||
if m in self.info_lang:
|
||||
info['lang'] = 'VO'
|
||||
for m in ['ENG', '[Eng]']:
|
||||
pass # notation?
|
||||
for m in ['VJAP']:
|
||||
pass # notation?
|
||||
for m in ['VF','FRENCH', 'FR']:
|
||||
if m in self.info_lang:
|
||||
info['lang'] = 'FR'
|
||||
if len(self.info_quality) > 0:
|
||||
for m in ['HDRiP', 'HDTS', 'HD', '720p', 'BluRay']:
|
||||
if m in self.info_quality:
|
||||
info['quality'] = 'HD'
|
||||
for m in ['DVDRIP', 'DVDSCR']:
|
||||
pass # qualité?
|
||||
for m in ['1080p']:
|
||||
if m in self.info_quality:
|
||||
info['quality'] = 'FULL HD'
|
||||
if len(self.info_subtitles) > 0:
|
||||
for m in ['SRT FR', 'STFR', 'VOSTFR', 'VOST-FR']:
|
||||
if m in self.info_subtitles:
|
||||
info['subtitles'] = 'FR'
|
||||
for m in ['STEN']:
|
||||
if m in self.info_subtitles:
|
||||
info['subtitles'] = 'EN'
|
||||
return info
|
||||
|
||||
def __eq__(self, other):
|
||||
return (self.path, self.name) == (other.path, other.name)
|
||||
|
||||
def __hash__(self):
|
||||
return hash((self.path, self.name))
|
||||
|
||||
def __str__(self):
|
||||
return str(self.path+'/'+self.name+' year:['+str(self.year)+']')
|
||||
|
||||
def __repr__(self):
|
||||
return str(self)
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue