def __init__(self, mid=0, page=None, fromImage=False): if page is not None: self.artistId = mid payload = parseJs(page) # check error if payload is None: if self.is_not_logged_in(page): raise PixivException('Not Logged In!', errorCode=PixivException.NOT_LOGGED_IN, htmlPage=page) if self.IsUserNotExist(page): raise PixivException('User ID not exist/deleted!', errorCode=PixivException.USER_ID_NOT_EXISTS, htmlPage=page) if self.IsUserSuspended(page): raise PixivException('User Account is Suspended!', errorCode=PixivException.USER_ID_SUSPENDED, htmlPage=page) # detect if there is any other error errorMessage = self.IsErrorExist(page) if errorMessage is not None: raise PixivException('Member Error: ' + errorMessage, errorCode=PixivException.OTHER_MEMBER_ERROR, htmlPage=page) # detect if there is server error errorMessage = self.IsServerErrorExist(page) if errorMessage is not None: raise PixivException('Member Error: ' + errorMessage, errorCode=PixivException.SERVER_ERROR, htmlPage=page) # detect if image count != 0 if not fromImage: # self.ParseImages(payload) raise NotImplementedError else: self.isLastPage = True self.haveImages = True # parse artist info self.ParseInfo(payload, fromImage)
def __init__(self, mid=0, page=None, fromImage=False, offset=None, limit=None): self.offset = offset self.limit = limit if page is not None: self.artistId = mid payload = parseJs(page) # detect if image count != 0 if not fromImage: payload = demjson.decode(page) if payload["error"]: raise PixivException( payload["message"], errorCode=PixivException.OTHER_MEMBER_ERROR, htmlPage=page) if payload["body"] is None: raise PixivException( "Missing body content, possible artist id doesn't exists.", errorCode=PixivException.USER_ID_NOT_EXISTS, htmlPage=page) self.ParseImages(payload["body"]) else: self.isLastPage = True self.haveImages = True # parse artist info self.ParseInfo(payload, fromImage)
def __init__(self, mid=0, page=None, fromImage=False): if page is not None: self.artistId = mid payload = json.loads(page) # check error if payload["error"] == True: raise PixivException('Artist Error: ' + str(payload["error"]), errorCode=PixivException.SERVER_ERROR) # detect if image count != 0 if not fromImage: self.ParseImages(payload) # parse artist info self.ParseInfo(payload, fromImage)
def __init__(self, iid=0, page=None, parent=None, fromBookmark=False, bookmark_count=-1, image_response_count=-1, dateFormat=None): self.artist = parent self.fromBookmark = fromBookmark self.bookmark_count = bookmark_count self.imageId = iid self.imageUrls = [] self.dateFormat = dateFormat self.descriptionUrlList = [] if page is not None: payload = parseJs(page) # check error if payload is None: if self.IsNotLoggedIn(page): raise PixivException('Not Logged In!', errorCode=PixivException.NOT_LOGGED_IN, htmlPage=page) if self.IsNeedPermission(page): raise PixivException('Not in MyPick List, Need Permission!', errorCode=PixivException.NOT_IN_MYPICK, htmlPage=page) if self.IsNeedAppropriateLevel(page): raise PixivException('Public works can not be viewed by the appropriate level!', errorCode=PixivException.NO_APPROPRIATE_LEVEL, htmlPage=page) if self.IsDeleted(page): raise PixivException('Image not found/already deleted!', errorCode=PixivException.IMAGE_DELETED, htmlPage=page) if self.IsGuroDisabled(page): raise PixivException('Image is disabled for under 18, check your setting page (R-18/R-18G)!', errorCode=PixivException.R_18_DISABLED, htmlPage=page) # detect if there is any other error errorMessage = self.IsErrorExist(page) if errorMessage is not None: raise PixivException('Image Error: ' + str(errorMessage), errorCode=PixivException.UNKNOWN_IMAGE_ERROR, htmlPage=page) # detect if there is server error errorMessage = self.IsServerErrorExist(page) if errorMessage is not None: raise PixivException('Image Error: ' + str(errorMessage), errorCode=PixivException.SERVER_ERROR, htmlPage=page) # parse artist information if parent is None: temp_artist_id = list(payload["preload"]["user"].keys())[0] self.artist = PixivArtist(temp_artist_id, page, fromImage=True) if fromBookmark and self.originalArtist is None: assert(self.artist is not None) self.originalArtist = PixivArtist(page=page, fromImage=True) print("From Artist Bookmark: {0}".format(self.artist.artistId)) print("Original Artist: {0}".format(self.originalArtist.artistId)) else: self.originalArtist = self.artist # parse image self.ParseInfo(payload)
def parseTags(self, page, query=""): payload = json.loads(page) self.query = query # check error if payload["error"]: raise PixivException('Image Error: ' + payload["message"], errorCode=PixivException.SERVER_ERROR) # parse image information parsed = BeautifulSoup(payload["body"]["html"]) self.itemList = list() images = parsed.findAll("div", attrs={"class": self.__re_imageItemClass}) for item in images: thumbnail_container = item.find( "div", attrs={"class": "thumbnail-container"}) image_details = thumbnail_container.find( "a", attrs={"class": "_work-modal-target user-activity"}) image_id = image_details["data-work-id"] # like count status_container = thumbnail_container.find( "div", attrs={"class": "status-container"}) bookmarkCount = status_container.text imageResponse = 0 self.itemList.append( PixivModel.PixivTagsItem(int(image_id), int(bookmarkCount), int(imageResponse))) if len(self.itemList) > 0: self.haveImage = True else: self.haveImage = False # search page info self.availableImages = int(payload["body"]["total"]) if len(payload["body"]["next_url"]) > 0: self.isLastPage = False else: self.isLastPage = True return self.itemList
def __init__(self, iid=0, page=None, parent=None, fromBookmark=False, bookmark_count=-1, image_response_count=-1, dateFormat=None): self.artist = parent self.fromBookmark = fromBookmark self.bookmark_count = bookmark_count self.imageId = iid self.imageUrls = [] self.dateFormat = dateFormat self.descriptionUrlList = [] if page is not None: payload = json.loads(page) # check error if payload["error"] == True: raise PixivException('Image Error: ' + payload["message"], errorCode=PixivException.SERVER_ERROR) # parse image information parsed = BeautifulSoup(payload["body"]["html"]) # parse artist information if parent is None: parsed = BeautifulSoup(payload["body"]["html"]) artist_container = parsed.find( 'div', attrs={'class': 'header-author-container'}) artist_link = artist_container.find( 'a', attrs={'class': 'user-view-popup'}) artistId = int(artist_link['data-user_id']) self.artist = PixivArtist(artistId, page, fromImage=True) if fromBookmark and self.originalArtist is None: self.originalArtist = PixivArtist(page=page, fromImage=True) else: self.originalArtist = self.artist # parse image self.ParseInfo(parsed)