Merge pull request #1801 from mfietz/issue/1800-parse-duration
Parse iTunes duration seconds as float
This commit is contained in:
commit
35a3734da8
|
@ -61,26 +61,26 @@ public class NSITunes extends Namespace {
|
||||||
state.getFeed().setAuthor(author);
|
state.getFeed().setAuthor(author);
|
||||||
}
|
}
|
||||||
} else if (DURATION.equals(localName)) {
|
} else if (DURATION.equals(localName)) {
|
||||||
String duration = state.getContentBuf().toString();
|
String durationStr = state.getContentBuf().toString();
|
||||||
if(TextUtils.isEmpty(duration)) {
|
if(TextUtils.isEmpty(durationStr)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String[] parts = duration.trim().split(":");
|
String[] parts = durationStr.trim().split(":");
|
||||||
try {
|
try {
|
||||||
int durationMs = 0;
|
int durationMs = 0;
|
||||||
if (parts.length == 2) {
|
if (parts.length == 2) {
|
||||||
durationMs += TimeUnit.MINUTES.toMillis(Long.parseLong(parts[0])) +
|
durationMs += TimeUnit.MINUTES.toMillis(Long.parseLong(parts[0])) +
|
||||||
TimeUnit.SECONDS.toMillis(Long.parseLong(parts[1]));
|
TimeUnit.SECONDS.toMillis((long)Float.parseFloat(parts[1]));
|
||||||
} else if (parts.length >= 3) {
|
} else if (parts.length >= 3) {
|
||||||
durationMs += TimeUnit.HOURS.toMillis(Long.parseLong(parts[0])) +
|
durationMs += TimeUnit.HOURS.toMillis(Long.parseLong(parts[0])) +
|
||||||
TimeUnit.MINUTES.toMillis(Long.parseLong(parts[1])) +
|
TimeUnit.MINUTES.toMillis(Long.parseLong(parts[1])) +
|
||||||
TimeUnit.SECONDS.toMillis(Long.parseLong(parts[2]));
|
TimeUnit.SECONDS.toMillis((long)Float.parseFloat(parts[2]));
|
||||||
} else {
|
} else {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
state.getTempObjects().put(DURATION, durationMs);
|
state.getTempObjects().put(DURATION, durationMs);
|
||||||
} catch (NumberFormatException e) {
|
} catch (NumberFormatException e) {
|
||||||
Log.e(NSTAG, Log.getStackTraceString(e));
|
Log.e(NSTAG, "Duration \"" + durationStr + "\" could not be parsed");
|
||||||
}
|
}
|
||||||
} else if (SUBTITLE.equals(localName)) {
|
} else if (SUBTITLE.equals(localName)) {
|
||||||
String subtitle = state.getContentBuf().toString();
|
String subtitle = state.getContentBuf().toString();
|
||||||
|
|
|
@ -40,10 +40,11 @@ public class NSMedia extends Namespace {
|
||||||
if (state.getCurrentItem() != null && state.getCurrentItem().getMedia() == null &&
|
if (state.getCurrentItem() != null && state.getCurrentItem().getMedia() == null &&
|
||||||
url != null && validType) {
|
url != null && validType) {
|
||||||
long size = 0;
|
long size = 0;
|
||||||
|
String sizeStr = attributes.getValue(SIZE);
|
||||||
try {
|
try {
|
||||||
size = Long.parseLong(attributes.getValue(SIZE));
|
size = Long.parseLong(sizeStr);
|
||||||
} catch (NumberFormatException e) {
|
} catch (NumberFormatException e) {
|
||||||
Log.e(TAG, "Length attribute could not be parsed.");
|
Log.e(TAG, "Size \"" + sizeStr + "\" could not be parsed.");
|
||||||
}
|
}
|
||||||
|
|
||||||
int durationMs = 0;
|
int durationMs = 0;
|
||||||
|
@ -53,7 +54,7 @@ public class NSMedia extends Namespace {
|
||||||
long duration = Long.parseLong(durationStr);
|
long duration = Long.parseLong(durationStr);
|
||||||
durationMs = (int) TimeUnit.MILLISECONDS.convert(duration, TimeUnit.SECONDS);
|
durationMs = (int) TimeUnit.MILLISECONDS.convert(duration, TimeUnit.SECONDS);
|
||||||
} catch (NumberFormatException e) {
|
} catch (NumberFormatException e) {
|
||||||
Log.e(TAG, "Duration attribute could not be parsed");
|
Log.e(TAG, "Duration \"" + durationStr + "\" could not be parsed");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
FeedMedia media = new FeedMedia(state.getCurrentItem(), url, size, type);
|
FeedMedia media = new FeedMedia(state.getCurrentItem(), url, size, type);
|
||||||
|
|
Loading…
Reference in New Issue