Itunes.parse constructor
Itunes.parse(
- XmlElement element
Factory method to create an Itunes
object from an XmlElement
.
This method parses the element
and extracts the iTunes metadata values from it
to create an Itunes
object and returns it.
The author, summary, explicit, title, subtitle, owner, keywords, image, categories,
type, newFeedUrl, block, complete, episode, season, duration, and episodeType values are obtained
by accessing specific elements or attributes within the element
and parsing them accordingly.
Implementation
factory Itunes.parse(XmlElement element) {
final episodeStr =
element.findElements('itunes:episode').firstOrNull?.innerText ?? '';
final seasonStr =
element.findElements('itunes:season').firstOrNull?.innerText ?? '';
final durationStr =
element.findElements('itunes:duration').firstOrNull?.innerText ?? '';
return Itunes(
author: element.findElements('itunes:author').firstOrNull?.innerText,
summary: element.findElements('itunes:summary').firstOrNull?.innerText,
explicit: parseBoolLiteral(element, 'itunes:explicit'),
title: element.findElements('itunes:title').firstOrNull?.innerText,
subtitle: element.findElements('itunes:subtitle').firstOrNull?.innerText,
owner: element
.findElements('itunes:owner')
.map((e) => ItunesOwner.parse(e))
.firstOrNull,
keywords: element
.findElements('itunes:keywords')
.firstOrNull
?.innerText
.split(',')
.map((keyword) => keyword.trim())
.toList() ??
[],
image: element
.findElements('itunes:image')
.map((e) => ItunesImage.parse(e))
.firstOrNull,
categories: element
.findElements('itunes:category')
.map((e) => ItunesCategory.parse(e))
.toList(),
type: element
.findElements('itunes:type')
.map((e) => newItunesType(e))
.firstOrNull,
newFeedUrl:
element.findElements('itunes:new-feed-url').firstOrNull?.innerText,
block: parseBoolLiteral(element, 'itunes:block'),
complete: parseBoolLiteral(element, 'itunes:complete'),
episode: episodeStr.isNotEmpty ? int.tryParse(episodeStr) : null,
season: seasonStr.isNotEmpty ? int.tryParse(seasonStr) : null,
duration: durationStr.isNotEmpty ? _parseDuration(durationStr) : null,
episodeType: element
.findElements('itunes:episodeType')
.map((e) => newItunesEpisodeType(e))
.firstOrNull,
);
}