# Path: seedbox/common/tools.py
# LOG = logging.getLogger(__name__)
# def verify_path(path_entry):
# def format_file_ext(filetypes):
# def make_opt_list(opts, group):
# 
# Path: seedbox/constants.py
# INIT = 'init'
# READY = 'ready'
# ACTIVE = 'active'
# DONE = 'done'
# CANCELLED = 'cancelled'
# STATES = [INIT, READY, ACTIVE, DONE, CANCELLED]
# ACTIVE_STATES = [INIT, READY, ACTIVE]
# INACTIVE_STATES = [DONE, CANCELLED]
# 
# Path: seedbox/db/models.py
# class Model(object):
# class Torrent(Model):
# class MediaFile(Model):
# class AppState(Model):
#     PK_NAME = 'id'
#     PK_NAME = 'torrent_id'
#     PK_NAME = 'media_id'
#     PK_NAME = 'name'
#     def __init__(self, **kwds):
#     def as_dict(self):
#     def items(self):
#     def __eq__(self, other):
#     def __iter__(self):
#     def __getitem__(self, name):
#     def __setitem__(self, name, value):
#     def __contains__(self, name):
#     def __str__(self):
#     def pk_filter(cls, value=None):
#     def make_empty(cls):
#     def __init__(self, torrent_id, name, created_at=None, updated_at=None,
#                  state=None, retry_count=None, failed=None, error_msg=None,
#                  invalid=None, purged=None, media_files=None):
#     def __init__(self, media_id, torrent_id, filename, file_ext,
#                  file_path=None, size=None, compressed=None, synced=None,
#                  missing=None, skipped=None, error_msg=None, total_time=None):
#     def __init__(self, name, value):
# 
# Path: seedbox/torrent/parser.py
# LOG = logging.getLogger(__name__)
# DICT_TOKEN = 'd'
# LIST_TOKEN = 'l'
# INT_TOKEN = 'i'
# END_TOKEN = 'e'
# NEGATIVE = '-'
# STR_SEP_TOKEN = ':'
# class ParsingError(Exception):
# class Bdecode(object):
# class TorrentParser(object):
#     def __init__(self, error_msg):
#     def __str__(self):
#     def __init__(self, data):
#     def _next_char(self):
#     def _prev_char(self):
#     def _parse_str(self):
#     def _parse_int(self):
#     def _parse_number(self, delimiter):
#     def _parse_dict(self):
#     def _parse_list(self):
#     def decode(self):
#     def parse(cls, data):
#     def __init__(self, filepath):
#     def content(self):
#     def load_content(self):
#     def get_file_details(self):


import glob
import logging
import os
from oslo_config import cfg
from seedbox.common import tools
from seedbox import constants
from seedbox.db import models
from seedbox.torrent import parser
"""Loads torrents into database.

Torrent loader handles searches the directory where torrent files are stored
and adds them to the database cache if not already found.
"""



LOG = logging.getLogger(__name__)

cfg.CONF.import_group('torrent', 'seedbox.options')
COMPRESSED_TYPES = tools.format_file_ext(cfg.CONF.torrent.compressed_filetypes)

# Path: seedbox/common/tools.py
# LOG = logging.getLogger(__name__)
# def verify_path(path_entry):
# def format_file_ext(filetypes):
# def make_opt_list(opts, group):
# 
# Path: seedbox/constants.py
# INIT = 'init'
# READY = 'ready'
# ACTIVE = 'active'
# DONE = 'done'
# CANCELLED = 'cancelled'
# STATES = [INIT, READY, ACTIVE, DONE, CANCELLED]
# ACTIVE_STATES = [INIT, READY, ACTIVE]
# INACTIVE_STATES = [DONE, CANCELLED]
# 
# Path: seedbox/db/models.py
# class Model(object):
# class Torrent(Model):
# class MediaFile(Model):
# class AppState(Model):
#     PK_NAME = 'id'
#     PK_NAME = 'torrent_id'
#     PK_NAME = 'media_id'
#     PK_NAME = 'name'
#     def __init__(self, **kwds):
#     def as_dict(self):
#     def items(self):
#     def __eq__(self, other):
#     def __iter__(self):
#     def __getitem__(self, name):
#     def __setitem__(self, name, value):
#     def __contains__(self, name):
#     def __str__(self):
#     def pk_filter(cls, value=None):
#     def make_empty(cls):
#     def __init__(self, torrent_id, name, created_at=None, updated_at=None,
#                  state=None, retry_count=None, failed=None, error_msg=None,
#                  invalid=None, purged=None, media_files=None):
#     def __init__(self, media_id, torrent_id, filename, file_ext,
#                  file_path=None, size=None, compressed=None, synced=None,
#                  missing=None, skipped=None, error_msg=None, total_time=None):
#     def __init__(self, name, value):
# 
# Path: seedbox/torrent/parser.py
# LOG = logging.getLogger(__name__)
# DICT_TOKEN = 'd'
# LIST_TOKEN = 'l'
# INT_TOKEN = 'i'
# END_TOKEN = 'e'
# NEGATIVE = '-'
# STR_SEP_TOKEN = ':'
# class ParsingError(Exception):
# class Bdecode(object):
# class TorrentParser(object):
#     def __init__(self, error_msg):
#     def __str__(self):
#     def __init__(self, data):
#     def _next_char(self):
#     def _prev_char(self):
#     def _parse_str(self):
#     def _parse_int(self):
#     def _parse_number(self, delimiter):
#     def _parse_dict(self):
#     def _parse_list(self):
#     def decode(self):
#     def parse(cls, data):
#     def __init__(self, filepath):
#     def content(self):
#     def load_content(self):
#     def get_file_details(self):


# Path: seedbox/torrent/loader.py
import glob
import logging
import os
from oslo_config import cfg
from seedbox.common import tools
from seedbox import constants
from seedbox.db import models
from seedbox.torrent import parser

"""Loads torrents into database.

Torrent loader handles searches the directory where torrent files are stored
and adds them to the database cache if not already found.
"""



LOG = logging.getLogger(__name__)

cfg.CONF.import_group('torrent', 'seedbox.options')
COMPRESSED_TYPES = tools.format_file_ext(cfg.CONF.torrent.compressed_filetypes)

VIDEO_TYPES = tools.format_file_ext(cfg.CONF.torrent.video_filetypes)