Fix for ffnet's timestamp published/updated.

This commit is contained in:
Jim Miller
2013-11-13 10:56:39 -06:00
parent d6e8e69eaf
commit d78709f850
3 changed files with 23 additions and 12 deletions
+7
View File
@@ -1182,6 +1182,13 @@ extra_valid_entries:reviews,favs,follows
## to be romantic pairings.
ships_label:Pairings
## Date formats used by FFDL. Published and Update don't have time.
## See http://docs.python.org/library/datetime.html#strftime-strptime-behavior
## Note that ini format requires % to be escaped as %%.
#dateCreated_format:%%Y-%%m-%%d %%H:%%M:%%S
datePublished_format:%%Y-%%m-%%d %%H:%%M:%%S
dateUpdated_format:%%Y-%%m-%%d %%H:%%M:%%S
[www.fanfiktion.de]
## Some sites require login (or login for some rated stories) The
## program can prompt you, or you can save it in config. In
@@ -16,6 +16,7 @@
#
import time
from datetime import datetime
import logging
logger = logging.getLogger(__name__)
import re
@@ -205,6 +206,14 @@ class FanFictionNetSiteAdapter(BaseSiteAdapter):
self.story.extendList('genre',genrelist)
metalist=metalist[1:]
# Updated: <span data-xutime='1368059198'>5/8</span> - Published: <span data-xutime='1278984264'>7/12/2010</span>
# Published: <span data-xutime='1384358726'>8m ago</span>
dates = soup.findAll('span',{'data-xutime':re.compile(r'^\d+$')})
if len(dates) > 1 :
# updated get set to the same as published upstream if not found.
self.story.setMetadata('dateUpdated',datetime.fromtimestamp(float(dates[0]['data-xutime'])))
self.story.setMetadata('datePublished',datetime.fromtimestamp(float(dates[-1]['data-xutime'])))
donechars = False
while len(metalist) > 0:
if metalist[0].startswith('Chapters') or metalist[0].startswith('Status') or metalist[0].startswith('id:'):
@@ -215,18 +224,6 @@ class FanFictionNetSiteAdapter(BaseSiteAdapter):
self.story.setMetadata('favs',metalist[0].split(':')[1].strip())
elif metalist[0].startswith('Follows:'):
self.story.setMetadata('follows',metalist[0].split(':')[1].strip())
elif metalist[0].startswith('Updated'):
datefield = metalist[0].split(':')[1].strip()
format = '%m/%d/%Y'
if datefield.count('/') == 1:
format = '%m/%d'
self.story.setMetadata('dateUpdated',makeDate(datefield, format))
elif metalist[0].startswith('Published'):
datefield = metalist[0].split(':')[1].strip()
format = '%m/%d/%Y'
if datefield.count('/') == 1:
format = '%m/%d'
self.story.setMetadata('datePublished',makeDate(datefield, format))
elif metalist[0].startswith('Words'):
self.story.setMetadata('numWords',metalist[0].split(':')[1].strip())
elif not donechars:
+7
View File
@@ -1167,6 +1167,13 @@ extra_valid_entries:reviews,favs,follows
## to be romantic pairings.
ships_label:Pairings
## Date formats used by FFDL. Published and Update don't have time.
## See http://docs.python.org/library/datetime.html#strftime-strptime-behavior
## Note that ini format requires % to be escaped as %%.
#dateCreated_format:%%Y-%%m-%%d %%H:%%M:%%S
datePublished_format:%%Y-%%m-%%d %%H:%%M:%%S
dateUpdated_format:%%Y-%%m-%%d %%H:%%M:%%S
[www.fanfiktion.de]
## Some sites require login (or login for some rated stories) The
## program can prompt you, or you can save it in config. In