Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
The simple movie scanner for Plex Nine
import re, os, os.path
import Media, VideoFiles, Stack
from mp4file import mp4file, atomsearch
# Look for episodes.
def Scan(path, files, mediaList, subdirs):
# Scan for video files.
VideoFiles.Scan(path, files, mediaList, subdirs)
anonep = dict()
for i in files:
done = False
file = os.path.basename(i)
(file, ext) = os.path.splitext(file)
if ext.lower() in ['.mp4', '.m4v', '.mov']:
m4season = m4ep = m4year = 0
m4show = title = ''
mp4fileTags = mp4file.Mp4File(i)
# Show.
try: m4show = find_data(mp4fileTags, 'moov/udta/meta/ilst/album').encode('utf-8')
except: m4show = 'other'
# Season.
m4season = 1
# Episode.
m4ep = None
# tracknum (can be 101)
m4ep = int(find_data(mp4fileTags, 'moov/udta/meta/ilst/tracknum'))
if anonep.has_key(m4show):
m4ep = anonep[m4show] + 1
m4ep = 101
anonep[m4show] = m4ep
# Title.
try: title = find_data(mp4fileTags, 'moov/udta/meta/ilst/title').encode('utf-8')
except: pass
# Year.
m4year = 1999
# If we have all the data we need, add it.
if len(m4show) > 0:
tv_show = Media.Episode(m4show, m4season, m4ep, title, m4year)
# Stack the results.
Stack.Scan(path, files, mediaList, subdirs)
def find_data(atom, name):
child = atomsearch.find_path(atom, name)
data_atom = child.find('data')
if data_atom and 'data' in data_atom.attrs:
return data_atom.attrs['data']
import sys
if __name__ == '__main__':
print "Hello, world!"
path = sys.argv[1]
files = [os.path.join(path, file) for file in os.listdir(path)]
media = []
Scan(path[1:], files, media, [])
print "Media:", media
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment