def read_file_data(file_path):
    """Retrieve file data"""
    import os
    import sys
    import disklibrary
    from lxml import etree
    read_file = disklibrary.file_first(file_path.file_path, 'nfo')
    if read_file is None:
        return

    read_file = open(read_file)
    read_content = read_file.readlines()
    read_file.close()
    read_content = read_content[:-1]
    read_content = ''.join(read_content)
    read_file = etree.fromstring(read_content)
    movie_title = read_file.find('title').text
    movie_title = disklibrary.path_sane_name(movie_title)
    movie_year = read_file.find('year').text
    sort_name = read_file.find('sorttitle').text
    sort_name = disklibrary.path_sane_name(sort_name)
    sort_name = '%s (%s)' % (sort_name, movie_year)
    movie_file = '%s (%s)' % (movie_title, movie_year)
    movie_file = '%s/%s%s' % (file_path.file_path.replace(
        file_path.file_title, sort_name), movie_file, file_path.file_extension)
    movie_file = disklibrary.file_split(movie_file)
    return movie_file
Ejemplo n.º 2
0
def main():
    """Main script interface for Movie Preparation Script"""
    import os
    import sys
    import argparse
    import disklibrary
    print 'Preparing movie'
    parser = argparse.ArgumentParser(
        description='Prepares movie for internal library addition')
    parser.add_argument('folder', metavar='folder', type=str,
                        help='Folder to be checked')
    args = parser.parse_args()
    source_folder = args.folder
    print 'Checking folder %s' % source_folder
    if not os.path.exists(source_folder):
        print 'Folder not found'
        sys.exit(0)

    source_file = disklibrary.file_first(source_folder, 'mkv')
    source_file = disklibrary.file_split(source_file)
    if source_file is None:
        print 'No valid file found for processing'
        sys.exit(0)

    if source_file.file_extension == '.mkv':
        source_file = process_mkv(source_file)

    print 'Completed processing %s' % source_file.file_title
    sys.exit(0)
def sorted_folder(file_path):
    """Returns the name of the sorted folder"""
    import disklibrary
    from dateutil import parser
    from lxml import etree
    read_file = disklibrary.file_first(file_path, 'nfo')
    if read_file is None:
        return

    read_file = open(read_file)
    read_content = read_file.readlines()
    read_file.close()
    read_content = read_content[:-1]
    read_content = ''.join(read_content)
    read_file = etree.fromstring(read_content)
    movie_year = read_file.find('year').text
    sort_name = read_file.find('sorttitle').text
    sort_name = disklibrary.path_sane_name(sort_name)
    sort_name = '%s (%s)' % (sort_name, movie_year)
    return sort_name
def rename_movie(source_path):
    """Rename movie folder and content"""
    import os
    import disklibrary
    file_path = disklibrary.file_first(source_path, 'mkv')
    if file_path is None:
        print 'File not found or incorrect type'
        return 2

    file_path = disklibrary.file_split(file_path)
    rename_file = read_file_data(file_path)
    if not rename_file:
        print 'Required files missing'
        return 2

    file_list = os.listdir(file_path.file_path)
    for file_name in file_list:
        if file_name == '.DS_Store':
            continue

        file_name = disklibrary.file_path(file_path.file_path, file_name)
        file_name = disklibrary.file_split(file_name)
        file_rename = file_name.file_title.replace(file_path.file_title,
                                                   rename_file.file_title)
        file_rename += file_name.file_extension
        file_rename = disklibrary.file_path(file_name.file_path, file_rename)
        file_rename = disklibrary.file_split(file_rename)
        if file_name.file_name != file_rename.file_name:
            print 'Renaming file %s' % file_name.file_name
            os.rename(file_name.full_path, file_rename.full_path)

    if os.path.isdir(rename_file.file_path):
        return 0

    print 'Renaming folder %s to %s' % (file_path.file_path,
                                        rename_file.file_path)
    if os.path.isdir(
            file_path.file_path) and not os.path.isdir(rename_file.file_path):
        os.rename(file_path.file_path, rename_file.file_path)

    return 0
Ejemplo n.º 5
0
def main():
    """Missing movie info finder"""
    import os
    import sys
    import argparse
    import disklibrary
    print 'Starting Movie Info Missing Finder'
    parser = argparse.ArgumentParser(
        description='Checks for missing movie information')
    parser.add_argument('folder', metavar='folder',
                        type=str, help='Folder to be checked')
    args = parser.parse_args()
    source_folder = args.folder
    if source_folder is None or not os.path.isdir(source_folder):
        print 'Folder %s not found or valid' % source_folder
        sys.exit(2)

    content_list = os.listdir(source_folder)
    content_count = len(content_list)
    if content_list is None or content_count == 0:
        print 'No files or folders found'
        sys.exit(2)

    os.nice(10)
    item_count = 0
    for item in content_list:
        item_folder = os.path.join(source_folder, item)
        if not os.path.isdir(item_folder):
            continue

        try:
            m4v_file = disklibrary.file_first(item_folder, 'm4v')
            if m4v_file is None:
                print '%s Failed' % item_folder
                continue

            m4v_file = disklibrary.file_split(m4v_file)

            nfo_found = False
            nfo_file = disklibrary.file_first(item_folder, 'nfo')
            if nfo_file:
                nfo_file = disklibrary.file_split(nfo_file)
                nfo_found = m4v_file.file_title == nfo_file.file_title

            cover_found = False
            cover_file = '%s/%s-cover.jpg' % (m4v_file.file_path,
                                              m4v_file.file_title)
            cover_file = disklibrary.file_check(cover_file, 'jpg')
            if cover_file:
                cover_found = True

            poster_found = False
            poster_file = '%s/%s-fanart.jpg' % (
                m4v_file.file_path, m4v_file.file_title)
            poster_file = disklibrary.file_check(poster_file, 'jpg')
            if poster_file:
                poster_found = True

            if not nfo_found or not cover_file or not poster_file:
                if len(m4v_file.file_title) > 70:
                    print '{0:70}'.format(m4v_file.file_title[:70]),
                else:
                    print '{0:70}'.format(m4v_file.file_title),

                print('NFO:'),
                if nfo_found:
                    print '{0:15}'.format('Found'),
                else:
                    print '{0:15}'.format('Not found'),

                print('\tCover:'),
                if cover_found:
                    print '{0:15}'.format('Found'),
                else:
                    print '{0:15}'.format('Not found'),

                print('\tPoster:'),
                if poster_found:
                    print '{0:15}'.format('Found')
                else:
                    print '{0:15}'.format('Not found')

                item_count += 1

        except Exception as exception:
            print '%s error: %s' % (item_folder, exception.message)
            break

    print 'Missing NFO files: %d' % item_count
    sys.exit(0)
def main():
    """Entry point for movie organiser script"""
    import os
    import sys
    import argparse
    import disklibrary
    print 'Starting Movie Organiser'
    parser = argparse.ArgumentParser(
        description="Organise all movies found inside a folder")
    parser.add_argument('folder',
                        metavar='folder',
                        type=str,
                        help='Folder to be checked')
    args = parser.parse_args()
    source_folder = args.folder
    if source_folder is None or not os.path.isdir(source_folder):
        print 'Folder %s not found or valid' % source_folder
        sys.exit(2)

    content_list = os.listdir(source_folder)
    content_count = len(content_list)
    if content_list is None or content_count == 0:
        print 'No files or folders found'
        sys.exit(2)

    os.nice(10)
    print 'Processing folder %s' % source_folder
    item_count = 0
    total_count = 0
    for item in content_list:
        item_folder = os.path.join(source_folder, item)
        if not os.path.isdir(item_folder):
            continue

        total_count += 1
        if len(item) > 70:
            print '{0:70}'.format(item[:70]),
        else:
            print '{0:70}'.format(item),

        print 'MKV:',
        movie_file = disklibrary.file_first(item_folder, 'mkv')
        if movie_file is None:
            print '{0:15}'.format('Not found'),
            continue

        print '{0:15}'.format('Found'),
        print '\tNFO:',
        nfo_file = disklibrary.file_first(item_folder, 'nfo')
        if nfo_file is not None:
            print '{0:15}'.format('Found')
            continue

        print '{0:15}'.format('Not found'),
        item_count += 1
        print '\tFile:',
        print '{0:10}'.format(item_count),
        movie_file = os.path.join(item_folder, movie_file)
        print '\tTMDB:',
        output = movie_update(movie_file)
        if output is not None:
            print '%s error:\n%s' % (item, output)
            sys.exit(2)

        print '{0:15}'.format('Complete'),
        print '\tNFO:',
        output = movie_nfo_create(movie_file)
        if output is not None:
            print '%s error:\n%s' % (item, output)
            sys.exit(2)

        print '{0:10}'.format('Complete'),
        print '\tRename:',
        output = movie_rename(movie_file)
        if output is not None:
            print '%s error:\n%s' % (item, output)
            sys.exit(2)

        print '{0:15}'.format('Complete')

    sys.exit(0)