summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOmar Roth <omarroth@hotmail.com>2018-08-20 19:25:12 -0500
committerOmar Roth <omarroth@hotmail.com>2018-08-20 19:25:12 -0500
commit76d3abb5f90dc513e30c996f0d11ba0f8c963bb8 (patch)
tree24db2f29c54993b079b8d731bac826e89cf2a596
parentdeb4b06ea0ebfdc629c1c54c920eeb147b4f91d3 (diff)
downloadinvidious-0.2.0.tar.gz
invidious-0.2.0.tar.bz2
invidious-0.2.0.zip
Make view extractor more robust0.2.0
-rw-r--r--src/invidious/helpers/helpers.cr44
1 files changed, 20 insertions, 24 deletions
diff --git a/src/invidious/helpers/helpers.cr b/src/invidious/helpers/helpers.cr
index a7a8158f..ab26396f 100644
--- a/src/invidious/helpers/helpers.cr
+++ b/src/invidious/helpers/helpers.cr
@@ -294,33 +294,29 @@ def extract_videos(nodeset, ucid = nil)
end
metadata = node.xpath_nodes(%q(.//div[contains(@class,"yt-lockup-meta")]/ul/li))
- if metadata.size == 0
+ if metadata.empty?
next
- elsif metadata.size == 1
- # Scheduled livestream
- if metadata[0].content.starts_with? "Starts"
- view_count = 0_i64
- published = Time.epoch(metadata[0].xpath_node(%q(.//span)).not_nil!["data-timestamp"].to_i64)
- else
- # Livestream
- if metadata[0].content.starts_with? "Streamed "
- view_count = 0_i64
- published = decode_date(metadata[0].content.lchop("Streamed "))
- else
- view_count = metadata[0].content.delete(" watching,").to_i64
- published = Time.now
- end
- end
- else
- published = decode_date(metadata[0].content)
+ end
- view_count = metadata[1].content.delete("No views,")
- if view_count.empty?
- view_count = 0_i64
- else
- view_count = view_count.to_i64
- end
+ begin
+ published = decode_date(metadata[0].content.lchop("Streamed ").lchop("Starts "))
+ rescue ex
+ end
+ begin
+ published ||= Time.epoch(metadata[0].xpath_node(%q(.//span)).not_nil!["data-timestamp"].to_i64)
+ rescue ex
+ end
+ published ||= Time.now
+
+ begin
+ view_count = metadata[0].content.rchop(" watching").delete(",").try &.to_i64?
+ rescue ex
+ end
+ begin
+ view_count ||= metadata.try &.[1].content.delete("No views,").try &.to_i64?
+ rescue ex
end
+ view_count ||= 0_i64
description_html = node.xpath_node(%q(.//div[contains(@class, "yt-lockup-description")]))
description, description_html = html_to_description(description_html)