How to use the instaloader.ProfileNotExistsException function in instaloader

To help you get started, we’ve selected a few instaloader examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github instaloader / instaloader / instaloader / __main__.py View on Github external
post_filter=post_filter)
                elif target == ":feed":
                    instaloader.download_feed_posts(fast_update=fast_update, max_count=max_count,
                                                    post_filter=post_filter)
                elif target == ":stories":
                    instaloader.download_stories(fast_update=fast_update, storyitem_filter=storyitem_filter)
                elif target == ":saved":
                    instaloader.download_saved_posts(fast_update=fast_update, max_count=max_count,
                                                     post_filter=post_filter)
                elif re.match(r"^[A-Za-z0-9._]+$", target):
                    try:
                        profile = instaloader.check_profile_id(target)
                        if instaloader.context.is_logged_in and profile.has_blocked_viewer:
                            if download_profile_pic or ((download_posts or download_tagged or download_igtv)
                                                        and not profile.is_private):
                                raise ProfileNotExistsException("{} blocked you; But we download her anonymously."
                                                                .format(target))
                            else:
                                instaloader.context.error("{} blocked you.".format(target))
                        else:
                            profiles.add(profile)
                    except ProfileNotExistsException as err:
                        # Not only our profile.has_blocked_viewer condition raises ProfileNotExistsException,
                        # check_profile_id() also does, since access to blocked profile may be responded with 404.
                        if instaloader.context.is_logged_in and (download_profile_pic or download_posts or
                                                                 download_tagged or download_igtv):
                            instaloader.context.log(err)
                            instaloader.context.log("Trying again anonymously, helps in case you are just blocked.")
                            with instaloader.anonymous_copy() as anonymous_loader:
                                with instaloader.context.error_catcher():
                                    anonymous_retry_profiles.add(anonymous_loader.check_profile_id(target))
                                    instaloader.context.error("Warning: {} will be downloaded anonymously (\"{}\")."
github instaloader / instaloader / instaloader.py View on Github external
def download_profile(self, name: str,
                         profile_pic: bool = True, profile_pic_only: bool = False,
                         fast_update: bool = False,
                         download_stories: bool = False, download_stories_only: bool = False,
                         filter_func: Optional[Callable[[Post], bool]] = None) -> None:
        """Download one profile"""
        name = name.lower()

        # Get profile main page json
        profile_metadata = None
        with suppress(ProfileNotExistsException):
            # ProfileNotExistsException is raised again later in check_profile_id() when we search the profile, so we
            # must suppress it here.
            profile_metadata, full_metadata = self.get_profile_metadata(name)

        # check if profile does exist or name has changed since last download
        # and update name and json data if necessary
        name_updated, profile_id = self.check_profile_id(name, profile_metadata)
        if name_updated != name:
            name = name_updated
            profile_metadata, full_metadata = self.get_profile_metadata(name)

        # Download profile picture
        if profile_pic or profile_pic_only:
            with self._error_catcher('Download profile picture of {}'.format(name)):
                self.download_profilepic(name, profile_metadata)
        if profile_pic_only:
github instaloader / instaloader / instaloader.py View on Github external
def get_username_by_id(self, profile_id: int) -> str:
        """To get the current username of a profile, given its unique ID, this function can be used."""
        data = self.graphql_query(17862015703145017, {'id': str(profile_id), 'first': 1})['data']['user']
        if data:
            data = data["edge_owner_to_timeline_media"]
        else:
            raise ProfileNotExistsException("No profile found, the user may have blocked you (ID: " +
                                            str(profile_id) + ").")
        if not data['edges']:
            if data['count'] == 0:
                raise ProfileHasNoPicsException("Profile with ID {0}: no pics found.".format(str(profile_id)))
            else:
                raise LoginRequiredException("Login required to determine username (ID: " + str(profile_id) + ").")
        else:
            return Post.from_mediaid(self, int(data['edges'][0]["node"]["id"])).owner_username
github instaloader / instaloader / instaloader.py View on Github external
def get_profile_metadata(self, profile_name: str) -> Tuple[Dict[str, Any], Dict[str, Any]]:
        """Retrieves a profile's metadata, for use with e.g. :meth:`get_profile_posts` and :meth:`check_profile_id`."""
        try:
            metadata = self.get_json('{}/'.format(profile_name), params={})
            return metadata['entry_data']['ProfilePage'][0]['graphql'], metadata
        except QueryReturnedNotFoundException:
            raise ProfileNotExistsException('Profile {} does not exist.'.format(profile_name))
github instaloader / instaloader / instaloader.py View on Github external
else:
                    os.rename('{0}/{1}_id'.format(self.dirname_pattern.format(), profile.lower()),
                              '{0}/{1}_id'.format(self.dirname_pattern.format(), newname.lower()))
                return newname, profile_id
            return profile, profile_id
        except FileNotFoundError:
            pass
        if profile_exists:
            os.makedirs(self.dirname_pattern.format(profile=profile.lower(),
                                                    target=profile.lower()), exist_ok=True)
            with open(id_filename, 'w') as text_file:
                profile_id = profile_metadata['user']['id']
                text_file.write(profile_id + "\n")
                self._log("Stored ID {0} for profile {1}.".format(profile_id, profile))
            return profile, profile_id
        raise ProfileNotExistsException("Profile {0} does not exist.".format(profile))
github instaloader / instaloader / instaloader.py View on Github external
with self._error_catcher():
                            self.download_saved_posts(fast_update=fast_update, max_count=max_count,
                                                      filter_func=filter_func)
                    else:
                        self.error("--login=USERNAME required to download {}.".format(pentry))
                else:
                    targets.add(pentry)
            if len(targets) > 1:
                self._log("Downloading {} profiles: {}".format(len(targets), ','.join(targets)))
            # Iterate through targets list and download them
            for target in targets:
                with self._error_catcher():
                    try:
                        self.download_profile(target, profile_pic, profile_pic_only, fast_update, stories, stories_only,
                                              filter_func=filter_func)
                    except ProfileNotExistsException as err:
                        if username is not None:
                            self._log(err)
                            self._log("Trying again anonymously, helps in case you are just blocked.")
                            with self.anonymous_copy() as anonymous_loader:
                                with self._error_catcher():
                                    anonymous_loader.download_profile(target, profile_pic, profile_pic_only,
                                                                      fast_update, filter_func=filter_func)
                        else:
                            raise err
        except KeyboardInterrupt:
            print("\nInterrupted by user.", file=sys.stderr)
        # Save session if it is useful
        if username is not None:
            self.save_session_to_file(sessionfile)
        # User might be confused if Instaloader does nothing
        if not profilelist: