guoguo12/billboard-charts

Previous date field is not filled

Opened this issue · 3 comments

I'm trying to retrieve chart data for consecutive weeks, and I have some basic test code that looks like this:

import billboard

chart = billboard.ChartData('hot-100', date='2019-11-09')

print(chart)
print(chart.previousDate)

The correct chart is retrieved, but the previousDate field is always None. This is true whether I query for a specific date or leave it as the default latest chart.

Looks like this is a known issue.

It doesn't look like the Billboard page provides a link to a previous or next chart date anymore. Am I missing one of those links on this page?

I didn't realize that was deprecated - apologies! Is there a new recommended way to iterate through charts over time? Should I just de-format and re-format the date a week earlier?

No need to apologize! I didn't realize it was deprecated till I dug into the code.

I think manually iterating through the dates you're interested in is your best bet. Here's an example from ChatGPT of how you could do it:

import datetime

def iterate_dates_in_month(year, month):
    # Create a date object for the first day of the month
    current_date = datetime.date(year, month, 1)

    # Calculate the last day of the month
    last_day = (current_date.replace(month=current_date.month % 12 + 1, day=1) - datetime.timedelta(days=1))

    # Iterate through the dates in the month
    while current_date <= last_day:
        yield current_date
        current_date += datetime.timedelta(days=1)

# Example usage:
import billboard


year = 2023
month = 9
for date in iterate_dates_in_month(year, month):
    print(date)
    chart = billboard.ChartData('hot-100', date=date)
    print(chart)

What do you think?