(profile, source_url, status_code, anti_bot=False)
| 15662 | pass |
| 15663 | |
| 15664 | def _build_result(profile, source_url, status_code, anti_bot=False): |
| 15665 | if not isinstance(profile, dict): |
| 15666 | return None, base_img |
| 15667 | |
| 15668 | profile = dict(profile) |
| 15669 | now_utc = datetime.now(timezone.utc) |
| 15670 | |
| 15671 | def _fill_aliases(target, aliases): |
| 15672 | if profile.get(target) not in (None, ""): |
| 15673 | return |
| 15674 | for key in aliases: |
| 15675 | if key in profile: |
| 15676 | val = profile.get(key) |
| 15677 | if val is not None and val != "": |
| 15678 | profile[target] = val |
| 15679 | return |
| 15680 | |
| 15681 | _fill_aliases("username", ("user_name", "handle", "slug")) |
| 15682 | _fill_aliases("name", ("fullName", "full_name", "displayName", "title", "full_name")) |
| 15683 | _fill_aliases("id", ("user_id", "userId", "accountId", "account_id")) |
| 15684 | _fill_aliases("bio", ("description", "about", "bioText", "rawAbout", "raw_about")) |
| 15685 | _fill_aliases("rawAbout", ("raw_about", "rawAbout", "bio")) |
| 15686 | _fill_aliases("location", ("locationName", "city", "city_name", "town", "state", "country")) |
| 15687 | _fill_aliases("city", ("city_name", "town")) |
| 15688 | _fill_aliases("country", ("countryName", "country_name")) |
| 15689 | _fill_aliases("joinDate", ("join_date", "joinedDate", "createdAt", "created_at")) |
| 15690 | _fill_aliases("firstPublishedPostDate", ("firstPublishedAt", "firstPublished")) |
| 15691 | _fill_aliases("lastSeen", ("last_seen", "lastActive")) |
| 15692 | _fill_aliases("wishlist", ("wishList",)) |
| 15693 | _fill_aliases("website", ("page", "url", "external_url", "externalUrl")) |
| 15694 | _fill_aliases("avatar", ("avatarUrl", "profilePicture")) |
| 15695 | _fill_aliases("header", ("headerUrl", "cover", "coverUrl", "banner")) |
| 15696 | _fill_aliases("openedAt", ("profileOpenedAt", "openedDate", "dateOpened", "openDate", "open_time", "openTime", "opened")) |
| 15697 | _fill_aliases("updatedAt", ("updated_at", "lastUpdated", "last_updated", "modifiedAt", "modified_at", "lastModified", "last_modified", "lastUpdatedAt", "updateTime", "updated", "update_time")) |
| 15698 | |
| 15699 | def _parse_of_datetime(raw_ts): |
| 15700 | if not raw_ts or raw_ts is True or raw_ts is False: |
| 15701 | return None |
| 15702 | dt = None |
| 15703 | try: |
| 15704 | if isinstance(raw_ts, datetime): |
| 15705 | dt = raw_ts |
| 15706 | elif isinstance(raw_ts, (int, float)): |
| 15707 | if raw_ts <= 0: |
| 15708 | return None |
| 15709 | if raw_ts > 10**13: |
| 15710 | raw_ts = raw_ts / 1000.0 |
| 15711 | elif raw_ts > 10**10: |
| 15712 | raw_ts = raw_ts / 1000.0 |
| 15713 | dt = datetime.fromtimestamp(raw_ts, tz=timezone.utc) |
| 15714 | else: |
| 15715 | raw = str(raw_ts).strip() |
| 15716 | raw_norm = raw.replace("Z", "+00:00").replace("z", "+00:00") |
| 15717 | if re.fullmatch(r"\d{10,17}", raw_norm): |
| 15718 | n = float(raw_norm) |
| 15719 | if len(raw_norm) >= 13: |
| 15720 | n = n / 1000.0 |
| 15721 | dt = datetime.fromtimestamp(n, tz=timezone.utc) |
nothing calls this directly
no test coverage detected