From b6b214f7e98c1947bb0d3f09b712ea85c1ba1652 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Mon, 15 May 2017 15:58:06 +0200 Subject: [PATCH] [deviantart] fix headers for custom-style journals example: http://shimoda7.deviantart.com/journal/Temporary-absence-231936282 --- gallery_dl/extractor/deviantart.py | 57 +++++++++++++++++++----------- 1 file changed, 37 insertions(+), 20 deletions(-) diff --git a/gallery_dl/extractor/deviantart.py b/gallery_dl/extractor/deviantart.py index 629cee50..d6cb0e2f 100644 --- a/gallery_dl/extractor/deviantart.py +++ b/gallery_dl/extractor/deviantart.py @@ -88,36 +88,45 @@ class DeviantartExtractor(Extractor): @staticmethod def commit_journal(deviation, journal): title = text.escape(deviation["title"]) - date = datetime.datetime.utcfromtimestamp(deviation["published_time"]) url = deviation["url"] thumbs = deviation["thumbs"] + html = journal["html"] + date = datetime.datetime.utcfromtimestamp(deviation["published_time"]) shadow = SHADOW_TEMPLATE.format_map(thumbs[0]) if thumbs else "" - catlist = deviation["category_path"].split("/") if "css" in journal: css, cls = journal["css"], "withskin" else: css, cls = "", "journal-green" - categories = " / ".join( - ('' - '{}').format(catpath, cat.capitalize()) - for cat, catpath in zip( - catlist, - itertools.accumulate(catlist, lambda t, c: t + "/" + c) + if html.find('
', 0, 250) != -1: + needle = '
' + header = HEADER_CUSTOM_TEMPLATE.format( + title=title, url=url, date=str(date), ) - ) - header = HEADER_TEMPLATE.format( - title=title, - url=url, - userurl=url[:url.find("/", 8)], - username=deviation["author"]["username"], - date=str(date), - categories=categories, - ) + else: + needle = '
' + catlist = deviation["category_path"].split("/") + categories = " / ".join( + ('' + '{}').format(cpath, cat.capitalize()) + for cat, cpath in zip( + catlist, + itertools.accumulate(catlist, lambda t, c: t + "/" + c) + ) + ) + header = HEADER_TEMPLATE.format( + title=title, + url=url, + userurl=url[:url.find("/", 8)], + username=deviation["author"]["username"], + date=str(date), + categories=categories, + ) + html = JOURNAL_TEMPLATE.format( title=title, - html=journal["html"].replace('
', header, 1), + html=html.replace(needle, header, 1), shadow=shadow, css=css, cls=cls, @@ -190,7 +199,7 @@ class DeviantartFavoriteExtractor(DeviantartExtractor): r"(?:/((\d+)/([^/?]+)|\?catpath=/))?"] test = [ ("http://rosuuri.deviantart.com/favourites/58951174/Useful", { - "url": "1ca1c56a1ed2e3df2f8fed267c0497cba4717cab", + "url": "6a10e8e05401d61696ecf7a54c174e1c8ece7ba1", "keyword": "44fe61c5b20db8d90d4e06b86346630289f1db7d", }), ("http://h3813067.deviantart.com/favourites/", { @@ -240,7 +249,7 @@ class DeviantartJournalExtractor(DeviantartExtractor): subcategory = "journal" pattern = [r"(?:https?://)?([^.]+)\.deviantart\.com/journal/?$"] test = [("http://shimoda7.deviantart.com/journal/", { - "url": "f081eb4f6807e77aac9fa0d4d1e62702d23acff5", + "url": "448d14df6b8398273d8e9437ad45dc3f9cdaf68d", "keyword": "9ddc2e130198395c1dfaa55c65b6bf63713ec0a8", })] @@ -392,6 +401,14 @@ HEADER_TEMPLATE = """
""" +HEADER_CUSTOM_TEMPLATE = """
+

+ + {title} +

+Journal Entry: {date} +""" + JOURNAL_TEMPLATE = """text: