Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-2-2
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-2-2
Commits
4561cb3b
Commit
4561cb3b
authored
Nov 24, 2011
by
Konstantin Pavlov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Lua: extreme.com playlist parser.
parent
7d338537
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
107 additions
and
0 deletions
+107
-0
share/lua/playlist/extreme.lua
share/lua/playlist/extreme.lua
+107
-0
No files found.
share/lua/playlist/extreme.lua
0 → 100644
View file @
4561cb3b
--[[
$Id$
Copyright © 2011 the VideoLAN team
Authors: Konstantin Pavlov (thresh@videolan.org)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
--]]
function
get_prefres
()
local
prefres
=
-
1
if
vlc
.
var
and
vlc
.
var
.
inherit
then
prefres
=
vlc
.
var
.
inherit
(
nil
,
"preferred-resolution"
)
if
prefres
==
nil
then
prefres
=
-
1
end
end
return
prefres
end
-- Probe function.
function
probe
()
return
vlc
.
access
==
"http"
and
string.match
(
vlc
.
path
,
"extreme.com/."
)
or
string.match
(
vlc
.
path
,
"freecaster.tv/."
)
or
string.match
(
vlc
.
path
,
"player.extreme.com/info/."
)
end
-- Parse function.
function
parse
()
if
(
string.match
(
vlc
.
path
,
"extreme\.com/."
)
or
string.match
(
vlc
.
path
,
"freecaster\.tv/."
))
and
not
string.match
(
vlc
.
path
,
"player.extreme.com/info/"
)
then
while
true
do
line
=
vlc
.
readline
()
if
not
line
then
break
end
-- Try to find id of the video
if
string.match
(
line
,
"http://player.extreme.com/FCPlayer.swf"
)
then
_
,
_
,
vid
=
string.find
(
line
,
"id=(.*)\"" )
break
end
end
return { { path = "
http
:
//
player
.
extreme
.
com
/
info
/
" .. vid; name = "
extreme
.
com
video
"; } }
end
if string.match( vlc.path, "
player
.
extreme
.
com
/
info
/
.
" ) then
prefres = get_prefres()
gostraight = true
while true do
line = vlc.readline()
if not line then break end
-- Try to find the video's title
if string.match( line, "
title
>
(.
*
)
<
" ) then
_,_,name = string.find( line, "
<
title
>
(.
*
)
<
" )
end
-- Try to find image for thumbnail
if string.match( line, "
<
path
>
(
*
.)
</
path
>
" ) then
_,_,arturl = string.find( line, "
<
path
>
(
*
.)
</
path
>
" )
end
-- Try to find out if its a freecaster streaming or just a link to some
-- other video streaming website
-- FIXME: I was unable to find any http-based freecaster streams,
-- but I remember there were some a few months back.
-- Right now we assume everything is streamed using RTMP, so we feed them to avio.
if string.match( line, "
<
streams
type
=
\
"5\"
server
=
\
"(.*)\"
>
" )
then
_,_,rtmpserver = string.find( line, "
<
streams
type
=
\
"5\"
server
=
\
"(.*)\"
>
" )
gostraight = false
end
-- if we're going outside, we need to find out the path
if gostraight then
if string.match( line, "
>
(.
*
)
</
stream
>
" ) then
_,_,path = string.find( line, "
bitrate
=
\
"0\"
duration
=
\
"
\"
>(.*)</stream>"
)
end
end
-- and if we're using freecaster, use appropriate resolution
if
not
gostraight
then
if
string.match
(
line
,
"height=\"
(.
*
)
\
" duration"
)
then
_
,
_
,
height
=
string.find
(
line
,
"height=\"
(
%
d
+
)
\
" duration"
)
_
,
_
,
playpath
=
string.find
(
line
,
"
\"
>(.*)</stream>"
)
if
(
prefres
<
0
or
tonumber
(
height
)
<=
prefres
)
then
path
=
"avio://"
..
rtmpserver
..
" playpath="
..
playpath
end
end
end
end
return
{
{
path
=
path
;
name
=
name
;
arturl
=
arturl
}
}
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