ユーザーのビデオ ファイルをスキャンし、ファイル名から識別しようとするビデオ プレーヤーを開発しています。ビデオが映画の場合は、その名前とビデオの品質を取得したいと思います。テレビ番組の場合は、番組の名前、シーズン番号、エピソード番号、およびビデオの品質を取得したいと思います。
ファイル名の例をいくつかググって、情報を取得しようとする簡単なスクリプトを作成しましたが、品質の前にエピソードの名前がある場合、ファイルに「PROPER」のようなタグが付いている場合、またはユーザーが品質よりも「BluRay」のようなビデオのソースを置いています。
正規表現に詳しい人が助けてくれれば、本当にありがたいです。
ありがとう!
import re
names = [
"The.Newsroom.2012.S02E06.720p.HDTV.x264-KILLERS.mkv",
"Breaking.Bad.S05E10.Buried.HDTV.XviD-AFG.avi",
"Breaking.Bad.S05E10.Buried.720p.HDTV.x264-AFG.mkv", #Incorrectly nonHD
"Dexter.S08E08.HDTV.XviD-AFG.avi",
"Dexter.S08E07.1080p.HDTV.x264-QCF.mkv",
"Dexter S08E07 720p HDTV x264-QCF.mkv",
"The.Great.Gatsby.2013.BluRay.1080p.DTS.x264-CHD.mkv", #Incorrectly nonHD
"The Forbidden Girl 2013 BRRIP Xvid AC3-BHRG.avi",
"Pain.&.Gain.2013.720p.BluRay.DD5.1.x264-HiDt.mkv",
"Band.of.Brothers.S01E02.Day.of.Days.DVDRip.XviD-AC3-BAGS.avi",
"Dexter.S08E06.PROPER.720p.HDTV.x264-IMMERSE.mkv", #Incorrectly nonHD
"Dexter S08E06 PROPER 720p HDTV x264-IMMERSE.mkv" #Incorrectly nonHD
]
for name in names:
tv = re.findall(r"(.*?)[ |.]S([\d+]{1,2})E([\d+]{1,2})[ |.]([\d+]{3,4}p|)", name) #FIXME: Get quality also after "PROPER/EPTITLE/.."
if len(tv)>0:
print("---------- TV ----------")
print("Show: "+tv[0][0].replace(".", " "))
print("Season: "+str(int(tv[0][1])))
print("Episode: "+str(int(tv[0][2])))
print("Quality: "+(tv[0][3] if len(tv[0][3])>0 else "nonHD"))
else:
movie = re.findall(r"(.*?[ |.][\d+]{4})[ |.]([\d+]{3,4}p|)", name) #FIXME: Get quality also after "BluRay/HDTV/HDDVD/.."
if len(movie)>0:
print("--------- MOVIE --------")
print("Title: "+movie[0][0].replace(".", " "))
print("Quality: "+(movie[0][1] if len(movie[0][1])>0 else "nonHD"))
else:
print("error")