JOCHLSDownloader 0.0.8 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +4 -0
- data/lib/JOCHLSDownloader.rb +9 -6
- metadata +1 -1
data/README.md
CHANGED
@@ -4,6 +4,10 @@ JOCHLSDownloader
|
|
4
4
|
|
5
5
|
The JOCHLSDownloader is a very simple native ruby code that downloads all files linked by a m3u8 manifest
|
6
6
|
|
7
|
+
Note:
|
8
|
+
For LIVE and EVENT playlist types it downloads only the firsts media segments.
|
9
|
+
For VOD playlist type it will download all media content.
|
10
|
+
|
7
11
|
Usage examples:
|
8
12
|
|
9
13
|
```ruby
|
data/lib/JOCHLSDownloader.rb
CHANGED
@@ -42,10 +42,11 @@ class CJOCHLSDownloader
|
|
42
42
|
#Get domain
|
43
43
|
domain = @sourceurl.host
|
44
44
|
url = @sourceurl.path
|
45
|
+
port = @sourceurl.port
|
45
46
|
|
46
47
|
Log Logger::DEBUG, "URI host: #{domain}, path: #{url}"
|
47
48
|
|
48
|
-
downloadHLS domain, url, @destpath
|
49
|
+
downloadHLS domain, port, url, @destpath
|
49
50
|
|
50
51
|
end
|
51
52
|
|
@@ -54,9 +55,10 @@ private
|
|
54
55
|
#Download a m3u8 file and call to parse function
|
55
56
|
#
|
56
57
|
# @param domain [String] Source domain to download m3u8 file
|
58
|
+
# @param port [int] Port to connect
|
57
59
|
# @param url [String] Source url path to download m3u8 file
|
58
60
|
# @param basedir [String] local filesystem path to save the downloaded files
|
59
|
-
def downloadHLS (domain, url, basedir)
|
61
|
+
def downloadHLS (domain, port, url, basedir)
|
60
62
|
Log Logger::DEBUG, "downloadHLS domain: #{domain}, URL: #{url}, basedir: #{basedir}"
|
61
63
|
|
62
64
|
if Dir.exist?(basedir) == false
|
@@ -69,7 +71,7 @@ private
|
|
69
71
|
|
70
72
|
Log Logger::DEBUG, "Start downloading domain: #{domain}, URL: #{url}, To: #{destpathfile}"
|
71
73
|
|
72
|
-
Net::HTTP.start(domain) do |http|
|
74
|
+
Net::HTTP.start(domain, port) do |http|
|
73
75
|
resp = http.get(url)
|
74
76
|
open(destpathfile, "wb") do |file|
|
75
77
|
file.write(resp.body)
|
@@ -81,7 +83,7 @@ private
|
|
81
83
|
ext = File.extname (destpathfile)
|
82
84
|
if ext.casecmp(".m3u8") == 0
|
83
85
|
Log Logger::DEBUG, "Start parsing: #{destpathfile}"
|
84
|
-
parsem3u8 destpathfile,domain, url, basedir
|
86
|
+
parsem3u8 destpathfile, domain, port, url, basedir
|
85
87
|
Log Logger::DEBUG, "End parsing: #{destpathfile}"
|
86
88
|
end
|
87
89
|
end
|
@@ -90,9 +92,10 @@ private
|
|
90
92
|
#
|
91
93
|
# @param file [String] path to donwloaded m3u8 to parse
|
92
94
|
# @param domain [String] Source domain of downloaded m3u8 file
|
95
|
+
# @param port [int] Port to connect
|
93
96
|
# @param url [String] Source url path to downloaded m3u8 file
|
94
97
|
# @param basedir [String] local filesystem path to save the downloaded files
|
95
|
-
def parsem3u8 (file, domain, url, basedir)
|
98
|
+
def parsem3u8 (file, domain, port, url, basedir)
|
96
99
|
|
97
100
|
File.open( file ).each do |line|
|
98
101
|
|
@@ -115,7 +118,7 @@ private
|
|
115
118
|
newbasedir = basedir
|
116
119
|
end
|
117
120
|
|
118
|
-
downloadHLS domain, newurl, newbasedir
|
121
|
+
downloadHLS domain, port, newurl, newbasedir
|
119
122
|
end
|
120
123
|
end
|
121
124
|
end
|