.oO SearXNG Developer Documentation Oo.
Loading...
Searching...
No Matches
searx.engines.wikidata.WDDateAttribute Class Reference
+ Inheritance diagram for searx.engines.wikidata.WDDateAttribute:
+ Collaboration diagram for searx.engines.wikidata.WDDateAttribute:

Public Member Functions

 get_select (self)
 
 get_where (self)
 
 get_group_by (self)
 
 format_8 (self, value, locale)
 
 format_9 (self, value, locale)
 
 format_10 (self, value, locale)
 
 format_11 (self, value, locale)
 
 format_13 (self, value, locale)
 
 format_14 (self, value, locale)
 
 get_str (self, result, language)
 
- Public Member Functions inherited from searx.engines.wikidata.WDAttribute
 __init__ (self, name)
 
 get_label (self, language)
 
 get_wikibase_label (self)
 
 __repr__ (self)
 

Static Public Attributes

dict DATE_FORMAT
 

Additional Inherited Members

- Public Attributes inherited from searx.engines.wikidata.WDAttribute
 name = name
 

Detailed Description

Definition at line 691 of file wikidata.py.

Member Function Documentation

◆ format_10()

searx.engines.wikidata.WDDateAttribute.format_10 ( self,
value,
locale )

Definition at line 726 of file wikidata.py.

726 def format_10(self, value, locale):
727 # precision: month
728 timestamp = isoparse(value)
729 return format_date(timestamp, format='MMMM y', locale=locale)
730

◆ format_11()

searx.engines.wikidata.WDDateAttribute.format_11 ( self,
value,
locale )

Definition at line 731 of file wikidata.py.

731 def format_11(self, value, locale):
732 # precision: day
733 timestamp = isoparse(value)
734 return format_date(timestamp, format='full', locale=locale)
735

◆ format_13()

searx.engines.wikidata.WDDateAttribute.format_13 ( self,
value,
locale )

Definition at line 736 of file wikidata.py.

736 def format_13(self, value, locale):
737 timestamp = isoparse(value)
738 # precision: minute
739 return (
740 get_datetime_format(format, locale=locale)
741 .replace("'", "")
742 .replace('{0}', format_time(timestamp, 'full', tzinfo=None, locale=locale))
743 .replace('{1}', format_date(timestamp, 'short', locale=locale))
744 )
745

◆ format_14()

searx.engines.wikidata.WDDateAttribute.format_14 ( self,
value,
locale )

Definition at line 746 of file wikidata.py.

746 def format_14(self, value, locale):
747 # precision: second.
748 return format_datetime(isoparse(value), format='full', locale=locale)
749

◆ format_8()

searx.engines.wikidata.WDDateAttribute.format_8 ( self,
value,
locale )

Definition at line 712 of file wikidata.py.

712 def format_8(self, value, locale): # pylint: disable=unused-argument
713 # precision: less than a year
714 return value
715

◆ format_9()

searx.engines.wikidata.WDDateAttribute.format_9 ( self,
value,
locale )

Definition at line 716 of file wikidata.py.

716 def format_9(self, value, locale):
717 year = int(value)
718 # precision: year
719 if year < 1584:
720 if year < 0:
721 return str(year - 1)
722 return str(year)
723 timestamp = isoparse(value)
724 return format_date(timestamp, format='yyyy', locale=locale)
725

◆ get_group_by()

searx.engines.wikidata.WDDateAttribute.get_group_by ( self)

Reimplemented from searx.engines.wikidata.WDAttribute.

Definition at line 709 of file wikidata.py.

709 def get_group_by(self):
710 return self.get_select()
711

References searx.engines.wikidata.WDAttribute.get_select().

+ Here is the call graph for this function:

◆ get_select()

searx.engines.wikidata.WDDateAttribute.get_select ( self)

Reimplemented from searx.engines.wikidata.WDAttribute.

Definition at line 692 of file wikidata.py.

692 def get_select(self):
693 return '?{name} ?{name}timePrecision ?{name}timeZone ?{name}timeCalendar'.replace('{name}', self.name)
694

◆ get_str()

searx.engines.wikidata.WDDateAttribute.get_str ( self,
result,
language )

Reimplemented from searx.engines.wikidata.WDAttribute.

Definition at line 768 of file wikidata.py.

768 def get_str(self, result, language):
769 value = result.get(self.name)
770 if value == '' or value is None:
771 return None
772 precision = result.get(self.name + 'timePrecision')
773 date_format = WDDateAttribute.DATE_FORMAT.get(precision)
774 if date_format is not None:
775 format_method = getattr(self, date_format[0])
776 precision = date_format[1]
777 try:
778 if precision >= 1:
779 t = value.split('-')
780 if value.startswith('-'):
781 value = '-' + t[1]
782 else:
783 value = t[0]
784 return format_method(value, language)
785 except Exception: # pylint: disable=broad-except
786 return value
787 return value
788
789

References searx.engines.wikidata.WDAttribute.name.

◆ get_where()

searx.engines.wikidata.WDDateAttribute.get_where ( self)

Reimplemented from searx.engines.wikidata.WDAttribute.

Definition at line 695 of file wikidata.py.

695 def get_where(self):
696 # To remove duplicate, add
697 # FILTER NOT EXISTS { ?item p:{name}/psv:{name}/wikibase:timeValue ?{name}bis FILTER (?{name}bis < ?{name}) }
698 # this filter is too slow, so the response function ignore duplicate results
699 # (see the seen_entities variable)
700 return """OPTIONAL { ?item p:{name}/psv:{name} [
701 wikibase:timeValue ?{name} ;
702 wikibase:timePrecision ?{name}timePrecision ;
703 wikibase:timeTimezone ?{name}timeZone ;
704 wikibase:timeCalendarModel ?{name}timeCalendar ] . }
705 hint:Prior hint:rangeSafe true;""".replace(
706 '{name}', self.name
707 )
708

References searx.engines.wikidata.WDAttribute.name.

Member Data Documentation

◆ DATE_FORMAT

dict searx.engines.wikidata.WDDateAttribute.DATE_FORMAT
static
Initial value:
= {
'0': ('format_8', 1000000000),
'1': ('format_8', 100000000),
'2': ('format_8', 10000000),
'3': ('format_8', 1000000),
'4': ('format_8', 100000),
'5': ('format_8', 10000),
'6': ('format_8', 1000),
'7': ('format_8', 100),
'8': ('format_8', 10),
'9': ('format_9', 1), # year
'10': ('format_10', 1), # month
'11': ('format_11', 0), # day
'12': ('format_13', 0), # hour (not supported by babel, display minute)
'13': ('format_13', 0), # minute
'14': ('format_14', 0), # second
}

Definition at line 750 of file wikidata.py.


The documentation for this class was generated from the following file: