Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc
Commits
fcef78e3
Commit
fcef78e3
authored
Nov 13, 2014
by
Jean-Baptiste Kempf
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Lua: support HTTPS and live for Dailymotion
Close #12753 Thanks to Ruito
parent
5e98fc50
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
67 additions
and
47 deletions
+67
-47
share/lua/playlist/dailymotion.lua
share/lua/playlist/dailymotion.lua
+67
-47
No files found.
share/lua/playlist/dailymotion.lua
View file @
fcef78e3
...
...
@@ -29,68 +29,88 @@ function get_prefres()
prefres
=
-
1
end
end
return
prefres
end
-- Probe function.
function
probe
()
return
vlc
.
access
==
"http"
and
string.match
(
vlc
.
path
,
"www.dailymotion.com/video"
)
end
if
vlc
.
access
~=
"http"
and
vlc
.
access
~=
"https"
then
return
false
end
function
find
(
haystack
,
needle
)
local
_
,
_
,
ret
=
string.find
(
haystack
,
needle
)
return
ret
return
(
string.match
(
vlc
.
path
,
"www.dailymotion.com/video"
)
)
end
-- Parse function.
function
parse
()
prefres
=
get_prefres
()
while
true
do
line
=
vlc
.
readline
()
if
not
line
then
break
end
if
string.match
(
line
,
"sequence="
)
then
line
=
vlc
.
strings
.
decode_uri
(
line
):
gsub
(
"
\\
/"
,
"/"
)
arturl
=
find
(
line
,
"
\"
videoPreviewURL\"
:
\
"([^\"
]
*
)
\
""
)
name
=
find
(
line
,
"
\"
videoTitle\"
:
\
"([^\"
]
*
)
\
""
)
if
name
then
name
=
string.gsub
(
name
,
"+"
,
" "
)
if
not
line
then
break
end
if
string.match
(
line
,
"<meta property=\"
og
:
title
\
""
)
then
_
,
_
,
name
=
string.find
(
line
,
"content=\"
(.
-
)
\
""
)
name
=
vlc
.
strings
.
resolve_xml_special_chars
(
name
)
end
description
=
find
(
line
,
"
\"
videoDescription\"
:
\
"([^\"
]
*
)
\
""
)
if
description
then
description
=
string.gsub
(
description
,
"+"
,
" "
)
if
string.match
(
line
,
"<meta name=\"
description
\
""
)
then
_
,
_
,
description
=
string.find
(
line
,
"content=\"
(.
-
)
\
""
)
if
(
description
~=
nil
)
then
description
=
vlc
.
strings
.
resolve_xml_special_chars
(
description
)
end
for
_
,
param
in
ipairs
({
"hd1080URL"
,
"hd720URL"
,
"hqURL"
,
"sdURL"
,
"video_url"
})
do
path
=
string.match
(
line
,
"
\"
"
..
param
..
"
\"
:\"
([
^
\
"]*)\"" )
if path then
path = vlc.strings.decode_uri(path)
if prefres < 0 then
break
end
height = string.match( path, "
/
cdn
/%
w
+%-%
d
+
x
(
%
d
+
)
/
video
/
" )
if not height then
height = string.match( param, "
(
%
d
+
)
" )
end
if not height or tonumber(height) <= prefres then
break
if
string.match
(
line
,
"<meta name=\"
author
\
""
)
then
_
,
_
,
artist
=
string.find
(
line
,
"content=\"
(.
-
)
\
""
)
artist
=
vlc
.
strings
.
resolve_xml_special_chars
(
artist
)
end
if
string.match
(
line
,
"<link rel=\"
thumbnail
\
" type=\"
image
/
jpeg
\
""
)
then
_
,
_
,
arturl
=
string.find
(
line
,
"href=\"
(.
-
)
\
""
)
end
end
if not path then
page_embed
=
string.gsub
(
vlc
.
path
,
"dailymotion.com/video/"
,
"dailymotion.com/embed/video/"
)
page_url
=
vlc
.
stream
(
vlc
.
access
..
"://"
..
page_embed
)
if
not
page_url
then
return
nil
end
page
=
page_url
:
read
(
65653
)
hd1080url
=
string.match
(
page
,
"
\"
stream_h264_hd1080_url\"
%
s
*
:
%
s
*
\
"([^\"
]
*
)
\
""
)
hdurl
=
string.match
(
page
,
"
\"
stream_h264_hd_url\"
%
s
*
:
%
s
*
\
"([^\"
]
*
)
\
""
)
hqurl
=
string.match
(
page
,
"
\"
stream_h264_hq_url\"
%
s
*
:
%
s
*
\
"([^\"
]
*
)
\
""
)
baseurl
=
string.match
(
page
,
"
\"
stream_h264_url\"
%
s
*
:
%
s
*
\
"([^\"
]
*
)
\
""
)
ldurl
=
string.match
(
page
,
"
\"
stream_h264_ld_url\"
%
s
*
:
%
s
*
\
"([^\"
]
*
)
\
""
)
livehlsurl
=
string.match
(
page
,
"
\"
stream_live_hls_url\"
%
s
*
:
%
s
*
\
"([^\"
]
*
)
\
""
)
arr_videos_urls
=
{}
if
hd1080url
then
table.insert
(
arr_videos_urls
,
hd1080url
)
end
if
hdurl
then
table.insert
(
arr_videos_urls
,
hdurl
)
end
if
hqurl
then
table.insert
(
arr_videos_urls
,
hqurl
)
end
if
baseurl
then
table.insert
(
arr_videos_urls
,
baseurl
)
end
if
ldurl
then
table.insert
(
arr_videos_urls
,
baseurl
)
end
if
livehlsurl
then
return
{
{
path
=
livehlsurl
:
gsub
(
"
\\
/"
,
"/"
);
name
=
name
;
description
=
description
;
url
=
vlc
.
path
;
arturl
=
arturl
;
artist
=
artist
}
}
else
if
table
.
getn
(
arr_videos_urls
)
>
0
then
for
i
=
1
,
table
.
getn
(
arr_videos_urls
)
do
video_url_out
=
arr_videos_urls
[
i
]:
gsub
(
"
\\
/"
,
"/"
)
if
prefres
<
0
then
break
end
return { { path = path; name = name; description = description; url = vlc.path; arturl = arturl } }
height
=
string.match
(
video_url_out
,
"/cdn/%w+%-%d+x(%d+)/video/"
)
if
not
height
or
tonumber
(
height
)
<=
prefres
then
break
end
end
return
{
{
path
=
video_url_out
;
name
=
name
;
description
=
description
;
url
=
vlc
.
path
;
arturl
=
arturl
;
artist
=
artist
}
}
else
vlc
.
msg
.
err
(
"Couldn't extract the video URL from dailymotion"
)
return
{
}
end
end
end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment