Fix get top billionaires BROKEN file (#8970)

* updating DIRECTORY.md

* fix(get-top-billionaires): Handle timestamp before epoch

* updating DIRECTORY.md

* revert(pyproject): Re-implement ignore lru_cache

* fix(age): Update age to current year

* fix(doctest): Make years since dynamic

---------

Co-authored-by: github-actions <${GITHUB_ACTOR}@users.noreply.github.com>
This commit is contained in:
Caeden Perelli-Harris 2023-08-18 13:13:38 +01:00 committed by GitHub
parent 72c7b05caa
commit 5f7819e1cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 7 deletions

View File

@ -1221,6 +1221,7 @@
* [Get Amazon Product Data](web_programming/get_amazon_product_data.py) * [Get Amazon Product Data](web_programming/get_amazon_product_data.py)
* [Get Imdb Top 250 Movies Csv](web_programming/get_imdb_top_250_movies_csv.py) * [Get Imdb Top 250 Movies Csv](web_programming/get_imdb_top_250_movies_csv.py)
* [Get Imdbtop](web_programming/get_imdbtop.py) * [Get Imdbtop](web_programming/get_imdbtop.py)
* [Get Top Billionaires](web_programming/get_top_billionaires.py)
* [Get Top Hn Posts](web_programming/get_top_hn_posts.py) * [Get Top Hn Posts](web_programming/get_top_hn_posts.py)
* [Get User Tweets](web_programming/get_user_tweets.py) * [Get User Tweets](web_programming/get_user_tweets.py)
* [Giphy](web_programming/giphy.py) * [Giphy](web_programming/giphy.py)

View File

@ -3,7 +3,7 @@ CAUTION: You may get a json.decoding error.
This works for some of us but fails for others. This works for some of us but fails for others.
""" """
from datetime import datetime from datetime import UTC, datetime, timedelta
import requests import requests
from rich import box from rich import box
@ -20,18 +20,31 @@ API_URL = (
) )
def calculate_age(unix_date: int) -> str: def calculate_age(unix_date: float) -> str:
"""Calculates age from given unix time format. """Calculates age from given unix time format.
Returns: Returns:
Age as string Age as string
>>> calculate_age(-657244800000) >>> from datetime import datetime, UTC
'73' >>> years_since_create = datetime.now(tz=UTC).year - 2022
>>> calculate_age(46915200000) >>> int(calculate_age(-657244800000)) - years_since_create
'51' 73
>>> int(calculate_age(46915200000)) - years_since_create
51
""" """
birthdate = datetime.fromtimestamp(unix_date / 1000).date() # Convert date from milliseconds to seconds
unix_date /= 1000
if unix_date < 0:
# Handle timestamp before epoch
epoch = datetime.fromtimestamp(0, tz=UTC)
seconds_since_epoch = (datetime.now(tz=UTC) - epoch).seconds
birthdate = (
epoch - timedelta(seconds=abs(unix_date) - seconds_since_epoch)
).date()
else:
birthdate = datetime.fromtimestamp(unix_date, tz=UTC).date()
return str( return str(
TODAY.year TODAY.year
- birthdate.year - birthdate.year