Remove now-unneeded Tristate
This commit is contained in:
parent
7976a4811e
commit
df1cdb5d48
@ -96,8 +96,6 @@ Miscellaneous Functions
|
||||
|
||||
.. autofunction:: mediaid_to_shortcode
|
||||
|
||||
.. autoclass:: Tristate
|
||||
|
||||
Exceptions
|
||||
^^^^^^^^^^
|
||||
|
||||
|
@ -46,11 +46,6 @@ automatically **finds it by its unique ID** and renames the folder likewise.
|
||||
request to the Instagram server for each picture, which is why it is disabled
|
||||
by default.
|
||||
|
||||
.. option:: --no-geotags
|
||||
|
||||
Do not store geotags, even if they can be obtained without any additional
|
||||
request.
|
||||
|
||||
.. option:: --comments
|
||||
|
||||
Download and update comments for each post. This requires an additional
|
||||
|
@ -13,6 +13,6 @@ else:
|
||||
win_unicode_console.enable()
|
||||
|
||||
from .exceptions import *
|
||||
from .instaloader import Instaloader, Tristate
|
||||
from .instaloader import Instaloader
|
||||
from .structures import (Post, Profile, Story, StoryItem, load_structure_from_file, mediaid_to_shortcode,
|
||||
save_structure_to_file, shortcode_to_mediaid)
|
||||
|
@ -7,7 +7,7 @@ from argparse import ArgumentParser, SUPPRESS
|
||||
from typing import Callable, List, Optional
|
||||
|
||||
from . import (Instaloader, InstaloaderException, InvalidArgumentException, Post, Profile, ProfileNotExistsException,
|
||||
StoryItem, Tristate, __version__, load_structure_from_file)
|
||||
StoryItem, __version__, load_structure_from_file)
|
||||
from .instaloader import get_default_session_filename
|
||||
from .instaloadercontext import default_user_agent
|
||||
|
||||
@ -189,8 +189,6 @@ def main():
|
||||
'text file with the location\'s name and a Google Maps link. '
|
||||
'This requires an additional request to the Instagram '
|
||||
'server for each picture, which is why it is disabled by default.')
|
||||
g_what.add_argument('--no-geotags', action='store_true',
|
||||
help='Do not store geotags, even if they can be obtained without any additional request.')
|
||||
g_what.add_argument('-C', '--comments', action='store_true',
|
||||
help='Download and update comments for each post. '
|
||||
'This requires an additional request to the Instagram '
|
||||
@ -279,28 +277,13 @@ def main():
|
||||
raise SystemExit(":feed-all and :feed-liked were removed. Use :feed as target and "
|
||||
"eventually --only-if=viewer_has_liked.")
|
||||
|
||||
download_videos = Tristate.always if not args.no_videos else Tristate.no_extra_query
|
||||
download_video_thumbnails = Tristate.always if not args.no_video_thumbnails else Tristate.never
|
||||
download_comments = Tristate.always if args.comments else Tristate.no_extra_query
|
||||
save_captions = Tristate.no_extra_query if not args.no_captions else Tristate.never
|
||||
save_metadata = Tristate.always if not args.no_metadata_json else Tristate.never
|
||||
|
||||
if args.geotags and args.no_geotags:
|
||||
raise SystemExit("--geotags and --no-geotags given. I am confused and refuse to work.")
|
||||
elif args.geotags:
|
||||
download_geotags = Tristate.always
|
||||
elif args.no_geotags:
|
||||
download_geotags = Tristate.never
|
||||
else:
|
||||
download_geotags = Tristate.no_extra_query
|
||||
|
||||
loader = Instaloader(sleep=not args.no_sleep, quiet=args.quiet,
|
||||
user_agent=args.user_agent,
|
||||
dirname_pattern=args.dirname_pattern, filename_pattern=args.filename_pattern,
|
||||
download_videos=download_videos, download_video_thumbnails=download_video_thumbnails,
|
||||
download_geotags=download_geotags,
|
||||
save_captions=save_captions, download_comments=download_comments,
|
||||
save_metadata=save_metadata, compress_json=not args.no_compress_json,
|
||||
download_videos=not args.no_videos, download_video_thumbnails=not args.no_video_thumbnails,
|
||||
download_geotags=args.geotags,
|
||||
save_captions=not args.no_captions, download_comments=args.comments,
|
||||
save_metadata=not args.no_metadata_json, compress_json=not args.no_compress_json,
|
||||
max_connection_attempts=args.max_connection_attempts)
|
||||
_main(loader,
|
||||
args.profile,
|
||||
|
@ -9,7 +9,6 @@ import sys
|
||||
import tempfile
|
||||
from contextlib import contextmanager, suppress
|
||||
from datetime import datetime
|
||||
from enum import Enum
|
||||
from functools import wraps
|
||||
from io import BytesIO
|
||||
from typing import Any, Callable, Dict, Iterator, List, Optional
|
||||
@ -34,23 +33,6 @@ def format_string_contains_key(format_string: '_PathPattern', key: str) -> bool:
|
||||
return False
|
||||
|
||||
|
||||
class Tristate(Enum):
|
||||
"""Tri-state to encode whether we should save certain information, i.e. videos, captions, comments or geotags.
|
||||
|
||||
:attr:`never`
|
||||
Do not save, even if the information is available without any additional request,
|
||||
|
||||
:attr:`no_extra_query`
|
||||
Save if and only if available without doing additional queries,
|
||||
|
||||
:attr:`always`
|
||||
Save (and query, if neccessary).
|
||||
"""
|
||||
never = 0
|
||||
no_extra_query = 1
|
||||
always = 2
|
||||
|
||||
|
||||
def _requires_login(func: Callable) -> Callable:
|
||||
"""Decorator to raise an exception if herewith-decorated function is called without being logged in"""
|
||||
@wraps(func)
|
||||
@ -78,12 +60,12 @@ class Instaloader:
|
||||
user_agent: Optional[str] = None,
|
||||
dirname_pattern: Optional[str] = None,
|
||||
filename_pattern: Optional[str] = None,
|
||||
download_videos: Tristate = Tristate.always,
|
||||
download_video_thumbnails: Tristate = Tristate.always,
|
||||
download_geotags: Tristate = Tristate.no_extra_query,
|
||||
save_captions: Tristate = Tristate.no_extra_query,
|
||||
download_comments: Tristate = Tristate.no_extra_query,
|
||||
save_metadata: Tristate = Tristate.no_extra_query,
|
||||
download_videos: bool = True,
|
||||
download_video_thumbnails: bool = True,
|
||||
download_geotags: bool = True,
|
||||
save_captions: bool = True,
|
||||
download_comments: bool = True,
|
||||
save_metadata: bool = True,
|
||||
compress_json: bool = True,
|
||||
max_connection_attempts: int = 3):
|
||||
|
||||
@ -352,14 +334,14 @@ class Instaloader:
|
||||
edge_number = 1
|
||||
for edge in post.get_sidecar_edges():
|
||||
# Download picture or video thumbnail
|
||||
if not edge['node']['is_video'] or self.download_video_thumbnails is Tristate.always:
|
||||
if not edge['node']['is_video'] or self.download_video_thumbnails is True:
|
||||
downloaded |= self.download_pic(filename=filename,
|
||||
filename_alt=filename_old,
|
||||
url=edge['node']['display_url'],
|
||||
mtime=post.date_local,
|
||||
filename_suffix=str(edge_number))
|
||||
# Additionally download video if available and desired
|
||||
if edge['node']['is_video'] and self.download_videos is Tristate.always:
|
||||
if edge['node']['is_video'] and self.download_videos is True:
|
||||
downloaded |= self.download_pic(filename=filename,
|
||||
filename_alt=filename_old,
|
||||
url=edge['node']['video_url'],
|
||||
@ -370,14 +352,14 @@ class Instaloader:
|
||||
downloaded = self.download_pic(filename=filename, filename_alt=filename_old,
|
||||
url=post.url, mtime=post.date_local)
|
||||
elif post.typename == 'GraphVideo':
|
||||
if self.download_video_thumbnails is Tristate.always:
|
||||
if self.download_video_thumbnails is True:
|
||||
downloaded = self.download_pic(filename=filename, filename_alt=filename_old,
|
||||
url=post.url, mtime=post.date_local)
|
||||
else:
|
||||
self.context.error("Warning: {0} has unknown typename: {1}".format(post, post.typename))
|
||||
|
||||
# Save caption if desired
|
||||
if self.save_captions is not Tristate.never:
|
||||
if self.save_captions is not False:
|
||||
if post.caption:
|
||||
self.save_caption(filename=filename, filename_alt=filename_old,
|
||||
mtime=post.date_local, caption=post.caption)
|
||||
@ -385,22 +367,22 @@ class Instaloader:
|
||||
self.context.log("<no caption>", end=' ', flush=True)
|
||||
|
||||
# Download video if desired
|
||||
if post.is_video and self.download_videos is Tristate.always:
|
||||
if post.is_video and self.download_videos is True:
|
||||
downloaded |= self.download_pic(filename=filename, filename_alt=filename_old,
|
||||
url=post.video_url, mtime=post.date_local)
|
||||
|
||||
# Download geotags if desired
|
||||
if self.download_geotags is Tristate.always:
|
||||
if self.download_geotags is True:
|
||||
location = post.get_location()
|
||||
if location:
|
||||
self.save_location(filename, location, post.date_local)
|
||||
|
||||
# Update comments if desired
|
||||
if self.download_comments is Tristate.always:
|
||||
if self.download_comments is True:
|
||||
self.update_comments(filename=filename, filename_alt=filename_old, post=post)
|
||||
|
||||
# Save metadata as JSON if desired.
|
||||
if self.save_metadata is not Tristate.never:
|
||||
if self.save_metadata is not False:
|
||||
self.save_metadata_json(filename, post)
|
||||
|
||||
self.context.log()
|
||||
@ -483,19 +465,19 @@ class Instaloader:
|
||||
shortcode=shortcode)
|
||||
os.makedirs(os.path.dirname(filename), exist_ok=True)
|
||||
downloaded = False
|
||||
if not item.is_video or self.download_video_thumbnails is Tristate.always:
|
||||
if not item.is_video or self.download_video_thumbnails is True:
|
||||
url = item.url
|
||||
downloaded = self.download_pic(filename=filename,
|
||||
filename_alt=filename_old,
|
||||
url=url,
|
||||
mtime=date_local)
|
||||
if item.is_video and self.download_videos is Tristate.always:
|
||||
if item.is_video and self.download_videos is True:
|
||||
downloaded |= self.download_pic(filename=filename,
|
||||
filename_alt=filename_old,
|
||||
url=item.video_url,
|
||||
mtime=date_local)
|
||||
# Save metadata as JSON if desired.
|
||||
if self.save_metadata is not Tristate.never:
|
||||
if self.save_metadata is not False:
|
||||
self.save_metadata_json(filename, item)
|
||||
self.context.log()
|
||||
return downloaded
|
||||
@ -707,7 +689,7 @@ class Instaloader:
|
||||
profile_name = profile.username
|
||||
|
||||
# Save metadata as JSON if desired.
|
||||
if self.save_metadata is not Tristate.never:
|
||||
if self.save_metadata is not False:
|
||||
json_filename = '{0}/{1}_{2}'.format(self.dirname_pattern.format(profile=profile_name, target=profile_name),
|
||||
profile_name, profile.userid)
|
||||
self.save_metadata_json(json_filename, profile)
|
||||
|
@ -22,9 +22,9 @@ class TestInstaloader(unittest.TestCase):
|
||||
self.dir = tempfile.mkdtemp()
|
||||
print("Testing in {}".format(self.dir))
|
||||
os.chdir(self.dir)
|
||||
self.L = instaloader.Instaloader(download_geotags=instaloader.Tristate.always,
|
||||
download_comments=instaloader.Tristate.always,
|
||||
save_metadata=instaloader.Tristate.always)
|
||||
self.L = instaloader.Instaloader(download_geotags=True,
|
||||
download_comments=True,
|
||||
save_metadata=True)
|
||||
self.L.context.raise_all_errors = True
|
||||
|
||||
def tearDown(self):
|
||||
|
Loading…
Reference in New Issue
Block a user