Fix strptime issue

This commit is contained in:
2026-01-29 23:02:55 -05:00
parent db1ef5f9ed
commit 91383d8687
3 changed files with 72 additions and 29 deletions

View File

@@ -28,7 +28,7 @@ CACHE_EXPIRY_MINS=10
LOG_HTTP_RESPONSES = False LOG_HTTP_RESPONSES = False
FEED_REJECT_IF_OLDER_THAN_DAYS = 7 FEED_REJECT_IF_OLDER_THAN_DAYS = 60
class PathHelper: class PathHelper:
pathChar="/" pathChar="/"

View File

@@ -113,7 +113,6 @@ class NewsFeed:
if video is not None and not (video.description in videos): if video is not None and not (video.description in videos):
videos[video.description]=video videos[video.description]=video
video.setFeedTime(DateTimeHelper.applyRelativeTime(now,video.feedTimeOffset)) video.setFeedTime(DateTimeHelper.applyRelativeTime(now,video.feedTimeOffset))
# videoList=list(videos.values())
videoList=self.filterFeedMaxDays(list(videos.values()),FEED_REJECT_IF_OLDER_THAN_DAYS) videoList=self.filterFeedMaxDays(list(videos.values()),FEED_REJECT_IF_OLDER_THAN_DAYS)
videoList=sorted(videoList, key=lambda x:x.getFeedTime(),reverse=True) videoList=sorted(videoList, key=lambda x:x.getFeedTime(),reverse=True)
self.writeFeedCache(cachePathFileName,videoList) self.writeFeedCache(cachePathFileName,videoList)
@@ -447,6 +446,19 @@ def parseDuration(strDuration):
# DON'T LEAVE ANYTHING OPEN BELOW THIS LINE BECAUSE THIS FILE IS IMPORTED BY OTHER MODULES AND ANY CODE NOT IN A CLASS WILL BE RUN # DON'T LEAVE ANYTHING OPEN BELOW THIS LINE BECAUSE THIS FILE IS IMPORTED BY OTHER MODULES AND ANY CODE NOT IN A CLASS WILL BE RUN
# strdate = "January 1, 2026"
# if DateTimeHelper.canstrptimeex(strdate):
# theDate = DateTimeHelper.strptimeex(strdate)
# if(not isinstance(theDate,datetime)):
# raise Exception('Invalid type for parameter')
# feedTimeOffset = "January 13, 2025"
# currentTime = datetime.now()
# for i in range(1,100):
# relativeTime = DateTimeHelper.applyRelativeTime(currentTime,feedTimeOffset)
# print(relativeTime)
#print(FOX_NEWS_URL) #print(FOX_NEWS_URL)
# pathFileName='/home/pi/.kodi/addons/plugin.video.fox.news/resources/lib/videodb.txt' # pathFileName='/home/pi/.kodi/addons/plugin.video.fox.news/resources/lib/videodb.txt'

View File

@@ -117,66 +117,97 @@ class DateTimeHelper:
def getCurrentDateTime(): def getCurrentDateTime():
return datetime.now() return datetime.now()
# January 1, 2026
@staticmethod @staticmethod
def strptime(theTime,theFormat): def strptime(date_string):
try: month_map = {
return datetime.strptime(theTime,theFormat) 'January': 1, 'February': 2, 'March': 3, 'April': 4,
except: 'May': 5, 'June': 6, 'July': 7, 'August': 8,
return datetime(*(time.strptime(theTime,theFormat)[0:6])) 'September': 9, 'October': 10, 'November': 11, 'December': 12
}
date_string = date_string.replace(',', '')
parts = date_string.split()
if len(parts) == 3:
month_str, day_str, year_str = parts
month = month_map.get(month_str)
day = int(day_str)
year = int(year_str)
if month is not None:
return datetime(year, month, day)
else:
raise ValueError("Invalid month name in date string")
else:
raise ValueError("Date string format is incorrect")
# January 1, 2026
@staticmethod @staticmethod
def canstrptime(theTime,theFormat): def canstrptime(date_string):
try: month_map = {
datetime.strptime(theTime,theFormat) 'January': 1, 'February': 2, 'March': 3, 'April': 4,
return True 'May': 5, 'June': 6, 'July': 7, 'August': 8,
except: 'September': 9, 'October': 10, 'November': 11, 'December': 12
}
date_string = date_string.replace(',', '')
parts = date_string.split()
if len(parts) != 3:
return False return False
month_str, day_str, year_str = parts
month = month_map.get(month_str)
if month is None:
return False
day = int(day_str)
year = int(year_str)
return True
# returns a datetime # returns a datetime
@staticmethod @staticmethod
def applyRelativeTime(sometime,relativetime): def applyRelativeTime(sometime,relativetime):
relativeTimeResult = sometime
if(not isinstance(sometime,datetime)): if(not isinstance(sometime,datetime)):
raise Exception('Invalid type for parameter') raise Exception('Invalid type for parameter')
if(not isinstance(relativetime,str)): if(not isinstance(relativetime,str)):
raise Exception('Invalid type for parameter') raise Exception('Invalid type for parameter')
if DateTimeHelper.canstrptime(relativetime,'%B %d, %Y'): if DateTimeHelper.canstrptime(relativetime):
sometime = DateTimeHelper.strptime(relativetime,'%B %d, %Y') relativeTimeResult = DateTimeHelper.strptime(relativetime)
return sometime return relativeTimeResult
if relativetime=='just now': if relativetime=='just now':
return sometime return relativeTimeResult
if relativetime=='just in': if relativetime=='just in':
return sometime return relativeTimeResult
relativetimesplit=relativetime.split() relativetimesplit=relativetime.split()
if len(relativetimesplit)==2: if len(relativetimesplit)==2:
year=datetime.now().year year=datetime.now().year
relativetimex=relativetime+', '+str(year) relativetimex=relativetime+', '+str(year)
relativeDate = DateTimeHelper.strptime(relativetimex, '%B %d, %Y') relativeDate = DateTimeHelper.strptime(relativetimex)
if(relativeDate>datetime.now()): if(relativeDate>datetime.now()):
year=datetime.now().year-1 year=datetime.now().year-1
relativetimex=relativetime+', '+str(year) relativetimex=relativetime+', '+str(year)
relativeDate=DateTimeHelper.strptime(relativetimex,'%B %d, %Y') relativeDate=DateTimeHelper.strptime(relativetimex)
days=sometime-relativeDate days=sometime-relativeDate
sometime=sometime-days relativeTimeResult=sometime-days
elif relativetimesplit[1]=='hour' or relativetimesplit[1]=='hours': elif relativetimesplit[1]=='hour' or relativetimesplit[1]=='hours':
hours=int(relativetimesplit[0]) hours=int(relativetimesplit[0])
sometime=sometime-timedelta(hours=hours) relativeTimeResult=sometime-timedelta(hours=hours)
elif relativetimesplit[1]=='day' or relativetimesplit[1]=='days': elif relativetimesplit[1]=='day' or relativetimesplit[1]=='days':
days=int(relativetimesplit[0]) days=int(relativetimesplit[0])
sometime=sometime-timedelta(days=days) relativeTimeResult=sometime-timedelta(days=days)
elif relativetimesplit[1]=='minute' or relativetimesplit[1]=='minutes': elif relativetimesplit[1]=='minute' or relativetimesplit[1]=='minutes':
minutes=int(relativetimesplit[0]) minutes=int(relativetimesplit[0])
sometime=sometime-timedelta(minutes=minutes) relativeTimeResult=sometime-timedelta(minutes=minutes)
elif len(relativetimesplit)==3: # '16 mins ago' '2 hours ago' elif len(relativetimesplit)==3: # '16 mins ago' '2 hours ago'
if relativetimesplit[1]=='mins': if relativetimesplit[1]=='mins':
minutes=int(relativetimesplit[0]) minutes=int(relativetimesplit[0])
sometime=sometime-timedelta(minutes=minutes) relativeTimeResult=sometime-timedelta(minutes=minutes)
elif relativetimesplit[1]=='hours': elif relativetimesplit[1]=='hours':
hours=int(relativetimesplit[0]) hours=int(relativetimesplit[0])
sometime=sometime-timedelta(hours=hours) relativeTimeResult=sometime-timedelta(hours=hours)
elif relativetimesplit[1]=='day' or relativetimesplit[1]=='days': elif relativetimesplit[1]=='day' or relativetimesplit[1]=='days':
days=int(relativetimesplit[0]) days=int(relativetimesplit[0])
sometime=sometime-timedelta(days=days) relativeTimeResult=sometime-timedelta(days=days)
return sometime return relativeTimeResult
class DateTime: class DateTime:
def __init__(self): def __init__(self):