Beispiel #1
0
 def __str__(self):
     with StringPrinter() as printer:
         if not self.arguments:
             printer.write("%s()" % self.name)
         else:
             printer.write("%s(" % self.name, end="")
             nb_args = len(self.arguments)
             padding = " " * (len(self.name) + 1)
             for i, (arg_name, arg_parser) in enumerate(
                     sorted(self.arguments.items())):
                 printer.write(
                     "%s%s: %s" % (
                         padding if i else "",
                         arg_name,
                         self.__symbol_to_string(arg_parser),
                     ),
                     end=("" if i == nb_args - 1 else ",\n"),
                 )
             printer.write(")")
         if self.description:
             padding = " " * len(self.name)
             for line in textwrap.wrap(self.description,
                                       width=(70 - len(padding))):
                 printer.write("%s%s" % (padding, line))
         parser = self.to_command_line()
         if parser:
             printer.write(parser.description)
         return str(printer)
Beispiel #2
0
 def __str__(self):
     cls = type(self)
     with StringPrinter() as printer:
         printer.write(f"{cls.__name__} {self.video_id}:")
         for field in class_get_public_attributes(cls):
             printer.write(f"\t{field}: {getattr(self, field)}")
         return str(printer)
Beispiel #3
0
 def __str__(self):
     with StringPrinter() as printer:
         printer.write(f"{type(self).__name__}: {len(self.video_errors)}")
         for file_name, errors in self.video_errors.items():
             printer.title(file_name)
             for video_error in errors:
                 printer.write(f"\t{video_error}")
         return str(printer)
def dff_dumps(dictionary: dict) -> str:
    with StringPrinter() as writer:
        for key, value in dictionary.items():
            if not isinstance(value, str):
                value = str(value)
            value = value.replace("\r\n", "\n")
            value = value.replace("\r", "\n")
            writer.write(key)
            for line in value.split("\n"):
                writer.write(f"\t{line}")
        return str(writer)
Beispiel #5
0
 def playlist(self, indices: str) -> str:
     videos = []
     errors = []
     unknown = []
     for piece in indices.strip().split():
         if piece:
             try:
                 video_id = int(piece)
             except ValueError:
                 errors.append(piece)
             else:
                 if self.database.has_video_id(video_id):
                     videos.append(
                         self.database.get_video_fields(
                             video_id, ["filename"]))
                 else:
                     unknown.append(video_id)
     temp_file_path = None
     if videos:
         tracks = "".join("<track><location>%s</location></track>" %
                          video.filename.uri for video in videos)
         file_content = (
             f'<?xml version="1.0" encoding="UTF-8"?>'
             f'<playlist version="1" xmlns="http://xspf.org/ns/0/">'
             f"<trackList>{tracks}</trackList>"
             f"</playlist>")
         temp_file_path = generate_temp_file_path("xspf")
         with open(temp_file_path.path, "w") as file:
             file.write(file_content)
         temp_file_path.open()
     with StringPrinter() as printer:
         if videos:
             printer.title("Playlist:")
             for video in videos:
                 printer.write(video.filename)
         if errors:
             printer.title("Invalid:")
             for error in errors:
                 printer.write(error)
         if unknown:
             printer.title("Unknown:")
             for value in unknown:
                 printer.write(value)
         if temp_file_path:
             printer.write("Output:", temp_file_path)
         return str(printer)
Beispiel #6
0
 def images(self, indices: str):
     videos = []
     errors = []
     unknown = []
     for piece in indices.strip().split():
         if piece:
             try:
                 video_id = int(piece)
             except ValueError:
                 errors.append(piece)
             else:
                 if self.database.has_video_id(video_id):
                     videos.append(
                         self.database.get_video_fields(
                             video_id, ("filename", "thumbnail_path")))
                 else:
                     unknown.append(video_id)
     temp_file_path = None
     if videos:
         file_content = """<html><body>%s</body></html>""" % ("".join(
             f"<div><div>"
             f'<img alt="{v.filename}" src="file://{v.thumbnail_path}"/>'
             f"</div><div><strong>{v.filename}</strong>"
             f"</div></div>" for v in videos))
         temp_file_path = generate_temp_file_path("html")
         with open(temp_file_path.path, "w") as file:
             file.write(file_content)
         temp_file_path.open()
     with StringPrinter() as printer:
         if videos:
             printer.title("Images:")
             for video in videos:
                 printer.write(video.filename)
         if errors:
             printer.title("Invalid:")
             for error in errors:
                 printer.write(error)
         if unknown:
             printer.title("Unknown:")
             for value in unknown:
                 printer.write(value)
         if temp_file_path:
             printer.write("Output:", temp_file_path)
         return str(printer)
Beispiel #7
0
 def __str__(self):
     header_sizes = [
         max(
             len(str(self.headers[i])),
             max([len(str(line[i])) for line in self.lines if line] + [0]),
         ) + 2 for i in range(len(self.headers))
     ]
     with StringPrinter() as printer:
         printer.write("".join(
             str(self.headers[i]).ljust(header_sizes[i])
             for i in range(len(self.headers))))
         for line in self.lines:
             if line:
                 printer.write("".join(
                     str(line[i]).ljust(header_sizes[i])
                     for i in range(len(self.headers))))
             else:
                 printer.write()
         return str(printer)
Beispiel #8
0
 def __str__(self):
     with StringPrinter() as printer:
         printer.write(f"{type(self).__name__}: {len(self.names)}")
         for name in sorted(self.names):
             printer.write(f"\t{name}")
         return str(printer)
Beispiel #9
0
 def __init__(self, *message):
     super().__init__()
     with StringPrinter() as printer:
         if message:
             printer.write(*message)
         self.message = str(printer)
Beispiel #10
0
 def __str__(self):
     with StringPrinter() as printer:
         for line in self:
             printer.write(line)
         return str(printer)
Beispiel #11
0
 def __str__(self):
     printer = StringPrinter()
     self.__debug(printer, self.children)
     return str(printer)
Beispiel #12
0
 def __debug(self, output: StringPrinter, children, indent=""):
     for name in sorted(children):
         output.write(indent + name)
         self.__debug(output, children[name].children, indent + "\t")