Fix strptime issue
This commit is contained in:
@@ -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="/"
|
||||||
|
|||||||
14
newsfeed.py
14
newsfeed.py
@@ -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'
|
||||||
|
|||||||
81
utility.py
81
utility.py
@@ -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):
|
||||||
|
|||||||
Reference in New Issue
Block a user