reference-entry-source.rst 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482
  1. .. _reference.entry.source:
  2. :py:attr:`entries[i].source`
  3. ============================
  4. A dictionary with details about the source of the entry.
  5. .. rubric:: Comes from
  6. * /atom10:feed/atom10:entry/atom10:source
  7. :py:attr:`entries[i].source.author`
  8. -----------------------------------
  9. The author of the source of this entry.
  10. :py:attr:`entries[i].source.author_detail`
  11. ------------------------------------------
  12. A dictionary containing details about the author of the source of this entry.
  13. :py:attr:`entries[i].source.author_detail.name`
  14. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  15. The name of the author of the source of this entry.
  16. .. _reference.entry.source.author_detail.href:
  17. :py:attr:`entries[i].source.author_detail.href`
  18. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  19. The :abbr:`URL (Uniform Resource Locator)` of the author of the source of this
  20. entry. This can be the author's home page, or a contact page with a webmail
  21. form.
  22. If this is a relative :abbr:`URI (Uniform Resource Identifier)`, it is
  23. :ref:`resolved according to a set of rules <advanced.base>`.
  24. :py:attr:`entries[i].source.author_detail.email`
  25. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  26. The email address of the author of the source of this entry.
  27. :py:attr:`entries[i].source.contributors`
  28. -----------------------------------------
  29. A list of contributors to the source of this entry.
  30. :py:attr:`entries[i].source.contributors[j].name`
  31. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  32. The name of a contributor to the source of this entry.
  33. .. _reference.entry.source.contributors.href:
  34. :py:attr:`entries[i].source.contributors[j].href`
  35. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  36. The :abbr:`URL (Uniform Resource Locator)` of a contributor to the source of
  37. this entry. This can be the contributor's home page, or a contact page with a
  38. webmail form.
  39. If this is a relative :abbr:`URI (Uniform Resource Identifier)`, it is
  40. :ref:`resolved according to a set of rules <advanced.base>`.
  41. :py:attr:`entries[i].source.contributors[j].email`
  42. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  43. The email address of a contributor to the source of this entry.
  44. :py:attr:`entries[i].source.icon`
  45. ---------------------------------
  46. The :abbr:`URL (Uniform Resource Locator)` of an icon representing the source
  47. of this entry.
  48. If this is a relative :abbr:`URI (Uniform Resource Identifier)`, it is
  49. :ref:`resolved according to a set of rules <advanced.base>`.
  50. :py:attr:`entries[i].source.id`
  51. -------------------------------
  52. A globally unique identifier for the source of this entry.
  53. :py:attr:`entries[i].source.link`
  54. ---------------------------------
  55. The primary permanent link of the source of this entry
  56. :py:attr:`entries[i].source.links`
  57. ----------------------------------
  58. A list of all links defined by the source of this entry.
  59. :py:attr:`entries[i].source.links[j].rel`
  60. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  61. The relationship of a link defined by the source of this entry.
  62. Atom 1.0 defines five standard link relationships and describes the process for
  63. registering others. Here are the five standard rel values:
  64. * ``alternate``
  65. * ``self``
  66. * ``related``
  67. * ``via``
  68. * ``enclosure``
  69. :py:attr:`entries[i].source.links[j].type`
  70. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  71. The content type of the page pointed to by a link defined by the source of this
  72. entry.
  73. .. _reference.entry.source.links.href:
  74. :py:attr:`entries[i].source.links[j].href`
  75. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  76. The :abbr:`URL (Uniform Resource Locator)` of the page pointed to by a link
  77. defined by the source of this entry.
  78. If this is a relative :abbr:`URI (Uniform Resource Identifier)`, it is
  79. :ref:`resolved according to a set of rules <advanced.base>`.
  80. :py:attr:`entries[i].source.links[j].title`
  81. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  82. The title of a link defined by the source of this entry.
  83. :py:attr:`entries[i].source.logo`
  84. ---------------------------------
  85. The :abbr:`URL (Uniform Resource Locator)` of a logo representing the source of
  86. this entry.
  87. If this is a relative :abbr:`URI (Uniform Resource Identifier)`, it is
  88. :ref:`resolved according to a set of rules <advanced.base>`.
  89. .. _reference.entry.source.rights:
  90. :py:attr:`entries[i].source.rights`
  91. -----------------------------------
  92. A human-readable copyright statement for the source of this entry.
  93. :py:attr:`entries[i].source.rights_detail`
  94. ------------------------------------------
  95. A dictionary containing details about the copyright statement for the source of
  96. this entry.
  97. :py:attr:`entries[i].source.rights_detail.value`
  98. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  99. Same as :ref:`reference.entry.source.rights`.
  100. If this contains :abbr:`HTML (HyperText Markup Language)` or
  101. :abbr:`XHTML (Extensible HyperText Markup Language)`, it is
  102. :ref:`sanitized <advanced.sanitization>` by default.
  103. If this contains :abbr:`HTML (HyperText Markup Language)` or
  104. :abbr:`XHTML (Extensible HyperText Markup Language)`, certain (X)HTML elements
  105. within this value may contain relative
  106. :abbr:`URI (Uniform Resource Identifier)`\s. If so, they are
  107. :ref:`resolved according to a set of rules <advanced.base>`.
  108. :py:attr:`entries[i].source.rights_detail.type`
  109. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  110. The content type of the copyright statement for the source of this entry.
  111. Most likely values for :py:attr:`~entries[i].source.rights_detail.type`:
  112. * :mimetype:`text/plain`
  113. * :mimetype:`text/html`
  114. * :mimetype:`application/xhtml+xml`
  115. For Atom feeds, the content type is taken from the type attribute, which
  116. defaults to :mimetype:`text/plain` if not specified. For
  117. :abbr:`RSS (Rich Site Summary)` feeds, the content type is auto-determined by
  118. inspecting the content, and defaults to :mimetype:`text/html`. Note that this
  119. may cause silent data loss if the value contains plain text with angle
  120. brackets. There is nothing I can do about this problem; it is a limitation of
  121. :abbr:`RSS (Rich Site Summary)`.
  122. Future enhancement: some versions of :abbr:`RSS (Rich Site Summary)` clearly
  123. specify that certain values default to :mimetype:`text/plain`, and
  124. :program:`Universal Feed Parser` should respect this, but it doesn't yet.
  125. :py:attr:`entries[i].source.rights_detail.language`
  126. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  127. The language of the copyright statement for the source of this entry.
  128. :py:attr:`~entries[i].source.rights_detail.language` is supposed to be a
  129. language code, as specified by `RFC 3066`_, but publishers have been known to
  130. publish random values like "English" or "German".
  131. :program:`Universal Feed Parser` does not do any parsing or normalization of
  132. language codes.
  133. .. _RFC 3066: http://www.ietf.org/rfc/rfc3066.txt
  134. :py:attr:`~entries[i].source.rights_detail.language` may come from the
  135. element's xml:lang attribute, or it may inherit from a parent element's
  136. xml:lang, or the Content-Language :abbr:`HTTP (Hypertext Transfer Protocol)`
  137. header. If the feed does not specify a language,
  138. :py:attr:`~entries[i].source.rights_detail.language` will be ``None``, the
  139. :program:`Python` null value.
  140. :py:attr:`entries[i].source.rights_detail.base`
  141. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  142. The original base :abbr:`URI (Uniform Resource Identifier)` for links within
  143. the copyright statement for the source of this entry.
  144. :py:attr:`entries[i].source.rights_detail.base` is only useful in rare
  145. situations and can usually be ignored. It is the original base
  146. :abbr:`URI (Uniform Resource Identifier)` for this value, as specified by the
  147. element's xml:base attribute, or a parent element's xml:base, or the
  148. appropriate :abbr:`HTTP (Hypertext Transfer Protocol)` header, or the
  149. :abbr:`URI (Uniform Resource Identifier)` of the feed. (See
  150. :ref:`advanced.base` for more details.) By the time you see it,
  151. :program:`Universal Feed Parser` has already resolved relative links in all
  152. values where it makes sense to do so. *Clients should never need to manually
  153. resolve relative links.*
  154. .. _reference.entry.source.subtitle:
  155. :py:attr:`entries[i].source.subtitle`
  156. -------------------------------------
  157. A subtitle, tagline, slogan, or other short description of the source of this
  158. entry.
  159. If this contains :abbr:`HTML (HyperText Markup Language)` or
  160. :abbr:`XHTML (Extensible HyperText Markup Language)`, it is
  161. :ref:`sanitized <advanced.sanitization>` by default.
  162. If this contains :abbr:`HTML (HyperText Markup Language)` or
  163. :abbr:`XHTML (Extensible HyperText Markup Language)`, certain (X)HTML elements
  164. within this value may contain relative
  165. :abbr:`URI (Uniform Resource Identifier)`\s. If so, they are
  166. :ref:`resolved according to a set of rules <advanced.base>`.
  167. :py:attr:`entries[i].source.subtitle_detail`
  168. --------------------------------------------
  169. A dictionary containing details about the subtitle for the source of this
  170. entry.
  171. :py:attr:`entries[i].source.subtitle_detail.value`
  172. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  173. Same as :ref:`reference.entry.source.subtitle`.
  174. If this contains :abbr:`HTML (HyperText Markup Language)` or
  175. :abbr:`XHTML (Extensible HyperText Markup Language)`, it is
  176. :ref:`sanitized <advanced.sanitization>` by default.
  177. If this contains :abbr:`HTML (HyperText Markup Language)` or
  178. :abbr:`XHTML (Extensible HyperText Markup Language)`, certain (X)HTML elements
  179. within this value may contain relative
  180. :abbr:`URI (Uniform Resource Identifier)`\s. If so,
  181. they are :ref:`resolved according to a set of rules <advanced.base>`.
  182. :py:attr:`entries[i].source.subtitle_detail.type`
  183. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  184. The content type of the subtitle of the source of this entry.
  185. Most likely values for :py:attr:`~entries[i].source.subtitle_detail.type`:
  186. * :mimetype:`text/plain``
  187. * :mimetype:`text/html``
  188. * :mimetype:`application/xhtml+xml``
  189. For Atom feeds, the content type is taken from the type attribute, which
  190. defaults to :mimetype:`text/plain`` if not specified. For
  191. :abbr:`RSS (Rich Site Summary)` feeds, the content type is auto-determined by
  192. inspecting the content, and defaults to :mimetype:`text/html``. Note that this
  193. may cause silent data loss if the value contains plain text with angle
  194. brackets. There is nothing I can do about this problem; it is a limitation of
  195. :abbr:`RSS (Rich Site Summary)`.
  196. Future enhancement: some versions of :abbr:`RSS (Rich Site Summary)` clearly
  197. specify that certain values default to :mimetype:`text/plain``, and
  198. :program:`Universal Feed Parser` should respect this, but it doesn't yet.
  199. :py:attr:`entries[i].source.subtitle_detail.language`
  200. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  201. The language of the subtitle of the source of this entry.
  202. :py:attr:`~entries[i].source.subtitle_detail.language` is supposed to be a
  203. language code, as specified by `RFC 3066`_, but publishers have been known to
  204. publish random values like "English" or "German".
  205. :program:`Universal Feed Parser` does not do any parsing or normalization of
  206. language codes.
  207. :py:attr:`~entries[i].source.subtitle_detail.language` may come from the
  208. element's xml:lang attribute, or it may inherit from a parent element's
  209. xml:lang, or the Content-Language :abbr:`HTTP (Hypertext Transfer Protocol)`
  210. header. If the feed does not specify a language,
  211. :py:attr:`~entries[i].source.subtitle_detail.language` will be ``None``, the
  212. :program:`Python` null value.
  213. :py:attr:`entries[i].source.subtitle_detail.base`
  214. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  215. The original base :abbr:`URI (Uniform Resource Identifier)` for links within
  216. the subtitle of the source of this entry.
  217. :py:attr:`entries[i].source.subtitle_detail.base` is only useful in rare
  218. situations and can usually be ignored. It is the original base
  219. :abbr:`URI (Uniform Resource Identifier)` for this value, as specified by the
  220. element's xml:base attribute, or a parent element's xml:base, or the
  221. appropriate :abbr:`HTTP (Hypertext Transfer Protocol)` header, or the
  222. :abbr:`URI (Uniform Resource Identifier)` of the feed. (See
  223. :ref:`advanced.base` for more details.) By the time you see it,
  224. :program:`Universal Feed Parser` has already resolved relative links in all
  225. values where it makes sense to do so. *Clients should never need to manually
  226. resolve relative links.*
  227. .. _reference.entry.source.title:
  228. :py:attr:`entries[i].source.title`
  229. ----------------------------------
  230. The title of the source of this entry.
  231. If this contains :abbr:`HTML (HyperText Markup Language)` or
  232. :abbr:`XHTML (Extensible HyperText Markup Language)`, it is
  233. :ref:`sanitized <advanced.sanitization>` by default.
  234. If this contains :abbr:`HTML (HyperText Markup Language)` or
  235. :abbr:`XHTML (Extensible HyperText Markup Language)`, certain (X)HTML elements within this
  236. value may contain relative :abbr:`URI (Uniform Resource Identifier)`\s. If so,
  237. they are :ref:`resolved according to a set of rules <advanced.base>`.
  238. :py:attr:`entries[i].source.title_detail`
  239. -----------------------------------------
  240. A dictionary containing details about the title for the source of this entry.
  241. :py:attr:`entries[i].source.title_detail.value`
  242. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  243. Same as :ref:`reference.entry.source.title`.
  244. If this contains :abbr:`HTML (HyperText Markup Language)` or
  245. :abbr:`XHTML (Extensible HyperText Markup Language)`, it is
  246. :ref:`sanitized <advanced.sanitization>` by default.
  247. If this contains :abbr:`HTML (HyperText Markup Language)` or
  248. :abbr:`XHTML (Extensible HyperText Markup Language)`, certain (X)HTML elements within this
  249. value may contain relative :abbr:`URI (Uniform Resource Identifier)`\s. If so,
  250. they are :ref:`resolved according to a set of rules <advanced.base>`.
  251. :py:attr:`entries[i].source.title_detail.type`
  252. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  253. The content type of the title of the source of this entry.
  254. Most likely values for :py:attr:`entries[i].source.title_detail.type`:
  255. * :mimetype:`text/plain`
  256. * :mimetype:`text/html`
  257. * :mimetype:`application/xhtml+xml`
  258. For Atom feeds, the content type is taken from the type attribute, which
  259. defaults to :mimetype:`text/plain` if not specified. For
  260. :abbr:`RSS (Rich Site Summary)` feeds, the content type is auto-determined by
  261. inspecting the content, and defaults to :mimetype:`text/html`. Note that this
  262. may cause silent data loss if the value contains plain text with angle
  263. brackets. There is nothing I can do about this problem; it is a limitation of
  264. :abbr:`RSS (Rich Site Summary)`.
  265. Future enhancement: some versions of :abbr:`RSS (Rich Site Summary)` clearly
  266. specify that certain values default to :mimetype:`text/plain`, and
  267. :program:`Universal Feed Parser` should respect this, but it doesn't yet.
  268. :py:attr:`entries[i].source.title_detail.language`
  269. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  270. The language of the title of the source of this entry.
  271. :py:attr:`~entries[i].source.title_detail.language` is supposed to be a
  272. language code, as specified by `RFC 3066`_, but publishers have been known to
  273. publish random values like "English" or "German".
  274. :program:`Universal Feed Parser` does not do any parsing or normalization of language codes.
  275. :py:attr:`~entries[i].source.title_detail.language` may come from the element's
  276. xml:lang attribute, or it may inherit from a parent element's xml:lang, or the
  277. Content-Language :abbr:`HTTP (Hypertext Transfer Protocol)` header. If the
  278. feed does not specify a language,
  279. :py:attr:`~entries[i].source.title_detail.language` will be ``None``, the
  280. :program:`Python` null value.
  281. :py:attr:`entries[i].source.title_detail.base`
  282. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  283. The original base :abbr:`URI (Uniform Resource Identifier)` for links within
  284. the title of the source of this entry.
  285. :py:attr:`entries[i].source.title_detail.base` is only useful in rare
  286. situations and can usually be ignored. It is the original base
  287. :abbr:`URI (Uniform Resource Identifier)` for this value, as specified by the element's
  288. xml:base attribute, or a parent element's xml:base, or the appropriate
  289. :abbr:`HTTP (Hypertext Transfer Protocol)` header, or the
  290. :abbr:`URI (Uniform Resource Identifier)` of the feed. (See :ref:`advanced.base` for more
  291. details.) By the time you see it, :program:`Universal Feed Parser` has already
  292. resolved relative links in all values where it makes sense to do so. *Clients
  293. should never need to manually resolve relative links.*
  294. :py:attr:`entries[i].source.updated`
  295. ------------------------------------
  296. The date the source of this entry was last updated, as a string in the same
  297. format as it was published in the original feed.
  298. This element is :ref:`parsed as a date <advanced.date>` and stored in
  299. :ref:`reference.entry.source.updated_parsed`.
  300. .. _reference.entry.source.updated_parsed:
  301. :py:attr:`entries[i].source.updated_parsed`
  302. -------------------------------------------
  303. The date this entry was last updated, as a standard :program:`Python` 9-tuple.