Iceloof / GoogleNews

Script for GoogleNews
https://pypi.org/project/GoogleNews/
MIT License
314 stars 88 forks source link

I want to get datetime in Japanese news. #58

Open taruscript opened 3 years ago

taruscript commented 3 years ago

Currently, I did get news in Japanese, datetime is set to None. But I did changed language to en, datetime is setted. please fix it.

from GoogleNews import GoogleNews
import datetime

dt_now = datetime.datetime.now().date()

googlenews = GoogleNews(lang="ja", encode='utf-8')
googlenews.set_time_range(start=dt_now, end=dt_now)
googlenews.get_news("ビットコイン")
results = googlenews.results()

for result in results:
    print(result["datetime"])
HurinHu commented 3 years ago

result['date'] is working, datetime is not always available, will check alternative solution later.

adam-az commented 2 years ago

I had the same problem for Dutch. Apparently now the date is being returned in the local language? For Dutch news, this means you need to use:

  def define_date(date):
        months = {"jan": 1, "feb": 2, "mar": 3, "apr": 4, "mei": 5, "jun": 6, "jul": 7, "aug": 8, "sep": 9, "okt": 10,
                  "nov": 11, "dec": 12}
        try:
            if "geleden" in date.lower():
                q = int(date.split()[-3])
                if re.search(r"(minuten|minuut)", date.lower()):
                    return dt.datetime.now() + relativedelta(minutes=-q)
                elif re.search(r"(uur|uren)", date.lower()):
                    return dt.datetime.now() + relativedelta(hours=-q)
                elif re.search(r"(dag|dagen)", date.lower()):
                    return dt.datetime.now() + relativedelta(days=-q)
                elif re.search(r"(week|weken)", date.lower()):
                    return dt.datetime.now() + relativedelta(days=-7 * q)
                elif re.search(r"(maand|maanden)", date.lower()):
                    return dt.datetime.now() + relativedelta(months=-q)
            elif "gisteren" in date.lower():
                return dt.datetime.now() + relativedelta(days=-1)
            else:
                for month in months.keys():
                    if month.lower() + " " in date.lower():
                        date_list = date.replace(",", "").split()[-3:]
                        return dt.datetime(day=int(date_list[1]), month=months[month], year=int(date_list[2]))
        except:
            return float("nan")

The function would need to be adapted for every language.