Skip to content
Snippets Groups Projects
Commit f1cc7c1c authored by OndraRehounek's avatar OndraRehounek
Browse files

jekyll-import: handle number as tag_name and images with absolute URL

parent a6e8527f
Branches
No related tags found
2 merge requests!484release,!482Bugfix/import zlinsky
...@@ -151,16 +151,37 @@ def get_or_create_image( ...@@ -151,16 +151,37 @@ def get_or_create_image(
except FileNotFoundError: except FileNotFoundError:
pass pass
# ani cesta "assets/img/posts" nefunguje, jdeme zkusit assets server a.pirati.cz # na disku jsme nenašli, zkusíme stáhnout z webu
fallback_name = ( fallback_name = (
"".join(random.choice(string.ascii_lowercase) for _ in range(10)) + ".jpg" "".join(random.choice(string.ascii_lowercase) for _ in range(10)) + ".jpg"
) # někdy je název obrzau spojený s poznámkou apod., připravíme si fallback name ) # někdy je název obrzau spojený s poznámkou apod., připravíme si fallback name
img_name = file_path.split("/")[-1] or fallback_name img_name = file_path.split("/")[-1] or fallback_name
img_path = os.path.join(path, img_name)
# zkusíme, jestli obrázek není hardcoded (posty ve zlinském kraji)
if file_path.startswith("https://"):
try:
urllib.request.urlretrieve(file_path, img_path)
except (HTTPError, UnicodeEncodeError, InvalidURL, IsADirectoryError):
msg = "Nedohledán obrázek při importu článků - ani na disku, ani na URL"
log_message = "{}: URL {}\n".format(msg, file_path)
logger.warning(
log_message,
extra={
"file_path": file_path,
"img_name": img_name,
"img_url": file_path,
},
)
return None, log_message
# opačném případě jdeme zkusit assets server a.pirati.cz
else:
img_assets_folder = repo_name.split(".")[0] # např. "praha" z praha.pirati.cz img_assets_folder = repo_name.split(".")[0] # např. "praha" z praha.pirati.cz
img_url = "https://a.pirati.cz/resize/4000x-/{}/img/{}".format( img_url = "https://a.pirati.cz/resize/4000x-/{}/img/{}".format(
img_assets_folder, file_path.split("#")[0] # cistime nazev od poznamek apod img_assets_folder, file_path.split("#")[0] # cistime nazev od poznamek apod
) )
img_path = os.path.join(path, img_name)
try: try:
urllib.request.urlretrieve(img_url, img_path) urllib.request.urlretrieve(img_url, img_path)
except (HTTPError, UnicodeEncodeError, InvalidURL, IsADirectoryError): except (HTTPError, UnicodeEncodeError, InvalidURL, IsADirectoryError):
...@@ -498,10 +519,18 @@ class JekyllArticleImporter: ...@@ -498,10 +519,18 @@ class JekyllArticleImporter:
meta_dict.update({key: value}) meta_dict.update({key: value})
return meta_dict return meta_dict
@staticmethod def handle_tags(self, article, meta):
def handle_tags(article, meta):
for tag_name in meta.get("tags", []): for tag_name in meta.get("tags", []):
try:
article.tags.add(tag_name) article.tags.add(tag_name)
except ValueError:
try:
article.tags.add(str(tag_name))
except Exception as E:
msg = "Nelze importovat tag"
logger.warning(msg, extra={"tag": tag_name})
self.page_log += "{} - {}\n".format(msg, tag_name)
return None
def import_post(self, file_path): def import_post(self, file_path):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment