The Webfeed Flutter package for Appeto SDK.
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

194 lignes
5.8 KiB

  1. import 'package:webfeed/domain/media/category.dart';
  2. import 'package:webfeed/domain/media/community.dart';
  3. import 'package:webfeed/domain/media/content.dart';
  4. import 'package:webfeed/domain/media/copyright.dart';
  5. import 'package:webfeed/domain/media/credit.dart';
  6. import 'package:webfeed/domain/media/description.dart';
  7. import 'package:webfeed/domain/media/embed.dart';
  8. import 'package:webfeed/domain/media/group.dart';
  9. import 'package:webfeed/domain/media/hash.dart';
  10. import 'package:webfeed/domain/media/license.dart';
  11. import 'package:webfeed/domain/media/peer_link.dart';
  12. import 'package:webfeed/domain/media/player.dart';
  13. import 'package:webfeed/domain/media/price.dart';
  14. import 'package:webfeed/domain/media/rating.dart';
  15. import 'package:webfeed/domain/media/restriction.dart';
  16. import 'package:webfeed/domain/media/rights.dart';
  17. import 'package:webfeed/domain/media/scene.dart';
  18. import 'package:webfeed/domain/media/status.dart';
  19. import 'package:webfeed/domain/media/text.dart';
  20. import 'package:webfeed/domain/media/thumbnail.dart';
  21. import 'package:webfeed/domain/media/title.dart';
  22. import 'package:webfeed/util/xml.dart';
  23. import 'package:webfeed/util/iterable.dart';
  24. import 'package:xml/xml.dart';
  25. class Media {
  26. final Group? group;
  27. final List<Content>? contents;
  28. final List<Credit>? credits;
  29. final Category? category;
  30. final Rating? rating;
  31. final Title? title;
  32. final Description? description;
  33. final String? keywords;
  34. final List<Thumbnail>? thumbnails;
  35. final Hash? hash;
  36. final Player? player;
  37. final Copyright? copyright;
  38. final Text? text;
  39. final Restriction? restriction;
  40. final Community? community;
  41. final List<String>? comments;
  42. final Embed? embed;
  43. final List<String>? responses;
  44. final List<String>? backLinks;
  45. final Status? status;
  46. final List<Price>? prices;
  47. final License? license;
  48. final PeerLink? peerLink;
  49. final Rights? rights;
  50. final List<Scene>? scenes;
  51. Media({
  52. this.group,
  53. this.contents,
  54. this.credits,
  55. this.category,
  56. this.rating,
  57. this.title,
  58. this.description,
  59. this.keywords,
  60. this.thumbnails,
  61. this.hash,
  62. this.player,
  63. this.copyright,
  64. this.text,
  65. this.restriction,
  66. this.community,
  67. this.comments,
  68. this.embed,
  69. this.responses,
  70. this.backLinks,
  71. this.status,
  72. this.prices,
  73. this.license,
  74. this.peerLink,
  75. this.rights,
  76. this.scenes,
  77. });
  78. factory Media.parse(XmlElement element) {
  79. return Media(
  80. group: element
  81. .findElements('media:group')
  82. .map((e) => Group.parse(e))
  83. .firstOrNull,
  84. contents: element
  85. .findElements('media:content')
  86. .map((e) => Content.parse(e))
  87. .toList(),
  88. credits: element
  89. .findElements('media:credit')
  90. .map((e) => Credit.parse(e))
  91. .toList(),
  92. category: element
  93. .findElements('media:category')
  94. .map((e) => Category.parse(e))
  95. .firstOrNull,
  96. rating: element
  97. .findElements('media:rating')
  98. .map((e) => Rating.parse(e))
  99. .firstOrNull,
  100. title: findElements(element, 'media:title')
  101. ?.map((e) => Title.parse(e))
  102. .firstOrNull,
  103. description: element
  104. .findElements('media:description')
  105. .map((e) => Description.parse(e))
  106. .firstOrNull,
  107. keywords: element.findElements('media:keywords').firstOrNull?.text,
  108. thumbnails: element
  109. .findElements('media:thumbnail')
  110. .map((e) => Thumbnail.parse(e))
  111. .toList(),
  112. hash: element
  113. .findElements('media:hash')
  114. .map((e) => Hash.parse(e))
  115. .firstOrNull,
  116. player: element
  117. .findElements('media:player')
  118. .map((e) => Player.parse(e))
  119. .firstOrNull,
  120. copyright: element
  121. .findElements('media:copyright')
  122. .map((e) => Copyright.parse(e))
  123. .firstOrNull,
  124. text: element
  125. .findElements('media:text')
  126. .map((e) => Text.parse(e))
  127. .firstOrNull,
  128. restriction: element
  129. .findElements('media:restriction')
  130. .map((e) => Restriction.parse(e))
  131. .firstOrNull,
  132. community: element
  133. .findElements('media:community')
  134. .map((e) => Community.parse(e))
  135. .firstOrNull,
  136. comments: element
  137. .findElements('media:comments')
  138. .firstOrNull
  139. ?.findElements('media:comment')
  140. .map((e) => e.text)
  141. .toList() ??
  142. [],
  143. embed: element
  144. .findElements('media:embed')
  145. .map((e) => Embed.parse(e))
  146. .firstOrNull,
  147. responses: element
  148. .findElements('media:responses')
  149. .firstOrNull
  150. ?.findElements('media:response')
  151. .map((e) => e.text)
  152. .toList() ??
  153. [],
  154. backLinks: element
  155. .findElements('media:backLinks')
  156. .firstOrNull
  157. ?.findElements('media:backLink')
  158. .map((e) => e.text)
  159. .toList() ??
  160. [],
  161. status: element
  162. .findElements('media:status')
  163. .map((e) => Status.parse(e))
  164. .firstOrNull,
  165. prices: element
  166. .findElements('media:price')
  167. .map((e) => Price.parse(e))
  168. .toList(),
  169. license: element
  170. .findElements('media:license')
  171. .map((e) => License.parse(e))
  172. .firstOrNull,
  173. peerLink: element
  174. .findElements('media:peerLink')
  175. .map((e) => PeerLink.parse(e))
  176. .firstOrNull,
  177. rights: element
  178. .findElements('media:rights')
  179. .map((e) => Rights.parse(e))
  180. .firstOrNull,
  181. scenes: element
  182. .findElements('media:scenes')
  183. .firstOrNull
  184. ?.findElements('media:scene')
  185. .map((e) => Scene.parse(e))
  186. .toList() ??
  187. [],
  188. );
  189. }
  190. }