mirror of
https://github.com/instaloader/instaloader.git
synced 2024-09-12 00:32:24 +02:00
Revert date_utc and date_local being timezone aware
Fixes #1379. Revert "Make {Post,StoryItem}.date_utc timezone aware"d864ce08ff
. Revert "Remove unnecessary conversion to timezone aware timestamp (#1372)"555c86633c
. Revert "Timezone option for datetime style formatting (#1316)"21365ec668
.
This commit is contained in:
parent
d6e5e31005
commit
ca78fee307
@ -811,7 +811,7 @@ class Instaloader:
|
|||||||
last_scraped = latest_stamps.get_last_story_timestamp(name)
|
last_scraped = latest_stamps.get_last_story_timestamp(name)
|
||||||
scraped_timestamp = datetime.now().astimezone()
|
scraped_timestamp = datetime.now().astimezone()
|
||||||
for item in user_story.get_items():
|
for item in user_story.get_items():
|
||||||
if latest_stamps is not None and item.date_local <= last_scraped:
|
if latest_stamps is not None and item.date_utc.replace(tzinfo=timezone.utc) <= last_scraped:
|
||||||
break
|
break
|
||||||
if storyitem_filter is not None and not storyitem_filter(item):
|
if storyitem_filter is not None and not storyitem_filter(item):
|
||||||
self.context.log("<{} skipped>".format(item), flush=True)
|
self.context.log("<{} skipped>".format(item), flush=True)
|
||||||
@ -1206,7 +1206,7 @@ class Instaloader:
|
|||||||
posts_takewhile: Optional[Callable[[Post], bool]] = None
|
posts_takewhile: Optional[Callable[[Post], bool]] = None
|
||||||
if latest_stamps is not None:
|
if latest_stamps is not None:
|
||||||
last_scraped = latest_stamps.get_last_tagged_timestamp(profile.username)
|
last_scraped = latest_stamps.get_last_tagged_timestamp(profile.username)
|
||||||
posts_takewhile = lambda p: p.date_local > last_scraped
|
posts_takewhile = lambda p: p.date_utc.replace(tzinfo=timezone.utc) > last_scraped
|
||||||
tagged_posts = profile.get_tagged_posts()
|
tagged_posts = profile.get_tagged_posts()
|
||||||
self.posts_download_loop(tagged_posts,
|
self.posts_download_loop(tagged_posts,
|
||||||
target if target
|
target if target
|
||||||
@ -1214,7 +1214,7 @@ class Instaloader:
|
|||||||
_PostPathFormatter.sanitize_path(':tagged')),
|
_PostPathFormatter.sanitize_path(':tagged')),
|
||||||
fast_update, post_filter, takewhile=posts_takewhile)
|
fast_update, post_filter, takewhile=posts_takewhile)
|
||||||
if latest_stamps is not None and tagged_posts.first_item is not None:
|
if latest_stamps is not None and tagged_posts.first_item is not None:
|
||||||
latest_stamps.set_last_tagged_timestamp(profile.username, tagged_posts.first_item.date_local)
|
latest_stamps.set_last_tagged_timestamp(profile.username, tagged_posts.first_item.date_local.astimezone())
|
||||||
|
|
||||||
def download_igtv(self, profile: Profile, fast_update: bool = False,
|
def download_igtv(self, profile: Profile, fast_update: bool = False,
|
||||||
post_filter: Optional[Callable[[Post], bool]] = None,
|
post_filter: Optional[Callable[[Post], bool]] = None,
|
||||||
@ -1229,12 +1229,12 @@ class Instaloader:
|
|||||||
posts_takewhile: Optional[Callable[[Post], bool]] = None
|
posts_takewhile: Optional[Callable[[Post], bool]] = None
|
||||||
if latest_stamps is not None:
|
if latest_stamps is not None:
|
||||||
last_scraped = latest_stamps.get_last_igtv_timestamp(profile.username)
|
last_scraped = latest_stamps.get_last_igtv_timestamp(profile.username)
|
||||||
posts_takewhile = lambda p: p.date_local > last_scraped
|
posts_takewhile = lambda p: p.date_utc.replace(tzinfo=timezone.utc) > last_scraped
|
||||||
igtv_posts = profile.get_igtv_posts()
|
igtv_posts = profile.get_igtv_posts()
|
||||||
self.posts_download_loop(igtv_posts, profile.username, fast_update, post_filter,
|
self.posts_download_loop(igtv_posts, profile.username, fast_update, post_filter,
|
||||||
total_count=profile.igtvcount, owner_profile=profile, takewhile=posts_takewhile)
|
total_count=profile.igtvcount, owner_profile=profile, takewhile=posts_takewhile)
|
||||||
if latest_stamps is not None and igtv_posts.first_item is not None:
|
if latest_stamps is not None and igtv_posts.first_item is not None:
|
||||||
latest_stamps.set_last_igtv_timestamp(profile.username, igtv_posts.first_item.date_local)
|
latest_stamps.set_last_igtv_timestamp(profile.username, igtv_posts.first_item.date_local.astimezone())
|
||||||
|
|
||||||
def _get_id_filename(self, profile_name: str) -> str:
|
def _get_id_filename(self, profile_name: str) -> str:
|
||||||
if ((format_string_contains_key(self.dirname_pattern, 'profile') or
|
if ((format_string_contains_key(self.dirname_pattern, 'profile') or
|
||||||
@ -1427,14 +1427,14 @@ class Instaloader:
|
|||||||
if latest_stamps is not None:
|
if latest_stamps is not None:
|
||||||
# pylint:disable=cell-var-from-loop
|
# pylint:disable=cell-var-from-loop
|
||||||
last_scraped = latest_stamps.get_last_post_timestamp(profile_name)
|
last_scraped = latest_stamps.get_last_post_timestamp(profile_name)
|
||||||
posts_takewhile = lambda p: p.date_local > last_scraped
|
posts_takewhile = lambda p: p.date_utc.replace(tzinfo=timezone.utc) > last_scraped
|
||||||
posts_to_download = profile.get_posts()
|
posts_to_download = profile.get_posts()
|
||||||
self.posts_download_loop(posts_to_download, profile_name, fast_update, post_filter,
|
self.posts_download_loop(posts_to_download, profile_name, fast_update, post_filter,
|
||||||
total_count=profile.mediacount, owner_profile=profile,
|
total_count=profile.mediacount, owner_profile=profile,
|
||||||
takewhile=posts_takewhile)
|
takewhile=posts_takewhile)
|
||||||
if latest_stamps is not None and posts_to_download.first_item is not None:
|
if latest_stamps is not None and posts_to_download.first_item is not None:
|
||||||
latest_stamps.set_last_post_timestamp(profile_name,
|
latest_stamps.set_last_post_timestamp(profile_name,
|
||||||
posts_to_download.first_item.date_local)
|
posts_to_download.first_item.date_local.astimezone())
|
||||||
|
|
||||||
if stories and profiles:
|
if stories and profiles:
|
||||||
with self.context.error_catcher("Download stories"):
|
with self.context.error_catcher("Download stories"):
|
||||||
|
@ -3,7 +3,7 @@ import lzma
|
|||||||
import re
|
import re
|
||||||
from base64 import b64decode, b64encode
|
from base64 import b64decode, b64encode
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
from datetime import datetime, timezone
|
from datetime import datetime
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Any, Dict, Iterable, Iterator, List, Optional, Tuple, Union
|
from typing import Any, Dict, Iterable, Iterator, List, Optional, Tuple, Union
|
||||||
|
|
||||||
@ -225,12 +225,16 @@ class Post:
|
|||||||
@property
|
@property
|
||||||
def date_local(self) -> datetime:
|
def date_local(self) -> datetime:
|
||||||
"""Timestamp when the post was created (local time zone)."""
|
"""Timestamp when the post was created (local time zone)."""
|
||||||
return datetime.fromtimestamp(self.get_timestamp_date_created()).astimezone()
|
return datetime.fromtimestamp(self._node["date"]
|
||||||
|
if "date" in self._node
|
||||||
|
else self._node["taken_at_timestamp"])
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def date_utc(self) -> datetime:
|
def date_utc(self) -> datetime:
|
||||||
"""Timestamp when the post was created (UTC)."""
|
"""Timestamp when the post was created (UTC)."""
|
||||||
return datetime.utcfromtimestamp(self.get_timestamp_date_created()).replace(tzinfo=timezone.utc)
|
return datetime.utcfromtimestamp(self._node["date"]
|
||||||
|
if "date" in self._node
|
||||||
|
else self._node["taken_at_timestamp"])
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def date(self) -> datetime:
|
def date(self) -> datetime:
|
||||||
@ -271,12 +275,6 @@ class Post:
|
|||||||
return len(edges)
|
return len(edges)
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
def get_timestamp_date_created(self) -> float:
|
|
||||||
"""Timestamp when the post was created"""
|
|
||||||
return (self._node["date"]
|
|
||||||
if "date" in self._node
|
|
||||||
else self._node["taken_at_timestamp"])
|
|
||||||
|
|
||||||
def get_is_videos(self) -> List[bool]:
|
def get_is_videos(self) -> List[bool]:
|
||||||
"""
|
"""
|
||||||
Return a list containing the ``is_video`` property for each media in the post.
|
Return a list containing the ``is_video`` property for each media in the post.
|
||||||
@ -1081,12 +1079,12 @@ class StoryItem:
|
|||||||
@property
|
@property
|
||||||
def date_local(self) -> datetime:
|
def date_local(self) -> datetime:
|
||||||
"""Timestamp when the StoryItem was created (local time zone)."""
|
"""Timestamp when the StoryItem was created (local time zone)."""
|
||||||
return datetime.fromtimestamp(self._node['taken_at_timestamp']).astimezone()
|
return datetime.fromtimestamp(self._node['taken_at_timestamp'])
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def date_utc(self) -> datetime:
|
def date_utc(self) -> datetime:
|
||||||
"""Timestamp when the StoryItem was created (UTC)."""
|
"""Timestamp when the StoryItem was created (UTC)."""
|
||||||
return datetime.utcfromtimestamp(self._node['taken_at_timestamp']).replace(tzinfo=timezone.utc)
|
return datetime.utcfromtimestamp(self._node['taken_at_timestamp'])
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def date(self) -> datetime:
|
def date(self) -> datetime:
|
||||||
|
Loading…
Reference in New Issue
Block a user