def update_metadata(self): self.title = self.title or self.name self.description = self.description or "-" self.creator = self.creator or "Unknown" self.publisher = self.publisher or "Kiwix" self.tags = self.tags or [] # generate ICO favicon (fallback for browsers) create_favicon( self.build_dir.joinpath("favicon.png"), self.build_dir.joinpath("favicon.ico"), ) self.zim_info.update( title=self.title, description=self.description, creator=self.creator, publisher=self.publisher, name=self.name, tags=self.tags, ) # set colors from images if not supplied main_color, secondary_color = "#95A5A6", "#95A5A6" if self.main_logo: main_color = secondary_color = get_colors(self.main_logo_path)[1] self.main_color = self.main_color or main_color self.secondary_color = self.secondary_color or secondary_color
def update_metadata(self): self.title = self.title or self.name self.description = self.description or "-" self.creator = self.creator or "Unknown" self.publisher = self.publisher or "Kiwix" self.tags = self.tags or [] # generate ICO favicon (fallback for browsers) create_favicon( self.build_dir.joinpath("favicon.png"), self.build_dir.joinpath("favicon.ico"), ) self.zim_info.update( title=self.title, description=self.description, creator=self.creator, publisher=self.publisher, name=self.name, tags=self.tags, ) # set colors from images if not supplied main_color, secondary_color = "#95A5A6", "#95A5A6" if self.main_logo: main_color = secondary_color = get_colors(self.main_logo_path)[1] self.main_color = self.main_color or main_color self.secondary_color = self.secondary_color or secondary_color # get about content from param, archive or defaults to desc self.about_content = f"<p>{self.description}</p>" about_source = self.build_dir / "about.html" if about_source.exists(): with open(about_source, "r") as fh: self.about_content = fh.read() about_source.unlink(missing_ok=True) else: about_source = about_source.parent / "files" / "about.html" if about_source.exists(): with open(about_source, "r") as fh: self.about_content = fh.read() about_source.unlink(missing_ok=True)
def test_colors_jpg_palette(jpg_image): assert get_colors(jpg_image, True) == ("#221C1B", "#F4F3F1")
def test_colors_png_palette(png_image): assert get_colors(png_image, True) == ("#04649C", "#FFE7E7")
def test_colors_jpg_nopalette(jpg_image): assert get_colors(jpg_image, False) == ("#C1BBB3", "#F4F3F1")
def test_colors_png_nopalette(png_image): assert get_colors(png_image, False) == ("#04649C", "#E7F6FF")
def test_colors_noimage(): with pytest.raises(FileNotFoundError): get_colors("nofile.here")
def update_metadata(self): # we use title, description, profile and banner of channel/user # or channel of first playlist main_channel_json = get_channel_json(self.main_channel_id) save_channel_branding(self.channels_dir, self.main_channel_id, save_banner=True) # if a single playlist was requested, use if for names; # otherwise, use main_channel's details. auto_title = (self.playlists[0].title if self.is_playlist and len(self.playlists) == 1 else main_channel_json["snippet"]["title"].strip()) auto_description = (clean_text(self.playlists[0].description) if self.is_playlist and len(self.playlists) == 1 else clean_text( main_channel_json["snippet"]["description"])) self.title = self.title or auto_title or "-" self.description = self.description or auto_description or "-" if self.creator is None: if self.is_single_channel: self.creator = _("Youtube Channel “{title}”").format( title=main_channel_json["snippet"]["title"]) else: self.creator = _("Youtube Channels") self.publisher = self.publisher or "Kiwix" self.tags = self.tags or ["youtube"] if "_videos:yes" not in self.tags: self.tags.append("_videos:yes") self.zim_info.update( title=self.title, description=self.description, creator=self.creator, publisher=self.publisher, name=self.name, tags=self.tags, ) # copy our main_channel branding into /(profile|banner).jpg if not supplied if not self.profile_path.exists(): shutil.copy( self.channels_dir.joinpath(self.main_channel_id, "profile.jpg"), self.profile_path, ) if not self.banner_path.exists(): shutil.copy( self.channels_dir.joinpath(self.main_channel_id, "banner.jpg"), self.banner_path, ) # set colors from images if not supplied if self.main_color is None or self.secondary_color is None: profile_main, profile_secondary = get_colors(self.profile_path) self.main_color = self.main_color or profile_main self.secondary_color = self.secondary_color or profile_secondary resize_image( self.profile_path, width=48, height=48, method="thumbnail", to=self.build_dir.joinpath("favicon.jpg"), )