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.

170 lignes
5.1 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:xml/xml.dart';
  24. class Media {
  25. final Group? group;
  26. final List<Content>? contents;
  27. final List<Credit>? credits;
  28. final Category? category;
  29. final Rating? rating;
  30. final Title? title;
  31. final Description? description;
  32. final String? keywords;
  33. final List<Thumbnail>? thumbnails;
  34. final Hash? hash;
  35. final Player? player;
  36. final Copyright? copyright;
  37. final Text? text;
  38. final Restriction? restriction;
  39. final Community? community;
  40. final List<String>? comments;
  41. final Embed? embed;
  42. final List<String>? responses;
  43. final List<String>? backLinks;
  44. final Status? status;
  45. final List<Price>? prices;
  46. final License? license;
  47. final PeerLink? peerLink;
  48. final Rights? rights;
  49. final List<Scene?>? scenes;
  50. Media({
  51. this.group,
  52. this.contents,
  53. this.credits,
  54. this.category,
  55. this.rating,
  56. this.title,
  57. this.description,
  58. this.keywords,
  59. this.thumbnails,
  60. this.hash,
  61. this.player,
  62. this.copyright,
  63. this.text,
  64. this.restriction,
  65. this.community,
  66. this.comments,
  67. this.embed,
  68. this.responses,
  69. this.backLinks,
  70. this.status,
  71. this.prices,
  72. this.license,
  73. this.peerLink,
  74. this.rights,
  75. this.scenes,
  76. });
  77. factory Media.parse(XmlElement element) {
  78. return Media(
  79. group: Group.parse(
  80. findFirstElement(element, 'media:group'),
  81. ),
  82. contents: element.findElements('media:content').map((e) {
  83. return Content.parse(e);
  84. }).toList(),
  85. credits: element.findElements('media:credit').map((e) {
  86. return Credit.parse(e);
  87. }).toList(),
  88. category: Category.parse(
  89. findFirstElement(element, 'media:category'),
  90. ),
  91. rating: Rating.parse(
  92. findFirstElement(element, 'media:rating'),
  93. ),
  94. title: Title.parse(
  95. findFirstElement(element, 'media:title'),
  96. ),
  97. description: Description.parse(
  98. findFirstElement(element, 'media:description'),
  99. ),
  100. keywords: findFirstElement(element, 'media:keywords')?.text,
  101. thumbnails: element.findElements('media:thumbnail').map((e) {
  102. return Thumbnail.parse(e);
  103. }).toList(),
  104. hash: Hash.parse(
  105. findFirstElement(element, 'media:hash'),
  106. ),
  107. player: Player.parse(
  108. findFirstElement(element, 'media:player'),
  109. ),
  110. copyright: Copyright.parse(
  111. findFirstElement(element, 'media:copyright'),
  112. ),
  113. text: Text.parse(
  114. findFirstElement(element, 'media:text'),
  115. ),
  116. restriction: Restriction.parse(
  117. findFirstElement(element, 'media:restriction'),
  118. ),
  119. community: Community.parse(
  120. findFirstElement(element, 'media:community'),
  121. ),
  122. comments: findFirstElement(element, 'media:comments')
  123. ?.findElements('media:comment')
  124. .map((e) {
  125. return e.text;
  126. }).toList() ??
  127. [],
  128. embed: Embed.parse(
  129. findFirstElement(element, 'media:embed'),
  130. ),
  131. responses: findFirstElement(element, 'media:responses')
  132. ?.findElements('media:response')
  133. .map((e) {
  134. return e.text;
  135. }).toList() ??
  136. [],
  137. backLinks: findFirstElement(element, 'media:backLinks')
  138. ?.findElements('media:backLink')
  139. .map((e) {
  140. return e.text;
  141. }).toList() ??
  142. [],
  143. status: Status.parse(
  144. findFirstElement(element, 'media:status'),
  145. ),
  146. prices: element.findElements('media:price').map((e) {
  147. return Price.parse(e);
  148. }).toList(),
  149. license: License.parse(
  150. findFirstElement(element, 'media:license'),
  151. ),
  152. peerLink: PeerLink.parse(
  153. findFirstElement(element, 'media:peerLink'),
  154. ),
  155. rights: Rights.parse(
  156. findFirstElement(element, 'media:rights'),
  157. ),
  158. scenes: findFirstElement(element, 'media:scenes')
  159. ?.findElements('media:scene')
  160. .map((e) {
  161. return Scene.parse(e);
  162. }).toList() ??
  163. [],
  164. );
  165. }
  166. }