Support {date_utc} filename_pattern
{date_utc} encodes the post creation date in UTC rather than the current local timezone, as {date} does. This was proposed in #69. Encoding the post creation date in local time zone induces problems regarding --fast-update when the time zone is changed.
This commit is contained in:
parent
97e1bd2bf0
commit
e6be0179b7
@ -95,7 +95,7 @@ pattern, the token ``{target}`` is replaced by the target name, and
|
|||||||
:option:`--filename-pattern` configures the path of the post's files relative
|
:option:`--filename-pattern` configures the path of the post's files relative
|
||||||
to the target directory. The default is ``--filename-pattern={date}``.
|
to the target directory. The default is ``--filename-pattern={date}``.
|
||||||
The tokens ``{target}`` and ``{profile}`` are replaced like in the
|
The tokens ``{target}`` and ``{profile}`` are replaced like in the
|
||||||
dirname pattern. Further, the tokens ``{date}`` and ``{shortcode}`` are
|
dirname pattern. Further, the tokens ``{date}``, ``{date_utc}`` and ``{shortcode}`` are
|
||||||
defined. Additionally, in case of not downloading stories, the attributes of
|
defined. Additionally, in case of not downloading stories, the attributes of
|
||||||
:class:`.Post` can be used, e.g. ``{post.owner_id}`` or ``{post.mediaid}``.
|
:class:`.Post` can be used, e.g. ``{post.owner_id}`` or ``{post.mediaid}``.
|
||||||
|
|
||||||
|
@ -144,7 +144,7 @@ How to Download
|
|||||||
Prefix of filenames. Posts are stored in the directory whose pattern is given
|
Prefix of filenames. Posts are stored in the directory whose pattern is given
|
||||||
with ``--dirname-pattern``. ``{profile}`` is replaced by the profile name,
|
with ``--dirname-pattern``. ``{profile}`` is replaced by the profile name,
|
||||||
``{target}`` is replaced by the target you specified, i.e. either ``:feed``,
|
``{target}`` is replaced by the target you specified, i.e. either ``:feed``,
|
||||||
``#hashtag`` or the profile name. Also, the fields ``{date}`` and
|
``#hashtag`` or the profile name. Also, the fields ``{date}``, ``{date_utc}`` and
|
||||||
``{shortcode}`` can be specified. In case of not downloading stories, the
|
``{shortcode}`` can be specified. In case of not downloading stories, the
|
||||||
attributes of the :class:`.Post` class can be used in addition, e.g.
|
attributes of the :class:`.Post` class can be used in addition, e.g.
|
||||||
``{post.owner_id}`` or ``{post.mediaid}``.
|
``{post.owner_id}`` or ``{post.mediaid}``.
|
||||||
|
@ -268,9 +268,14 @@ class Post:
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def date(self) -> datetime:
|
def date(self) -> datetime:
|
||||||
"""Timestamp when the post was created."""
|
"""Timestamp when the post was created (local time zone)."""
|
||||||
return datetime.fromtimestamp(self._node["date"] if "date" in self._node else self._node["taken_at_timestamp"])
|
return datetime.fromtimestamp(self._node["date"] if "date" in self._node else self._node["taken_at_timestamp"])
|
||||||
|
|
||||||
|
@property
|
||||||
|
def date_utc(self) -> datetime:
|
||||||
|
"""Timestamp when the post was created (UTC)."""
|
||||||
|
return datetime.utcfromtimestamp(self._node["date"] if "date" in self._node else self._node["taken_at_timestamp"])
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def url(self) -> str:
|
def url(self) -> str:
|
||||||
"""URL of the picture / video thumbnail of the post"""
|
"""URL of the picture / video thumbnail of the post"""
|
||||||
@ -430,8 +435,12 @@ class Instaloader:
|
|||||||
self.sleep = sleep
|
self.sleep = sleep
|
||||||
self.quiet = quiet
|
self.quiet = quiet
|
||||||
self.dirname_pattern = dirname_pattern if dirname_pattern is not None else '{target}'
|
self.dirname_pattern = dirname_pattern if dirname_pattern is not None else '{target}'
|
||||||
self.filename_pattern = filename_pattern.replace('{date}', '{date:%Y-%m-%d_%H-%M-%S}') \
|
if filename_pattern is not None:
|
||||||
if filename_pattern is not None else '{date:%Y-%m-%d_%H-%M-%S}'
|
self.filename_pattern = filename_pattern \
|
||||||
|
.replace('{date}', '{date:%Y-%m-%d_%H-%M-%S}') \
|
||||||
|
.replace('{date_utc}', '{date_utc:%Y-%m-%d_%H-%M-%S_UTC}')
|
||||||
|
else:
|
||||||
|
self.filename_pattern = '{date:%Y-%m-%d_%H-%M-%S}'
|
||||||
self.download_videos = download_videos
|
self.download_videos = download_videos
|
||||||
self.download_video_thumbnails = download_video_thumbnails
|
self.download_video_thumbnails = download_video_thumbnails
|
||||||
self.download_geotags = download_geotags
|
self.download_geotags = download_geotags
|
||||||
@ -907,7 +916,8 @@ class Instaloader:
|
|||||||
profilename = post.owner_username if needs_profilename else None
|
profilename = post.owner_username if needs_profilename else None
|
||||||
dirname = self.dirname_pattern.format(profile=profilename, target=target.lower())
|
dirname = self.dirname_pattern.format(profile=profilename, target=target.lower())
|
||||||
filename = dirname + '/' + self.filename_pattern.format(profile=profilename, target=target.lower(),
|
filename = dirname + '/' + self.filename_pattern.format(profile=profilename, target=target.lower(),
|
||||||
date=post.date, shortcode=post.shortcode,
|
date=post.date, date_utc=post.date_utc,
|
||||||
|
shortcode=post.shortcode,
|
||||||
post=post)
|
post=post)
|
||||||
os.makedirs(os.path.dirname(filename), exist_ok=True)
|
os.makedirs(os.path.dirname(filename), exist_ok=True)
|
||||||
|
|
||||||
@ -1048,9 +1058,10 @@ class Instaloader:
|
|||||||
|
|
||||||
shortcode = item["code"] if "code" in item else "no_code"
|
shortcode = item["code"] if "code" in item else "no_code"
|
||||||
date = datetime.fromtimestamp(item["taken_at"])
|
date = datetime.fromtimestamp(item["taken_at"])
|
||||||
|
date_utc = datetime.utcfromtimestamp(item["taken_at"])
|
||||||
dirname = self.dirname_pattern.format(profile=profile, target=target)
|
dirname = self.dirname_pattern.format(profile=profile, target=target)
|
||||||
filename = dirname + '/' + self.filename_pattern.format(profile=profile, target=target,
|
filename = dirname + '/' + self.filename_pattern.format(profile=profile, target=target,
|
||||||
date=date,
|
date=date, date_utc=date_utc,
|
||||||
shortcode=shortcode)
|
shortcode=shortcode)
|
||||||
os.makedirs(os.path.dirname(filename), exist_ok=True)
|
os.makedirs(os.path.dirname(filename), exist_ok=True)
|
||||||
downloaded = False
|
downloaded = False
|
||||||
|
Loading…
x
Reference in New Issue
Block a user