Spracherkennung für: .lua vermutete Sprache: SPS {SPS[64] Delphi[56] VDM[56]} [Methode: maximale Elemente, drei Dimensionen]
--[[
Copyright ©
2010 VideoLAN
and AUTHORS
Authors: Fabio Ritrovato <sephiroth87
at videolan dot org>
Rémi Duraffort <ivoire
at videolan dot org>
Gian Marco Sibilla <techos
at jamendo dot com>
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.
--]]
local xml = nil
local playlist_tracks_url =
"https://api.jamendo.com/v3.0/playlists/tracks/?client_id=3dce8b55&id=%s&track_type=single+albumtrack&order=track_position_desc&format=xml"
local track_jamendo_url =
"https://www.jamendo.com/track/%s"
local album_jamendo_url =
"https://www.jamendo.com/album/%s"
local playlist_max_tracks =
100
function descriptor()
return { title =
"Jamendo Selections", capabilities = {} }
end
function activate()
main()
end
function main()
lazy_load_xml()
add_playlist(
"Jamendo's Finest - Trending tracks", {
"222810" } )
add_playlist(
"Jamendo's Trending Lounge/Relaxation Tracks", {
"211938",
"213936" } )
add_playlist(
"Jamendo's Trending Classical Tracks", {
"214065" } )
add_playlist(
"Jamendo's Trending Electronic Tracks", {
"211555" } )
add_playlist(
"Jamendo's Trending Jazz Tracks", {
"211407" } )
add_playlist(
"Jamendo's Trending Pop Tracks", {
"211032" } )
add_playlist(
"Jamendo's Trending Hip-Hop Tracks", {
"211404" } )
add_playlist(
"Jamendo's Trending Rock Tracks", {
"211064" } )
add_playlist(
"Jamendo's Trending Songwriter Tracks", {
"211066" } )
add_playlist(
"Jamendo's Trending World Tracks", {
"212188" } )
add_playlist(
"Jamendo's Trending Metal Tracks", {
"226459" } )
add_playlist(
"Jamendo's Trending Soundtracks", {
"226468" } )
end
function lazy_load_xml()
if xml ~= nil
then return nil end
xml = require(
"simplexml")
end
function add_playlist( node_title, ids )
local node = vlc.
sd.add_node( { title=node_title } )
local subitems = {}
-- Used
to detect duplicated
local added = {}
-- Compute the subitem position increment
to interpolate different playlists tracks
local position_increment = #ids
for start, id
in ipairs(ids)
do
-- Compute starting position according
to index
in list
local position = start -
1
-- Build current playlist URL
local url =
string.format( playlist_tracks_url, id )
-- Request & parse URL
local playlist = parse_xml( url )
if playlist ~= nil
then
log(
"Playlist for '" .. node_title ..
"': " .. playlist.children_map[
"name"][
1].children[
1] )
-- Iterate through found tracks
for index, track
in ipairs( playlist.children_map[
"tracks"][
1].children )
do
local track_id = track.children_map[
"id"][
1].children[
1]
log(
"Processing track #" .. index ..
": " .. track_id )
-- Create the item
to be added
to current node
local item = { path = track.children_map[
"audio"][
1].children[
1],
title = track.children_map[
"artist_name"][
1].children[
1] ..
" - " .. track.children_map[
"name"][
1].children[
1],
name = track.children_map[
"name"][
1].children[
1],
artist = track.children_map[
"artist_name"][
1].children[
1],
duration = track.children_map[
"duration"][
1].children[
1],
url =
string.format( track_jamendo_url, track_id ),
arturl = track.children_map[
"image"][
1].children[
1],
meta = {
[
"Download URL"] = track.children_map[
"audiodownload"][
1].children[
1]
} }
--
Add album title
if not a
single
local album = track.children_map[
"album_id"][
1].children[
1]
if album ~= nil
then item[
"meta"][
"Album URL"] =
string.format( album_jamendo_url, album ) e
nd
-- Check if track isn't already present
if not added[track_id] then
-- Append item to subitem table in the correct position
subitems[position] = item
added[track_id] = true
position = position + position_increment
end
if position > playlist_max_tracks then
log( position / position_increment .. " tracks added from playlist " .. id )
break
end
end
else
log( "No result for playlist #" .. id )
end
end
-- Add subitems under node for parsed tracks
for _, item in ipairs( subitems ) do
node:add_subitem( item )
end
end
function parse_xml( url )
local response = xml.parse_url( url )
xml.add_name_maps( response )
if response == nil or #response.children < 2 then return nil end
if response.children[1].children_map["status"][1].children[1] == "success"
and tonumber( response.children[1].children_map["results_count"][1].children[1] ) > 0 then
return response.children[2].children[1].children[1]
else
log( "No result found" )
return nil
end
end
function log( msg )
vlc.msg.dbg( "[JAMENDO] " .. msg )
end