1

давай с самого начала
есть модуль для dle вывод прееров по сериям на сайте
файл установки XML-шаблон
pleilyst-seryi_dle_13_1-14.x.xml

сейчас я тебе его скину , он большой поэтому я тебе его скину из несколько частей ты его сохрани у себя, его надо будет потом переделать после того как расскажу что и как не работает


<dleplugin>
<name>Плейлист серий</name>
<description/>
<icon/>
<version>1.0</version>
<dleversion>13</dleversion>
<versioncompare>greater</versioncompare>
<upgradeurl/>
<filedelete>0</filedelete>
<needplugin/>
<mnotice>0</mnotice>
<mysqlinstall>
<![CDATA[ ]]>
</mysqlinstall>
<mysqlupgrade>
<![CDATA[ ]]>
</mysqlupgrade>
<mysqlenable>
<![CDATA[ ]]>
</mysqlenable>
<mysqldisable>
<![CDATA[ ]]>
</mysqldisable>
<mysqldelete>
<![CDATA[ ]]>
</mysqldelete>
<phpinstall>
<![CDATA[ ]]>
</phpinstall>
<phpupgrade>
<![CDATA[ ]]>
</phpupgrade>
<phpenable>
<![CDATA[ ]]>
</phpenable>
<phpdisable>
<![CDATA[ ]]>
</phpdisable>
<phpdelete>
<![CDATA[ ]]>
</phpdelete>
<notice>
<![CDATA[ ]]>
</notice>
<file name="engine/inc/addnews.php">
<operation action="before">
<searchcode>
<![CDATA[ <script ]]>
</searchcode>
<replacecode>
<![CDATA[ <script type=\"text/jаvascript\" src=\"/engine/ajax/controller.php?mod=playlists&script=1\"></script> ]]>
</replacecode>
</operation>
</file>
<file name="engine/inc/editnews.php">
<operation action="before">
<searchcode>
<![CDATA[ <script> function preview(){"; ]]>
</searchcode>
<replacecode>
<![CDATA[ <script type=\"text/jаvascript\" src=\"/engine/ajax/controller.php?mod=playlists&script=1\"></script> ]]>
</replacecode>
</operation>
</file>
<file name="engine/ajax/playlists.php">
<operation action="create">
<replacecode>
<![CDATA[ <?php if (isset($_REQUEST["script"])) { @header("Content-Type: text/jаvascript; charset=UTF-8"); echo ' \'use strict\'; class Playlists { constructor(PL$5) { var data = this; this["xf"] = PL$5; this["panel"] = $(".panel")["length"] ? $(".panel") : $(".box"); if (!$(".panel")["length"]) { $("body")["append"]("<style>.dd {position: relative;display: block;padding: 0;list-style: none;}.dd-list {display: block;position: relative;margin: 0;padding: 0;list-style: none;}.dd-list .dd-list {padding-left: 30px;}.dd-collapsed .dd-list {display: none;}.dd-item,.dd-empty,.dd-placeholder {display: block;position: relative;margin: 0;padding: 0;min-height: 20px;}.dd-content {background-color: #fff;margin: 10px 0;padding: 5px 10px 5px 40px;display: block;height: 30px;-webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.12),0 1px 2px rgba(0,0,0,0.24);box-shadow: 0 1px 3px rgba(0,0,0,0.12),0 1px 2px rgba(0,0,0,0.24);}.dd-handle:before {font-size: 16px;line-height: 1;display: block;position: absolute;left: 0;top: 6px;width: 100%;text-align: center;text-indent: 0;}.dd-handle {position: absolute;margin: 0;left: 0;top: 0;width: 30px;height: 30px;text-indent: 100%;white-space: nowrap;overflow: hidden;background: #fff;cursor: move;color: rgba(0,0,0,.54);}.dd-item > button {display: block;position: relative;cursor: pointer;float: left;width: 25px;height: 20px;margin: 5px 0;padding: 0;text-indent: 100%;white-space: nowrap;overflow: hidden;border: 0;background: transparent;font-size: 12px;line-height: 1;text-align: center;font-weight: bold;margin-left: 30px;}.dd-item > button:before {display: block;position: absolute;width: 100%;text-align: center;text-indent: 0;}.dd-placeholder,.dd-empty {margin: 10px 0;padding: 0;min-height: 30px;background: #f2fbff;border: 1px dashed #b6bcbf;box-sizing: border-box;-moz-box-sizing: border-box;}.dd-dragel {position: absolute;pointer-events: none;z-index: 9999;}.dd-dragel > .dd-item .dd-handle {margin-top: 0;}.dd-item input {background: transparent;box-shadow: none !important;}.dd-handle {margin-top: 2px;border: none;}.dd-content {padding-top: 4px;height: 32px;}.playlists-add, .playlists-get, .playlists-edit, .playlists-remove, .playlists-add i, .playlists-get i, .playlists-edit i, .playlists-remove i {font-size: 14px !important;}</style>"); } this["panel"]["find"](".nav")["append"](\'<li id="tab-playlists"><a href="#tabplaylists" data-toggle="tab" class="legitRipple"><i class="fa fa-bars icon-list position-left"></i> Плейлисты</a></li>\'); this["panel"]["find"](".tab-content > .tab-pane:last")["after"](\'<div class="tab-pane" id="tabplaylists"><div class="panel-body"></div></div>\'); this["tab"] = this["panel"]["find"]("#tabplaylists > .panel-body"); $["each"](this["xf"], function(boardManager, value) { var message = $("#xf_" + value)["val"](); data["tab"]["append"](\'<div class="playlists-area" id="playlists-\' + value + \'" data-xfname="\' + value + \'"><a href="#" class="playlists-add pull-right" style="margin: 8px;"><i title="добавить" alt="добавить" class="fa fa-plus icon-plus"></i></a><a href="#" class="playlists-edit pull-right" style="font-weight: bold;margin: 8px;"><i class="fa fa-edit icon-edit text-primary"></i></a><a href="#" class="playlists-get pull-right" style="font-weight: bold;margin: 8px;"><i class="fa fa-link icon-link text-primary"></i></a><a href="#" class="playlists-tpl pull-right" style="font-weight: bold;margin: 8px;display: none"><i class="fa fa-list-ol icon-list-ol text-primary"></i></a><b>Плейлист доп-поля «\' + value + \'»</b><br>Изменения плейлиста сохраняются в доп-поле на вкладке «Новость» при смене фокуса или клике в любую область документа<br><br><div class="dd"><ol class="dd-list"></ol></div></div>\'); if (PL$5["length"] != boardManager + 1) { data["tab"]["append"]("<br><hr><br>"); } if (message == "") { return; } try { var timeBeginInSecC3 = JSON["parse"](message); data["setplaylist"](value, timeBeginInSecC3); } catch (debugObject) { console["log"]("Playlists::ERROR", debugObject); } }); this["panel"]["on"]("click", ".playlists-add", function(result) { var _0x9155x5 = $(this)["closest"](".playlists-area")["data"]("xfname"); var proto = $(this)["closest"](".dd-item"); var $wrapper = data["tab"]["find"]("#playlists-" + _0x9155x5 + " .dd > .dd-list"); var v = $(this)["siblings"](".playlists-tpl")["data"]("tpl"); var th_field = ""; if (proto["length"]) { if (!proto["find"](".dd-list")["length"]) { proto["append"](\'<ol class="dd-list"></ol>\')["prepend"](\'<button data-action="collapse" type="button">Collapse</button><button data-action="expand" type="button" style="display: none;">Expand</button>\'); } proto["find"]("input:eq(1)")["hide"]()["val"](""); $wrapper = proto["find"]("> ol.dd-list"); proto["find"]("> .dd-content > .pull-right > .playlists-tpl")["show"](); } else { $(this)["closest"](".playlists-area")["find"]("> .playlists-tpl")["show"](); } var scrollLeft = result["shiftKey"] ? 10 : 1; var firstColLeft = 1; for (; firstColLeft <= scrollLeft; firstColLeft++) { if (typeof v != "undefined" && v != "") { th_field = v["replace"]("{num}", $wrapper["find"]("> li")["length"] + 1); if ($wrapper["find"]("> li:last-child")["length"]) { var sArrDayId = $wrapper["find"]("> li:last-child input:eq(0)")["val"]()["match"](/([0-9]+)/); if (sArrDayId) { th_field = v["replace"]("{num}", parseInt(sArrDayId[1]) + 1); } } } $wrapper["append"](\'<li class="dd-item"><div class="dd-handle"></div><div class="dd-content"><input type="text" placeholder="Название" autocomplete="off" style="border: 0px;font-weight: bold;width: 25%;" value="\' + th_field + \'"><input type="text" placeholder="Ссылка" autocomplete="off" style="border: 0px;width: 65%;"><div class="pull-right"><a href="#" class="playlists-tpl" style="font-weight: bold;margin: 8px;display: none"><i class="fa fa-list-ol icon-list-ol text-primary"></i></a><a href="#" class="playlists-get" style="font-weight: bold;margin: 8px;"><i class="fa fa-link icon-link text-primary"></i></a><a href="#" class="playlists-add"><i title="добавить" alt="добавить" class="fa fa-plus icon-plus"></i></a>&nbsp;&nbsp;<a href="#" class="playlists-remove"><i title="удалить" alt="удалить" class="fa fa-trash-o text-danger icon-trash"></i></a></div></div></li>\'); } return false; }); this["panel"]["on"]("click", ".playlists-edit", function() { var value = $(this)["closest"](".playlists-area")["data"]("xfname"); var _0x9155x7 = JSON["stringify"](data["getplaylist"](value)); $("#dlepopup-playlists")["remove"](); $("body")["append"]("<div id=\'dlepopup-playlists\' title=\'Импорт/экспорт плейлиста\' style=\'display:none\'>Плейлист в формате JSON. Вы можете скопировать код данного плейлиста или вставить код другого плейлиста.<br /><br /><textarea id=\'dle-promt-text-playlists\' class=\'ui-widget-content ui-corner-all form-control\' style=\'width:97%;height:100px; padding: .4em;\'>" + _0x9155x7 + "</textarea></div>"); $("#dlepopup-playlists")["dialog"]({ autoOpen: true, width: 500, resizable: false, buttons: { "Закрыть": function() { $(this)["dialog"]("close"); }, "Применить": function() { var value2 = $("#dle-promt-text-playlists")["val"](); if (value2 == "") { value2 = "[]"; } try { value2 = JSON["parse"](value2); data["setplaylist"](value, value2); $("#xf_" + value)["val"](JSON["stringify"](data["getplaylist"](value))); } catch (debugObject) { console["log"]("Playlists::ERROR", debugObject); } $(this)["dialog"]("close"); } } }); return false; }); this["panel"]["on"]("click", ".playlists-get", function() { var value = $(this)["closest"](".playlists-area")["data"]("xfname"); var _0x9155x7 = JSON["stringify"](data["getplaylist"](value)); var a3 = false; if ($(this)["closest"](".dd-item")["length"]) { if (!$(this)["closest"](".dd-item")["find"](".dd-list")["length"]) { $(this)["closest"](".dd-item")["append"](\'<ol class="dd-list"></ol>\')["prepend"](\'<button data-action="collapse" type="button">Collapse</button><button data-action="expand" type="button" style="display: none;">Expand</button>\'); } $(this)["closest"](".dd-item")["find"]("input:eq(1)")["hide"]()["val"](""); a3 = $(this)["closest"](".dd-item")["find"](".dd-list"); } $("#dlepopup-playlists")["remove"](); $("body")["append"]("<div id=\'dlepopup-playlists\' title=\'Парсинг плейлиста с Youtube/Rutube/Videomore\' style=\'display:none\'>Вставьте ссылку на плейлист Youtube, Rutube, Videomore, Sibnet, Первый канал(1tv.ru) или СТС(ctc.ru) и нажмите «Получить плейлист»<br /><br /><input type=\'text\' id=\'dle-promt-text-playlists-get\' class=\'ui-widget-content ui-corner-all form-control\' style=\'width:97%;\'><br /><br /><input type=\'checkbox\' id=\'dle-promt-episode_set-playlists-get\' value=\'1\' checked> <label for=\'dle-promt-episode_set-playlists-get\'>привести название к виду «N серия», если возможно</label></div>"); $("#dlepopup-playlists")["dialog"]({ autoOpen: true, width: 500, resizable: false, buttons: { "Закрыть": function() { $(this)["dialog"]("close"); }, "Получить плейлист": function() { var my_get_playlist = $("#dle-promt-text-playlists-get")["val"](); var chAttr = $("#dle-promt-episode_set-playlists-get")["prop"]("checked"); $(this)["dialog"]("close"); ShowLoading(); $["ajax"]({ url: "/engine/ajax/playlists.php", type: "POST", dataType: "JSON", dаta: { get_playlist: my_get_playlist, episode_set: chAttr ? "1" : "0" }, success: function(response) { HideLoading(); if (response["success"] === false) { DLEalert("Произошла ошибка: " + response["message"], "Ошибка"); return; } try { data["setplaylist"](value, response["playlist"], a3); $("#xf_" + value)["val"](JSON["stringify"](data["getplaylist"](value))); } catch (debugObject) { console["log"]("Playlists::ERROR", debugObject); } }, error: function() { HideLoading(); DLEalert("Произошла неизвестная ошибка при получении плейлиста", "Ошибка"); } }); } } }); return false; }); this["panel"]["on"]("click", ".playlists-tpl", function() { var p = $(this); var _0x9155x5 = $(this)["closest"](".playlists-area")["data"]("xfname"); var which = ["[без шаблона]", "{num} сезон", "{num} серия", "{num} выпуск", "{num} эпизод", "{num} плеер", "{num} часть", "{num} фильм"]; var cal = $(this)["data"]("tpl"); var pix_color = ""; $["each"](which, function(context, default_calendar) { pix_color = pix_color + ("<input type=\'radio\' name=\'template\' id=\'playlists-template-" + context + "\' class=\'playlists-tpl-radio\' value=\'" + context + "\'" + (cal == default_calendar || typeof cal == "undefined" && context == 0 ? " checked" : "") + "><label for=\'playlists-template-" + context + "\'>" + default_calendar + "</label>"); }); $("#dlepopup-playlists")["remove"](); $("body")["append"]

и еще 

("<div id=\'dlepopup-playlists\' title=\'Шаблон названий пунктов плейлиста\' style=\'display:none\'>Вы можете выбрать один из вариантов названий пунктов в вашем плейлисте.<br /><br />" + pix_color + "<style>.playlists-tpl-radio + label { width: 100%; display: block; border: 1px solid #ccc; border-radius: 4px; padding: 10px; font-size: 13px; } .playlists-tpl-radio { display: none; } .playlists-tpl-radio:checked + label { background-color: #ececec; font-weight: bold; }</style></div>"); $("#dlepopup-playlists")["dialog"]({ autoOpen: true, width: 500, resizable: false, buttons: { "Закрыть": function() { $(this)["dialog"]("close"); }, "Применить": function() { var i = $("input[name=template]:checked")["val"](); var nums = p["closest"](".playlists-area")["find"](".dd-list"); p["data"]("tpl", i > 0 ? which[i] : ""); if (i > 0) { if (p["closest"](".dd-item")["length"] > 0) { nums = p["closest"](".dd-item")["find"]("> .dd-list"); } nums["find"]("> li")["each"](function(canCreateDiscussions) { $(this)["find"]("input:eq(0)")["val"](which[i]["replace"]("{num}", canCreateDiscussions + 1)); }); } $(this)["dialog"]("close"); } } }); return false; }); this["panel"]["on"]("click", ".playlists-remove", function() { var snap = $(this); DLEconfirm("Вы действительно хотите удалить из плейлиста данный пункт и все его подпункты?", "Playlists", function() { var value = snap["closest"](".playlists-area")["data"]("xfname"); var colorSamples = snap["closest"](".dd-item"); var p = colorSamples["closest"](".dd-list"); colorSamples["remove"](); if (p["find"]("> li")["length"] < 1) { p["parent"]()["find"]("input:eq(1)")["show"](); p["parent"]()["find"]("button")["remove"](); if (p["closest"](".dd-item")["length"] > 0) { p["closest"](".dd-item")["find"]("> .dd-content > .pull-right > .playlists-tpl")["hide"](); p["remove"](); } else { p["closest"](".playlists-area")["find"]("> .playlists-tpl")["hide"](); } } $("#xf_" + value)["val"](JSON["stringify"](data["getplaylist"](value))); }); return false; }); this["tab"]["on"]("change", ":input", function() { var value = $(this)["closest"](".playlists-area")["data"]("xfname"); if ($(this)["index"]() == 1) { var p = $(this); var tokens = $(this)["val"](); var data = $(this)["parent"]()["parent"]()["parent"]()["closest"](".dd-item")["find"](".playlists-tpl"); var r = $(this)["closest"](".dd-item")["prev"](".dd-item")["find"]("input:eq(0)")["val"](); var sels = tokens["match"](/src=["|\']+(.*?)["|\']+/); if (sels !== null) { tokens = sels[1]; } tokens = tokens["trim"](); if (typeof r != "undefined") { r = r["match"](/([0-9]+)/); if (r) { r = parseInt(r[1]); } else { r = 1; } } else { r = 1; } if (!data["length"]) { data = $(this)["closest"](".playlists-area")["find"]("> .playlists-tpl"); } data = data["data"]("tpl"); $["each"](tokens["split"](" "), function(redOffset, key) { key = key["trim"](); if (key["substring"](0, 4) != "http" && key["substring"](0, 2) != "//" && key != "") { key = "//" + key; } if (typeof playlists_change === "function") { key = playlists_change(key); } if (redOffset == 0) { p["val"](key); return; } else { if (key == "") { return; } } var el = p["closest"](".dd-item")["clone"](); p["closest"](".dd-item")["after"](el); p = p["closest"](".dd-item")["next"](".dd-item"); p["find"]("input:eq(1)")["val"](key); if (typeof data != "undefined") { p["find"]("input:eq(0)")["val"](data["replace"]("{num}", r + redOffset)); } }); } $("#xf_" + value)["val"](JSON["stringify"](data["getplaylist"](value))); }); this["tab"]["find"](".dd")["nestable"]({ maxDepth: 500 })["nestable"]("collapseAll")["on"]("change", function() { var value = $(this)["closest"](".playlists-area")["data"]("xfname"); $("#xf_" + value)["val"](JSON["stringify"](data["getplaylist"](value))); }); } getplaylist(name, $navLast = false) { var leon_construct = this; var PL$86 = []; $["each"]($navLast ? $navLast : $("#playlists-" + name + " .dd > .dd-list > li"), function(canCreateDiscussions, isSlidingUp) { var torrent_title = $(this)["find"]("input:eq(0)")["val"](); var new_data = $(this)["find"]("input:eq(1)")["val"](); var temp = false; if ($(this)["find"]("> .dd-list")["length"]) { temp = leon_construct["getplaylist"](name, $(this)["find"]("> .dd-list > li")); } if (torrent_title == "" || new_data == "" && (temp === false || !temp["length"])) { return; } if (temp) { PL$86["push"]({ title: torrent_title, folder: temp }); } else { PL$86["push"]({ title: torrent_title, file: new_data }); } }); return PL$86; } setplaylist(sym, data, proto = false) { var symAttrs = this; if (!proto) { proto = symAttrs["tab"]["find"]("#playlists-" + sym + " .dd > .dd-list"); } proto["html"](""); $["each"](data, function(canCreateDiscussions, data) { if (typeof data["file"] != "string") { data["file"] = ""; } proto["append"](\'<li class="dd-item" data-index="\' + canCreateDiscussions + \'"><div class="dd-handle"></div><div class="dd-content"><input type="text" placeholder="Название" autocomplete="off" style="border: 0px;font-weight: bold;width: 25%;" value="\' + data["title"] + \'"><input type="text" placeholder="Ссылка" autocomplete="off" style="border: 0px;width: 65%;" value="\' + data["file"] + \'"><div class="pull-right"><a href="#" class="playlists-get" style="font-weight: bold;margin: 8px;"><i class="fa fa-link icon-link text-primary"></i></a><a href="#" class="playlists-add"><i title="добавить" alt="добавить" class="fa fa-plus icon-plus"></i></a>&nbsp;&nbsp;<a href="#" class="playlists-remove"><i title="удалить" alt="удалить" class="fa fa-trash-o text-danger icon-trash"></i></a></div></div></li>\'); if (typeof data["folder"] != "undefined") { if (proto["find"]("> li[data-index=" + canCreateDiscussions + "] .dd-list")["length"] < 1) { proto["find"]("> li[data-index=" + canCreateDiscussions + "]")["append"](\'<ol class="dd-list"></ol>\'); } proto["find"]("> li[data-index=" + canCreateDiscussions + "] input:eq(1)")["hide"]()["val"](""); symAttrs["setplaylist"](sym, data["folder"], proto["find"]("> li[data-index=" + canCreateDiscussions + "] > .dd-list")); } }); } } $(document)["ready"](function(canCreateDiscussions) { var PL$120 = []; $("div[id^=xfield_holder_]")["each"](function() { if ($(this)["find"]("label")["html"]()["match"](/[PL]/)) { PL$120["push"]($(this)["attr"]("id")["replace"]("xfield_holder_", "")); } }); if (PL$120["length"]) { Playlists = new Playlists(PL$120); } }); '; exit; } @header("Content-type: application/json; charset=" . $config["charset"]); if (isset($_REQUEST["get_playlist"])) { if (3 < $member_id["user_group"] || !$is_logged) { exit("{\"success\":false,\"message\":\"Ошибка: у вас нет доступа\"}"); } $url = trim($_REQUEST["get_playlist"]); $episode_set = intval($_REQUEST["episode_set"]); $type = clean_url($url); if (!in_array($type, array("youtube.com", "rutube.ru", "videomore.ru", "video.sibnet.ru", "1tv.ru", "ctc.ru"))) { exit("{\"success\":false,\"message\":\"Ошибка: ссылка на плейлист должна быть либо Youtube, Rutube, Videomore, Sibnet, Первый канал(1tv.ru) или СТС(ctc.ru)\"}"); } if ($type == "youtube.com" && preg_match("'list=(.*)'i", $url, $match)) { $url = "https://www.youtube.com/playlist?list=" . $match[1]; } else { if ($type == "rutube.ru" && preg_match("'pl_id=([0-9]+)'i", $url, $match)) { $url = "https://rutube.ru/api/playlist/" . (stripos($url, "pl_type=user") ? "user" : "source") . "/" . $match[1] . "/?format=json"; } else { if ($type == "videomore.ru" || $type == "1tv.ru" || $type == "ctc.ru") { } else { if ($type == "video.sibnet.ru" && preg_match("'pls([0-9]+)'i", $url, $match)) { $url = "http://video.sibnet.ru/pls" . $match[1] . "/"; } else { exit("{\"success\":false,\"message\":\"Ошибка: неверный формат ссылки\"}"); } } } } $data = request($url); $playlist = array(); if ($type == "rutube.ru") { $temp_array = json_decode($data, true); $url = $temp_array["next"]; foreach ($temp_array["results"] as $key => $value) { $playlist[] = array("title" => $value["title"], "file" => $value["embed_url"]); } while ($url) { $data = request($url); $temp_array = json_decode($data, true); if (count($temp_array)) { foreach ($temp_array["results"] as $key => $value) { $playlist[] = array("title" => $value["title"], "file" => $value["embed_url"]); } } $url = $temp_array["next"]; } } else { if ($type == "youtube.com") { if (preg_match("'window\\[\"ytInitialData\"\\] = (.*);'i", $data, $match)) { $temp_array = json_decode($match[1], true); if (@count($temp_array["contents"]["twoColumnBrowseResultsRenderer"]["tabs"][0]["tabRenderer"]["content"]["sectionListRenderer"]["contents"][0]["itemSectionRenderer"]["contents"][0]["playlistVideoListRenderer"]["contents"])) { foreach ($temp_array["contents"]["twoColumnBrowseResultsRenderer"]["tabs"][0]["tabRenderer"]["content"]["sectionListRenderer"]["contents"][0]["itemSectionRenderer"]["contents"][0]["playlistVideoListRenderer"]["contents"] as $key => $value) { $playlist[] = array("title" => $value["playlistVideoRenderer"]["title"]["simpleText"], "file" => "https://www.youtube.com/embed/" . $value["playlistVideoRenderer"]["videoId"]); } } } } else { if ($type == "video.sibnet.ru") { $data = iconv("windows-1251", "utf-8", $data); if (preg_match_all("'<a href = \\'/pls[0-9]+/video([0-9]+)/\\' class = \\'vname\\' title = \\'(.*?)\\'>'is", $data, $matches)) { foreach ($matches[1] as $key => $value) { $playlist[] = array("title" => trim($matches[2][$key]), "file" => "https://video.sibnet.ru/shell.php?videoid=" . $value); } } if (preg_match_all("'<a class=multipagesnavig href=\"/pls[0-9]+/&amp;page=([0-9]+)\"'", $data, $matches)) { for ($pages = intval(array_pop($matches[1])); 1 < $pages; $pages--) { $data = request($url . "&page=" . $pages . "/"); $data = iconv("windows-1251", "utf-8", $data); if (preg_match_all("'<a href = \\'/pls[0-9]+/video([0-9]+)/\\' class = \\'vname\\' title = \\'(.*?)\\'>'is", $data, $matches)) { foreach ($matches[1] as $key => $value) { $playlist[] = array("title" => trim($matches[2][$key]), "file" => "https://video.sibnet.ru/shell.php?videoid=" . $value); } } } } } else { if ($type == "1tv.ru") { if (preg_match("'data-type=\"collection\" data-with-voting=\"(false|true)\" data-id=\"([0-9]+)\"'", $data, $match)) { $data = request("https://www.1tv.ru/video_materials.json?collection_id=" . $match[2]); $data = json_decode($data, true); if (is_array($data)) { foreach ($data as $key => $value) { $playlist[] = array("title" => $value["title"], "file" => "//www.1tv.ru/embed/" . $value["uid"] . ":" . $value["type"]); } } } } else { if ($type == "ctc.ru") { if (preg_match("'/projects/(.+?)/(.+?)/video/(.+?)/'i", $url, $match) && preg_match("'partner_id=([0-9]+)'is", $data, $partner_id)) { $data = request("https://ctc.ru/project_seasons/?category=" . $match[1] . "&project_name=" . $match[2] . "&season_name=" . $match[3]); $data = json_decode($data, true); foreach ($data["series"] as $value) { $playlist[] = array("title" => trim($value["title"]), "file" => "https://player.videomore.ru/?partner_id=" . $partner_id[1] . "&amp;track_id=" . $value["id"] . "&amp;userToken="); } } } else { if (preg_match("'<div class=\"seasons-tracks\"\\s+data-vue=\"seasons-tracks\"\\s+data-custom-data=\"(.+?)\"'is", $data, $match)) { $match[1] = htmlspecialchars_decode($match[1]); $match[1] = json_decode($match[1], true); if (isset($match[1]["episodes"])) { foreach ($match[1]["episodes"] as $key => $value) { $playlist[] = array("title" => trim($value["title"]), "file" => "https://videomore.ru/embed/" . $value["id"]); } } } $playlist = array_reverse($playlist); } } } } } if ($episode_set) { foreach ($playlist as $key => $value) { if (preg_match("'([0-9]+)\\s*(серия|эпизод)'is", $value["title"], $match)) { $playlist[$key]["title"] = $match[1] . " " . $match[2]; } else { if (preg_match("'\\(([0-9]+)\\)\\s*(серия|эпизод)'is", $value["title"], $match)) { $playlist[$key]["title"] = $match[1] . " " . $match[2]; } } } } exit(json_encode(array("success" => true, "playlist" => $playlist))); } else { if (isset($_REQUEST["news_id"])) { $news_id = intval($_REQUEST["news_id"]); if (!$news_id) { exit("{\"success\":false,\"message\":\"ERR_NEWS_ID\"}"); } if (isset($_REQUEST["xfield"])) { $xfield = false; foreach (xfieldsload() as $xf) { if ($xf[0] == $_REQUEST["xfield"] && stripos($xf[1], "[PL]")) { $xfield = $xf[0]; break; } } if (!$xfield) { exit("{\"success\":false,\"message\":\"ERR_XFIELD_ACCESS\"}"); } if ($cache = dle_cache("full_" . $news_id . "_playlists", $xfield)) { exit($cache); } $row = $db->super_query("SELECT xfields FROM " . PREFIX . "_post WHERE id = " . $news_id); if (!$row["xfields"]) { exit("{\"success\":false,\"message\":\"ERR_NOT_NEWS\"}"); } $row["xfields"] = stripslashes($row["xfields"]); $xfields = xfieldsdataload($row["xfields"]); if (!isset($xfields[$xfield])) { exit("{\"success\":false,\"message\":\"ERR_NOT_DATA\"}"); } if ($config["charset"] == "windows-1251") { $xfields[$xfield] = iconv("windows-1251//IGNORE", "utf-8", $xfields[$xfield]); } $playlists = json_decode($xfields[$xfield], true); if (!$playlists) { exit("{\"success\":false,\"message\":\"ERR_INVALID_DATA\"}"); } $buffer = array(); playlists($playlists); $template = ""; foreach ($buffer as $key => $value) { if ($key != "iframes") { $template .= "<div class=\"playlists-items\"><ul>" . $value . "</ul></div>"; } } $template = "<div class=\"playlists-player\"><div class=\"playlists-lists\">" . $template . "</div><div class=\"playlists-iframe\"></div><div class=\"playlists-videos\"><div class=\"playlists-items\"><ul>" . $buffer["iframes"] . "</ul></div></div></div>"; $buffer = json_encode(array("success" => true, "response" => $template)); create_cache("full_" . $news_id . "_playlists", $buffer, $xfield); echo $buffer; } else { exit("{\"success\":false,\"message\":\"ERR_XFIELD_NAME\"}"); } } else { exit("{\"success\":false,\"message\":\"ERR_NEWS_ID\"}"); } } function request($url) { $ch = curl_init($url); curl_setopt_array($ch, array(CURLOPT_RETURNTRANSFER => 1, CURLOPT_ENCODING => "gzip, deflate", CURLOPT_SSL_VERIFYPEER => false, CURLOPT_HTTPHEADER => array("Accept:*/*", "Accept-Encoding:gzip, deflate", "Accept-Language:ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7", "Connection:keep-alive", "User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"))); $data = curl_exec($ch); curl_close($ch); return $data; } function playlists($playlists, $parent = 1, $level = 0) { global $buffer; foreach ($playlists as $index => $row) { if (isset($row["folder"])) { $buffer[$parent] .= "<li data-id=\"" . $level . "_" . $index . "\">" . $row["title"] . "</li>"; playlists($row["folder"], $parent + 1, $level . "_" . $index); } else { $buffer["iframes"] .= "<li data-file=\"" . $row["file"] . "\" data-id=\"" . $level . "\">" . $row["title"] . "</li>"; } } } ?> ]]>
</replacecode>
</operation>
</file>
</dleplugin>

Готово
запомни это файл pleilyst-seryi_dle_13_1-14.x.xml





когда я в дополнительное поле вставляю 
[{"title":"1 выпуск","file":"https://vk.com/video_ext.php?oid=-215421337&amp;id=456239680&amp;hd=3"},{"title":"2 выпуск","file":"https://vk.com/video_ext.php?oid=-215421337&amp;id=456239716&amp;hd=3"}

все работает выводит плер и серии



скрипт /player.js который выводит плеера по сериям сейчас скину
вот сам скрипт, скину за два раза так как он большой

первая часть


/*! sly 1.6.1 - 8th Aug 2015 | https://github.com/darsain/sly */
!function(a,b,c){"use strict";function d(b,p,q){function K(c){var d=0,e=Gb.length;if(yb.old=a.extend({},yb),wb=tb?0:ub[rb.horizontal?"width":"height"](),Bb=zb[rb.horizontal?"width":"height"](),xb=tb?b:vb[rb.horizontal?"outerWidth":"outerHeight"](),Gb.length=0,yb.start=0,yb.end=H(xb-wb,0),Rb){d=Ib.length,Hb=vb.children(rb.itemSelector),Ib.length=0;var f,g=j(vb,rb.horizontal?"paddingLeft":"paddingTop"),h=j(vb,rb.horizontal?"paddingRight":"paddingBottom"),i="border-box"===a(Hb).css("boxSizing"),l="none"!==Hb.css("float"),m=0,n=Hb.length-1;xb=0,Hb.each(function(b,c){var d=a(c),e=c.getBoundingClientRect(),i=G(rb.horizontal?e.width||e.right-e.left:e.height||e.bottom-e.top),k=j(d,rb.horizontal?"marginLeft":"marginTop"),o=j(d,rb.horizontal?"marginRight":"marginBottom"),p=i+k+o,q=!k||!o,r={};r.el=c,r.size=q?i:p,r.half=r.size/2,r.start=xb+(q?k:0),r.center=r.start-G(wb/2-r.size/2),r.end=r.start-wb+r.size,b||(xb+=g),xb+=p,rb.horizontal||l||o&&k&&b>0&&(xb-=I(k,o)),b===n&&(r.end+=h,xb+=h,m=q?o:0),Ib.push(r),f=r}),vb[0].style[rb.horizontal?"width":"height"]=(i?xb:xb-g-h)+"px",xb-=m,Ib.length?(yb.start=Ib[0][Pb?"center":"start"],yb.end=Pb?f.center:xb>wb?f.end:yb.start):yb.start=yb.end=0}if(yb.center=G(yb.end/2+yb.start/2),V(),Ab.length&&Bb>0&&(rb.dynamicHandle?(Cb=yb.start===yb.end?Bb:G(Bb*wb/xb),Cb=k(Cb,rb.minHandleSize,Bb),Ab[0].style[rb.horizontal?"width":"height"]=Cb+"px"):Cb=Ab[rb.horizontal?"outerWidth":"outerHeight"](),Db.end=Bb-Cb,ec||N()),!tb&&wb>0){var o=yb.start,p="";if(Rb)a.each(Ib,function(a,b){Pb?Gb.push(b.center):b.start+b.size>o&&o<=yb.end&&(o=b.start,Gb.push(o),o+=wb,o>yb.end&&o<yb.end+wb&&Gb.push(yb.end))});else for(;o-wb<yb.end;)Gb.push(o),o+=wb;if(Eb[0]&&e!==Gb.length){for(var q=0;q<Gb.length;q++)p+=rb.pageBuilder.call(sb,q);Fb=Eb.html(p).children(),Fb.eq(Jb.activePage).addClass(rb.activeClass)}}if(Jb.slideeSize=xb,Jb.frameSize=wb,Jb.sbSize=Bb,Jb.handleSize=Cb,Rb){c&&null!=rb.startAt&&(T(rb.startAt),sb[Qb?"toCenter":"toStart"](rb.startAt));var r=Ib[Jb.activeItem];L(Qb&&r?r.center:k(yb.dest,yb.start,yb.end))}else c?null!=rb.startAt&&L(rb.startAt,1):L(k(yb.dest,yb.start,yb.end));ob("load")}function L(a,b,c){if(Rb&&cc.released&&!c){var d=U(a),e=a>yb.start&&a<yb.end;Qb?(e&&(a=Ib[d.centerItem].center),Pb&&rb.activateMiddle&&T(d.centerItem)):e&&(a=Ib[d.firstItem].start)}cc.init&&cc.slidee&&rb.elasticBounds?a>yb.end?a=yb.end+(a-yb.end)/6:a<yb.start&&(a=yb.start+(a-yb.start)/6):a=k(a,yb.start,yb.end),ac.start=+new Date,ac.time=0,ac.from=yb.cur,ac.to=a,ac.delta=a-yb.cur,ac.tweesing=cc.tweese||cc.init&&!cc.slidee,ac.immediate=!ac.tweesing&&(b||cc.init&&cc.slidee||!rb.speed),cc.tweese=0,a!==yb.dest&&(yb.dest=a,ob("change"),ec||M()),Z(),V(),W(),O()}function M(){if(sb.initialized){if(!ec)return ec=t(M),void(cc.released&&ob("moveStart"));ac.immediate?yb.cur=ac.to:ac.tweesing?(ac.tweeseDelta=ac.to-yb.cur,D(ac.tweeseDelta)<.1?yb.cur=ac.to:yb.cur+=ac.tweeseDelta*(cc.released?rb.swingSpeed:rb.syncSpeed)):(ac.time=I(+new Date-ac.start,rb.speed),yb.cur=ac.from+ac.delta*a.easing[rb.easing](ac.time/rb.speed,ac.time,0,1,rb.speed)),ac.to===yb.cur?(yb.cur=ac.to,cc.tweese=ec=0):ec=t(M),ob("move"),tb||(m?vb[0].style[m]=n+(rb.horizontal?"translateX":"translateY")+"("+-yb.cur+"px)":vb[0].style[rb.horizontal?"left":"top"]=-G(yb.cur)+"px"),!ec&&cc.released&&ob("moveEnd"),N()}}function N(){Ab.length&&(Db.cur=yb.start===yb.end?0:((cc.init&&!cc.slidee?yb.dest:yb.cur)-yb.start)/(yb.end-yb.start)*Db.end,Db.cur=k(G(Db.cur),Db.start,Db.end),_b.hPos!==Db.cur&&(_b.hPos=Db.cur,m?Ab[0].style[m]=n+(rb.horizontal?"translateX":"translateY")+"("+Db.cur+"px)":Ab[0].style[rb.horizontal?"left":"top"]=Db.cur+"px"))}function O(){Fb[0]&&_b.page!==Jb.activePage&&(_b.page=Jb.activePage,Fb.removeClass(rb.activeClass).eq(Jb.activePage).addClass(rb.activeClass),ob("activePage",_b.page))}function P(){bc.speed&&yb.cur!==(bc.speed>0?yb.end:yb.start)||sb.stop(),hc=cc.init?t(P):0,bc.now=+new Date,bc.pos=yb.cur+(bc.now-bc.lastTime)/1e3*bc.speed,L(cc.init?bc.pos:G(bc.pos)),cc.init||yb.cur!==yb.dest||ob("moveEnd"),bc.lastTime=bc.now}function Q(a,b,d){if("boolean"===e(b)&&(d=b,b=c),b===c)L(yb[a],d);else{if(Qb&&"center"!==a)return;var f=sb.getPos(b);f&&L(f[a],d,!Qb)}}function R(a){return null!=a?i(a)?a>=0&&a<Ib.length?a:-1:Hb.index(a):-1}function S(a){return R(i(a)&&0>a?a+Ib.length:a)}function T(a,b){var c=R(a);return!Rb||0>c?!1:((_b.active!==c||b)&&(Hb.eq(Jb.activeItem).removeClass(rb.activeClass),Hb.eq(c).addClass(rb.activeClass),_b.active=Jb.activeItem=c,W(),ob("active",c)),c)}function U(a){a=k(i(a)?a:yb.dest,yb.start,yb.end);var b={},c=Pb?0:wb/2;if(!tb)for(var d=0,e=Gb.length;e>d;d++){if(a>=yb.end||d===Gb.length-1){b.activePage=Gb.length-1;break}if(a<=Gb[d]+c){b.activePage=d;break}}if(Rb){for(var f=!1,g=!1,h=!1,j=0,l=Ib.length;l>j;j++)if(f===!1&&a<=Ib[j].start+Ib[j].half&&(f=j),h===!1&&a<=Ib[j].center+Ib[j].half&&(h=j),j===l-1||a<=Ib[j].end+Ib[j].half){g=j;break}b.firstItem=i(f)?f:0,b.centerItem=i(h)?h:b.firstItem,b.lastItem=i(g)?g:b.centerItem}return b}function V(b){a.extend(Jb,U(b))}function W(){var a=yb.dest<=yb.start,b=yb.dest>=yb.end,c=(a?1:0)|(b?2:0);if(_b.slideePosState!==c&&(_b.slideePosState=c,Yb.is("button,input")&&Yb.prop("disabled",a),Zb.is("button,input")&&Zb.prop("disabled",b),Yb.add(Vb)[a?"addClass":"removeClass"](rb.disabledClass),Zb.add(Ub)[b?"addClass":"removeClass"](rb.disabledClass)),_b.fwdbwdState!==c&&cc.released&&(_b.fwdbwdState=c,Vb.is("button,input")&&Vb.prop("disabled",a),Ub.is("button,input")&&Ub.prop("disabled",b)),Rb&&null!=Jb.activeItem){var d=0===Jb.activeItem,e=Jb.activeItem>=Ib.length-1,f=(d?1:0)|(e?2:0);_b.itemsButtonState!==f&&(_b.itemsButtonState=f,Wb.is("button,input")&&Wb.prop("disabled",d),Xb.is("button,input")&&Xb.prop("disabled",e),Wb[d?"addClass":"removeClass"](rb.disabledClass),Xb[e?"addClass":"removeClass"](rb.disabledClass))}}function X(a,b,c){if(a=S(a),b=S(b),a>-1&&b>-1&&a!==b&&(!c||b!==a-1)&&(c||b!==a+1)){Hb.eq(a)[c?"insertAfter":"insertBefore"](Ib[b].el);var d=b>a?a:c?b:b-1,e=a>b?a:c?b+1:b,f=a>b;null!=Jb.activeItem&&(a===Jb.activeItem?_b.active=Jb.activeItem=c?f?b+1:b:f?b:b-1:Jb.activeItem>d&&Jb.activeItem<e&&(_b.active=Jb.activeItem+=f?1:-1)),K()}}function Y(a,b){for(var c=0,d=$b[a].length;d>c;c++)if($b[a][c]===b)return c;return-1}function Z(){cc.released&&!sb.isPaused&&sb.resume()}function $(a){return G(k(a,Db.start,Db.end)/Db.end*(yb.end-yb.start))+yb.start}function _(){cc.history[0]=cc.history[1],cc.history[1]=cc.history[2],cc.history[2]=cc.history[3],cc.history[3]=cc.delta}function ab(a){cc.released=0,cc.source=a,cc.slidee="slidee"===a}function bb(b){var c="touchstart"===b.type,d=b.data.source,e="slidee"===d;cc.init||!c&&eb(b.target)||("handle"!==d||rb.dragHandle&&Db.start!==Db.end)&&(!e||(c?rb.touchDragging:rb.mouseDragging&&b.which<2))&&(c||f(b),ab(d),cc.init=0,cc.$source=a(b.target),cc.touch=c,cc.pointer=c?b.originalEvent.touches[0]:b,cc.initX=cc.pointer.pageX,cc.initY=cc.pointer.pageY,cc.initPos=e?yb.cur:Db.cur,cc.start=+new Date,cc.time=0,cc.path=0,cc.delta=0,cc.locked=0,cc.history=[0,0,0,0],cc.pathToLock=e?c?30:10:0,u.on(c?x:w,cb),sb.pause(1),(e?vb:Ab).addClass(rb.draggedClass),ob("moveStart"),e&&(fc=setInterval(_,10)))}function cb(a){if(cc.released="mouseup"===a.type||"touchend"===a.type,cc.pointer=cc.touch?a.originalEvent[cc.released?"changedTouches":"touches"][0]:a,cc.pathX=cc.pointer.pageX-cc.initX,cc.pathY=cc.pointer.pageY-cc.initY,cc.path=E(F(cc.pathX,2)+F(cc.pathY,2)),cc.delta=rb.horizontal?cc.pathX:cc.pathY,cc.released||!(cc.path<1)){if(!cc.init){if(cc.path<rb.dragThreshold)return cc.released?db():c;if(!(rb.horizontal?D(cc.pathX)>D(cc.pathY):D(cc.pathX)<D(cc.pathY)))return db();cc.init=1}f(a),!cc.locked&&cc.path>cc.pathToLock&&cc.slidee&&(cc.locked=1,cc.$source.on(z,g)),cc.released&&(db(),rb.releaseSwing&&cc.slidee&&(cc.swing=(cc.delta-cc.history[0])/40*300,cc.delta+=cc.swing,cc.tweese=D(cc.swing)>10)),L(cc.slidee?G(cc.initPos-cc.delta):$(cc.initPos+cc.delta))}}function db(){clearInterval(fc),cc.released=!0,u.off(cc.touch?x:w,cb),(cc.slidee?vb:Ab).removeClass(rb.draggedClass),setTimeout(function(){cc.$source.off(z,g)}),yb.cur===yb.dest&&cc.init&&ob("moveEnd"),sb.resume(1),cc.init=0}function eb(b){return~a.inArray(b.nodeName,B)||a(b).is(rb.interactive)}function fb(){sb.stop(),u.off("mouseup",fb)}function gb(a){switch(f(a),this){case Ub[0]:case Vb[0]:sb.moveBy(Ub.is(this)?rb.moveBy:-rb.moveBy),u.on("mouseup",fb);break;case Wb[0]:sb.prev();break;case Xb[0]:sb.next();break;case Yb[0]:sb.prevPage();break;case Zb[0]:sb.nextPage()}}function hb(a){return dc.curDelta=(rb.horizontal?a.deltaY||a.deltaX:a.deltaY)||-a.wheelDelta,dc.curDelta/=1===a.deltaMode?3:100,Rb?(o=+new Date,dc.last<o-dc.resetTime&&(dc.delta=0),dc.last=o,dc.delta+=dc.curDelta,D(dc.delta)<1?dc.finalDelta=0:(dc.finalDelta=G(dc.delta/1),dc.delta%=1),dc.finalDelta):dc.curDelta}function ib(a){a.originalEvent[r]=sb;var b=+new Date;if(J+rb.scrollHijack>b&&Sb[0]!==document&&Sb[0]!==window)return void(J=b);if(rb.scrollBy&&yb.start!==yb.end){var c=hb(a.originalEvent);(rb.scrollTrap||c>0&&yb.dest<yb.end||0>c&&yb.dest>yb.start)&&f(a,1),sb.slideBy(rb.scrollBy*c)}}function jb(a){rb.clickBar&&a.target===zb[0]&&(f(a),L($((rb.horizontal?a.pageX-zb.offset().left:a.pageY-zb.offset().top)-Cb/2)))}function kb(a){if(rb.keyboardNavBy)switch(a.which){case rb.horizontal?37:38:f(a),sb["pages"===rb.keyboardNavBy?"prevPage":"prev"]();break;case rb.horizontal?39:40:f(a),sb["pages"===rb.keyboardNavBy?"nextPage":"next"]()}}function lb(a){return eb(this)?void(a.originalEvent[r+"ignore"]=!0):void(this.parentNode!==vb[0]||a.originalEvent[r+"ignore"]||sb.activate(this))}function mb(){this.parentNode===Eb[0]&&sb.activatePage(Fb.index(this))}function nb(a){rb.pauseOnHover&&sb["mouseenter"===a.type?"pause":"resume"](2)}function ob(a,b){if($b[a]){for(qb=$b[a].length,C.length=0,pb=0;qb>pb;pb++)C.push($b[a][pb]);for(pb=0;qb>pb;pb++)C[pb].call(sb,a,b)}}if(!(this instanceof d))return new d(b,p,q);var pb,qb,rb=a.extend({},d.defaults,p),sb=this,tb=i(b),ub=a(b),vb=rb.slidee?a(rb.slidee).eq(0):ub.children().eq(0),wb=0,xb=0,yb={start:0,center:0,end:0,cur:0,dest:0},zb=a(rb.scrollBar).eq(0),Ab=zb.children().eq(0),Bb=0,Cb=0,Db={start:0,end:0,cur:0},Eb=a(rb.pagesBar),Fb=0,Gb=[],Hb=0,Ib=[],Jb={firstItem:0,lastItem:0,centerItem:0,activeItem:null,activePage:0},Kb=new l(ub[0]),Lb=new l(vb[0]),Mb=new l(zb[0]),Nb=new l(Ab[0]),Ob="basic"===rb.itemNav,Pb="forceCentered"===rb.itemNav,Qb="centered"===rb.itemNav||Pb,Rb=!tb&&(Ob||Qb||Pb),Sb=rb.scrollSource?a(rb.scrollSource):ub,Tb=rb.dragSource?a(rb.dragSource):ub,Ub=a(rb.forward),Vb=a(rb.backward),Wb=a(rb.prev),Xb=a(rb.next),Yb=a(rb.prevPage),Zb=a(rb.nextPage),$b={},_b={},ac={},bc={},cc={released:1},dc={last:0,delta:0,resetTime:200},ec=0,fc=0,gc=0,hc=0;tb||(b=ub[0]),sb.initialized=0,sb.frame=b,sb.slidee=vb[0],sb.pos=yb,sb.rel=Jb,sb.items=Ib,sb.pages=Gb,sb.isPaused=0,sb.options=rb,sb.dragging=cc,sb.reload=function(){K()},sb.getPos=function(a){if(Rb){var b=R(a);return-1!==b?Ib[b]:!1}var c=vb.find(a).eq(0);if(c[0]){var d=rb.horizontal?c.offset().left-vb.offset().left:c.offset().top-vb.offset().top,e=c[rb.horizontal?"outerWidth":"outerHeight"]();return{start:d,center:d-wb/2+e/2,end:d-wb+e,size:e}}return!1},sb.moveBy=function(a){bc.speed=a,!cc.init&&bc.speed&&yb.cur!==(bc.speed>0?yb.end:yb.start)&&(bc.lastTime=+new Date,bc.startPos=yb.cur,ab("button"),cc.init=1,ob("moveStart"),s(hc),P())},sb.stop=function(){"button"===cc.source&&(cc.init=0,cc.released=1)},sb.prev=function(){sb.activate(null==Jb.activeItem?0:Jb.activeItem-1)},sb.next=function(){sb.activate(null==Jb.activeItem?0:Jb.activeItem+1)},sb.prevPage=function(){sb.activatePage(Jb.activePage-1)},sb.nextPage=function(){sb.activatePage(Jb.activePage+1)},sb.slideBy=function(a,b){a&&(Rb?sb[Qb?"toCenter":"toStart"](k((Qb?Jb.centerItem:Jb.firstItem)+rb.scrollBy*a,0,Ib.length)):L(yb.dest+a,b))},sb.slideTo=function(a,b){L(a,b)},sb.toStart=function(a,b){Q("start",a,b)},sb.toEnd=function(a,b){Q("end",a,b)},sb.toCenter=function(a,b){Q("center",a,b)},sb.getIndex=R,sb.activate=function(a,b){var c=T(a);rb.smart&&c!==!1&&(Qb?sb.toCenter(c,b):c>=Jb.lastItem?sb.toStart(c,b):c<=Jb.firstItem?sb.toEnd(c,b):Z())},sb.activatePage=function(a,b){i(a)&&L(Gb[k(a,0,Gb.length-1)],b)},sb.resume=function(a){rb.cycleBy&&rb.cycleInterval&&("items"!==rb.cycleBy||Ib[0]&&null!=Jb.activeItem)&&!(a<sb.isPaused)&&(sb.isPaused=0,gc?gc=clearTimeout(gc):ob("resume"),gc=setTimeout(function(){switch(ob("cycle"),rb.cycleBy){case"items":sb.activate(Jb.activeItem>=Ib.length-1?0:Jb.activeItem+1);break;case"pages":sb.activatePage(Jb.activePage>=Gb.length-1?0:Jb.activePage+1)}},rb.cycleInterval))},sb.pause=function(a){a<sb.isPaused||(sb.isPaused=a||100,gc&&(gc=clearTimeout(gc),ob("pause")))},sb.toggle=function(){sb[gc?"pause":"resume"]()},sb.set=function(b,c){a.isPlainObject(b)?a.extend(rb,b):rb.hasOwnProperty(b)&&(rb[b]=c)},sb.add=function(b,c){var d=a(b);Rb?(null==c||!Ib[0]||c>=Ib.length?d.appendTo(vb):Ib.length&&d.insertBefore(Ib[c].el),null!=Jb.activeItem&&c<=Jb.activeItem&&(_b.active=Jb.activeItem+=d.length)):vb.append(d),K()},sb.remove=function(b){if(Rb){var c=S(b);if(c>-1){Hb.eq(c).remove();var d=c===Jb.activeItem;null!=Jb.activeItem&&c<Jb.activeItem&&(_b.active=--Jb.activeItem),K(),d&&(_b.active=null,sb.activate(Jb.activeItem))}}else a(b).remove(),K()},sb.moveAfter=function(a,b){X(a,b,1)},sb.moveBefore=function(a,b){X(a,b)},sb.on=function(a,b){if("object"===e(a))for(var c in a)a.hasOwnProperty(c)&&sb.on(c,a[c]);else if("function"===e(b))for(var d=a.split(" "),f=0,g=d.length;g>f;f++)$b[d[f]]=$b[d[f]]||[],-1===Y(d[f],b)&&$b[d[f]].push(b);else if("array"===e(b))for(var h=0,i=b.length;i>h;h++)sb.on(a,b[h])},sb.one=function(a,b){function c(){b.apply(sb,arguments),sb.off(a,c)}sb.on(a,c)},sb.off=function(a,b){if(b instanceof Array)for(var c=0,d=b.length;d>c;c++)sb.off(a,b[c]);else for(var e=a.split(" "),f=0,g=e.length;g>f;f++)if($b[e[f]]=$b[e[f]]||[],null==b)$b[e[f]].length=0;else{var h=Y(e[f],b);-1!==h&&$b[e[f]].splice(h,1)}},sb.destroy=function(){return d.removeInstance(b),Sb.add(Ab).add(zb).add(Eb).add(Ub).add(Vb).add(Wb).add(Xb).add(Yb).add(Zb).off("."+r),u.off("keydown",kb),Wb.add(Xb).add(Yb).add(Zb).removeClass(rb.disabledClass),Hb&&null!=Jb.activeItem&&Hb.eq(Jb.activeItem).removeClass(rb.activeClass),Eb.empty(),tb||(ub.off("."+r),Kb.restore(),Lb.restore(),Mb.restore(),Nb.restore(),a.removeData(b,r)),Ib.length=Gb.length=0,_b={},sb.initialized=0,sb},sb.init=function(){if(!sb.initialized){if(d.getInstance(b))throw new Error("There is already a Sly instance on this element");d.storeInstance(b,sb),sb.on(q);var a=["overflow","position"],c=["position","webkitTransform","msTransform","transform","left","top","width","height"];Kb.save.apply(Kb,a),Mb.save.apply(Mb,a),Lb.save.apply(Lb,c),Nb.save.apply(Nb,c);var e=Ab;return tb||(e=e.add(vb),ub.css("overflow","hidden"),m||"static"!==ub.css("position")||ub.css("position","relative")),m?n&&e.css(m,n):("static"===zb.css("position")&&zb.css("position","relative"),e.css({position:"absolute"})),rb.forward&&Ub.on(A,gb),rb.backward&&Vb.on(A,gb),rb.prev&&Wb.on(z,gb),rb.next&&Xb.on(z,gb),rb.prevPage&&Yb.on(z,gb),rb.nextPage&&Zb.on(z,gb),Sb.on(y,ib),zb[0]&&zb.on(z,jb),Rb&&rb.activateOn&&ub.on(rb.activateOn+"."+r,"*",lb),Eb[0]&&rb.activatePageOn&&Eb.on(rb.activatePageOn+"."+r,"*",mb),Tb.on(v,{source:"slidee"},bb),Ab&&Ab.on(v,{source:"handle"},bb),u.on("keydown",kb),tb||(ub.on("mouseenter."+r+" mouseleave."+r,nb),ub.on("scroll."+r,h)),sb.initialized=1,K(!0),rb.cycleBy&&!tb&&sb[rb.startPaused?"pause":"resume"](),sb}}}function e(a){return null==a?String(a):"object"==typeof a||"function"==typeof a?Object.prototype.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase()||"object":typeof a}function f(a,b){a.preventDefault(),b&&a.stopPropagation()}function g(b){f(b,1),a(this).off(b.type,g)}function h(){this.scrollLeft=0,this.scrollTop=0}function i(a){return!isNaN(parseFloat(a))&&isFinite(a)}function j(a,b){return 0|G(String(a.css(b)).replace(/[^\-0-9.]/g,""))}function k(a,b,c){return b>a?b:a>c?c:a}function l(a){var b={};return b.style={},b.save=function(){if(a&&a.nodeType){for(var c=0;c<arguments.length;c++)b.style[arguments[c]]=a.style[arguments[c]];return b}},b.restore=function(){if(a&&a.nodeType){for(var c in b.style)b.style.hasOwnProperty(c)&&(a.style[c]=b.style[c]);return b}},b}var m,n,o,p="sly",q="Sly",r=p,s=b.cancelAnimationFrame||b.cancelRequestAnimationFrame,t=b.requestAnimationFrame,u=a(document),v="touchstart."+r+" mousedown."+r,w="mousemove."+r+" mouseup."+r,x="touchmove."+r+" touchend."+r,y=(document.implementation.hasFeature("Event.wheel","3.0")?"wheel.":"mousewheel.")+r,z="click."+r,A="mousedown."+r,B=["INPUT","SELECT","BUTTON","TEXTAREA"],C=[],D=Math.abs,E=Math.sqrt,F=Math.pow,G=Math.round,H=Math.max,I=Math.min,J=0;u.on(y,function(a){var b=a.originalEvent[r],c=+new Date;(!b||b.options.scrollHijack<c-J)&&(J=c)}),d.getInstance=function(b){return a.data(b,r)},d.storeInstance=function(b,c){return a.data(b,r,c)},d.removeInstance=function(b){return a.removeData(b,r)},function(a){function b(a){var b=(new Date).getTime(),d=Math.max(0,16-(b-c)),e=setTimeout(a,d);return c=b,e}t=a.requestAnimationFrame||a.webkitRequestAnimationFrame||b;var c=(new Date).getTime(),d=a.cancelAnimationFrame||a.webkitCancelAnimationFrame||a.clearTimeout;s=function(b){d.call(a,b)}}(window),function(){function a(a){for(var d=0,e=b.length;e>d;d++){var f=b[d]?b[d]+a.charAt(0).toUpperCase()+a.slice(1):a;if(null!=c.style[f])return f}}var b=["","Webkit","Moz","ms","O"],c=document.createElement("div");m=a("transform"),n=a("perspective")?"translateZ(0) ":""}(),b[q]=d,a.fn[p]=function(b,c){var f,g;return a.isPlainObject(b)||(("string"===e(b)||b===!1)&&(f=b===!1?"destroy":b,g=Array.prototype.slice.call(arguments,1)),b={}),this.each(function(a,e){var h=d.getInstance(e);h||f?h&&f&&h[f]&&h[f].apply(h,g):h=new d(e,b,c).init()})},d.defaults={slidee:null,horizontal:!1,itemNav:null,itemSelector:null,smart:!1,activateOn:null,activateMiddle:!1,scrollSource:null,scrollBy:0,scrollHijack:300,scrollTrap:!1,dragSource:null,mouseDragging:!1,touchDragging:!1,releaseSwing:!1,swingSpeed:.2,elasticBounds:!1,dragThreshold:3,interactive:null,scrollBar:null,dragHandle:!1,dynamicHandle:!1,minHandleSize:50,clickBar:!1,syncSpeed:.5,pagesBar:null,activatePageOn:null,pageBuilder:function(a){return"<li>"+(a+1)+"</li>"},forward:null,backward:null,prev:null,next:null,prevPage:null,nextPage:null,cycleBy:null,cycleInterval:5e3,pauseOnHover:!1,startPaused:!1,moveBy:300,speed:0,easing:"swing",startAt:null,keyboardNavBy:null,draggedClass:"dragged",activeClass:"active",disabledClass:"disabled"}}(jQuery,window);



продолжение
/*

	{descr} -- Описание
	{link} -- Ссылка
	{text} -- Текст ссылки
	{THEME} -- путь к папке шаблона

	[descr] выводит текст, если есть описание [/descr]
	[not-descr] выводит текст, если описания нет [/not-descr]

	[text] выводит текст, если есть текст ссылки [/text]
	[not-text] выводит текст, если текста ссылки нет [/not-text]

	[link] выводит текст, если есть ссылка [/link]
	[not-link] выводит текст, если ссылки нет [/not-link]

*/
var playlist_alert = 
<div class="playlists-alert parthner_player">
	<svg viewBox="0 0 48 48">
                    <path fill-rule="evenodd" clip-rule="evenodd" d="M46,37H2c-0.553,0-1-0.447-1-1V8c0-0.552,0.447-1,1-1h44c0.553,0,1,0.448,1,1v28
                        C47,36.553,46.553,37,46,37z M45,9H3v26h42V9z M21,16c0.214,0,0.4,0.082,0.563,0.196l7.771,4.872C29.72,21.205,30,21.566,30,22
                        c0,0.325-0.165,0.601-0.405,0.783l-7.974,4.981C21.449,27.904,21.238,28,21,28c-0.553,0-1-0.447-1-1V17C20,16.448,20.447,16,21,16z
                         M15,39h18c0.553,0,1,0.447,1,1s-0.447,1-1,1H15c-0.553,0-1-0.447-1-1S14.447,39,15,39z"></path>
     </svg>
	[descr]<div class="parthner_player_text">{descr}</div>[/descr]
	[not-descr]<div class="parthner_player_text">[описание не задано]</div>[/not-descr]
	<div class="free">Бесплатно и легально</div>
	[link]<a href="{link}" target="_blank" rel="noopener external noreferrer nofollow">{text}</a>[/link]
	[not-link]<a href="#" class="playlists-alert-btn">[ссылка или текст ссылки не заданы]</a>[/not-link]
</div>
;

function playlists_set(box, video) {
	if ( video.data('descr') || (video.data('file') && video.data('text')) ) {
		box.html(
			playlist_alert
			.replace(/\{descr\}/g, video.data('descr') || '')
			.replace(/\{text\}/g, video.data('text') || '')
			.replace(/\{link\}/g, video.data('file') || '')
			.replace(/\{THEME\}/g, '/templates/' + dle_skin)
			.replace(/\[link\](.*?)\[\/link\]/g, (video.data('file') && video.data('text')) ? '$1' : '')
			.replace(/\[not-link\](.*?)\[\/not-link\]/g, (video.data('file') && video.data('text')) ? '' : '$1')
			.replace(/\[descr\](.*?)\[\/descr\]/g, (video.data('descr')) ? '$1' : '')
			.replace(/\[not-descr\](.*?)\[\/not-descr\]/g, (video.data('descr')) ? '' : '$1')
		);
	} else {
		box.html('<iframe class="player_frame" scrolling="no" src="' + video.data('file') + '" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="true" frameborder="0"></iframe>');
	}
}

$('body').on('click', '.playlists-lists li', function() {
	var player = $(this).closest('.playlists-player'),
		id = $(this).data('id'),
		index = $(this).closest('.playlists-items').index(),
		count = $(this).closest('.playlists-lists').find('.playlists-items').length;

	$(this).closest('.playlists-items').find('li').removeClass('active');
	$(this).addClass('active');

	for (i=index+1;i<count;i++) {
		var _tmp = player.find('.playlists-lists .playlists-items:eq(' + i + ')');

		_tmp.find('li').removeClass('active').removeClass('visible');
		_tmp.find('li[data-id^=' + id + ']').addClass('visible');

		_id = _tmp.find('li.visible:eq(0)').addClass('active').data('id');

		if ( typeof _id != 'undefined' ) {
			id = _id;
			_self = _tmp;
		}
	}

	player.find('.playlists-videos').find('li').removeClass('active').removeClass('visible');
	player.find('.playlists-videos').find('li[data-id=' + id + ']').addClass('visible');
	player.find('.playlists-videos li.visible:eq(0)').addClass('active');

	var video = player.find('.playlists-videos li.active');
	var iframe = player.find('.playlists-iframe');

	playlists_set(iframe, video);

	$('.playlists-items').each(function() {
		$(this).sly('reload');
	});
});

$('body').on('click', '.playlists-videos li', function(event) {
	if ( event.target.tagName != 'LI' ) {
		event.stopPropagation();
		return false;
	}

	$(this).closest('.playlists-items').find('li').removeClass('active');
	$(this).addClass('active');

	var video = $(this);
	var iframe = $(this).closest('.playlists-player').find('.playlists-iframe');

	playlists_set(iframe, video);
});

// кнопки отметок для просмотренных серий
$('body').on('click', '.playlists-view', function(event) {
	var news_id = $(this).closest('.playlists-ajax').data('news_id'),
		xfname = $(this).closest('.playlists-ajax').data('xfname'),
		file = $(this).closest('li').data('file'),
		c = 'playlists-' + news_id + '-' + xfname + '-' + file;

	$(this).toggleClass('watched');

	if ( localStorage.getItem(c) === null ) localStorage.setItem(c, '1');
		else localStorage.removeItem(c);
});
// ### кнопки отметок для просмотренных серий

$(document).ready(function(e) {
	$('.playlists-ajax').each(function(index) {
		var _self = $(this)
			xfname = _self.data('xfname'),
			news_id = _self.data('news_id');

		$.ajax({
			url: '/engine/ajax/controller.php',
			dаta: {mod: 'playlists', news_id: news_id, xfield: xfname},
			dataType: 'JSON',
			success: function(data) {
				if ( !data.success ) {
					console.log('Playlists', data.message);
					return false;
				}

				_self.html(data.response);

				var number = parseInt(_self.data('number'));
                var flag = false;

                if ( number > 0 ) {
                    var video = _self.find('.playlists-videos li:eq(' + (number - 1) + ')');

                    if ( video.length ) {
                        _self.find('.playlists-videos li').addClass('visible');
                        video.trigger('click');
                        flag = true;
                    }
                }

				if ( !flag ) {
					if ( _self.find('.playlists-lists li').length ) {
						_self.find('.playlists-lists > .playlists-items:first li').addClass('visible');
						_self.find('.playlists-lists li:first').trigger('click');
					} else {
						_self.find('.playlists-videos li').addClass('visible');
						_self.find('.playlists-videos li:first').trigger('click');
					}
				}

				// кнопки отметок для просмотренных серий
				_self.find('.playlists-videos li').each(function() {
					var file = $(this).data('file'),
						c = 'playlists-' + news_id + '-' + xfname + '-' + file;

					$(this).append('<span class="playlists-view"></span>');

					if ( localStorage.getItem(c) !== null ) $(this).find('.playlists-view').addClass('watched');
				});
				// ### кнопки отметок для просмотренных серий

				$('.playlists-items').each(function() {
					$(this).append('<div class="playlists-prev"></div><div class="playlists-next"></div>').sly({
						horizontal: 1,
						itemNav: 'basic',
						mouseDragging: 1,
						touchDragging: 1,
						releaseSwing: 1,
						startAt: (number > 1 && _self.find('.playlists-videos li').length > number - 2) ? number-2 : number-1,
						scrollBy: 1,
						speed: 300,
						easing: 'easeOutExpo',
						prevPage: $(this).find('.playlists-prev'),
						nextPage: $(this).find('.playlists-next'),
						activeClass: false,
						disabledClass: 'disabled'
					});
				});
			},
			error: function(a, b, c) {
				console.log('Playlists', 'ERR_REQUEST_FAILED');
			}
		});
	});
});

    $(document).ready(function(){
        $('tbody.series_list tr').each(function(index) {
        $(this).addClass('playlist-episodes_'+(index+1));
        });


    $(document).ready(function(e) {
        if ( $('.playlist-episodes > tbody > tr').length > 4 ) {
        	playlist_toggle();

        $('.playlist-episodes').after('<div class="playlist-episodes-toggle" onclick="playlist_toggle();return false">Показать все</div>');
		}
		}); 
	}); 

		function playlist_toggle() {
            if ( $('.playlist-episodes-toggle').html() == 'Показать все' ) {
                $('.playlist-episodes > tbody > tr').show();
                $('.playlist-episodes-toggle').html('Скрыть');
            } else {
                $('tr[class^="playlist-episodes_"]').hide();
                $('tr.playlist-episodes_1,tr.playlist-episodes_2,tr.playlist-episodes_3,tr.playlist-episodes_4').show();
                $('.playlist-episodes-toggle').html('Показать все');
            }
        }


запомни его как player.js

теперь что мне нужно сделать эмулятор плеера который описан в файле player.js
в этом коде 
var playlist_alert = 
<div class="playlists-alert parthner_player">
	<svg viewBox="0 0 48 48">
                    <path fill-rule="evenodd" clip-rule="evenodd" d="M46,37H2c-0.553,0-1-0.447-1-1V8c0-0.552,0.447-1,1-1h44c0.553,0,1,0.448,1,1v28
                        C47,36.553,46.553,37,46,37z M45,9H3v26h42V9z M21,16c0.214,0,0.4,0.082,0.563,0.196l7.771,4.872C29.72,21.205,30,21.566,30,22
                        c0,0.325-0.165,0.601-0.405,0.783l-7.974,4.981C21.449,27.904,21.238,28,21,28c-0.553,0-1-0.447-1-1V17C20,16.448,20.447,16,21,16z
                         M15,39h18c0.553,0,1,0.447,1,1s-0.447,1-1,1H15c-0.553,0-1-0.447-1-1S14.447,39,15,39z"></path>
     </svg>
	[descr]<div class="parthner_player_text">{descr}</div>[/descr]
	[not-descr]<div class="parthner_player_text">[описание не задано]</div>[/not-descr]
	<div class="free">Бесплатно и легально</div>
	[link]<a href="{link}" target="_blank" rel="noopener external noreferrer nofollow">{text}</a>[/link]
	[not-link]<a href="#" class="playlists-alert-btn">[ссылка или текст ссылки не заданы]</a>[/not-link]


сделать чтобы при дьбавлении в доп поле 
например 
[
    {
        "title": "1 выпуск",
        "link": "ссылка на страницу правообладателя",
        "legalText": "Название сайта с легальным плеером — официальный сайт правообладателя"
    },
    {
        "title": "2 выпуск",
"link": "ссылка на страницу правообладателя",
        "legalText": "Название сайта с легальным плеером — официальный сайт правообладателя"
    }
]

выводился не embed а эмулятор плеера такого вида

<div class="playlists-ajax" data-xfname="playlist" data-news_id="4997" data-number=""><div class="playlists-player">
	<div class="playlists-lists"></div>
	<div class="playlists-iframe">
<div class="playlists-alert parthner_player">
	<svg viewBox="0 0 48 48">
                    <path fill-rule="evenodd" clip-rule="evenodd" d="M46,37H2c-0.553,0-1-0.447-1-1V8c0-0.552,0.447-1,1-1h44c0.553,0,1,0.448,1,1v28
                        C47,36.553,46.553,37,46,37z M45,9H3v26h42V9z M21,16c0.214,0,0.4,0.082,0.563,0.196l7.771,4.872C29.72,21.205,30,21.566,30,22
                        c0,0.325-0.165,0.601-0.405,0.783l-7.974,4.981C21.449,27.904,21.238,28,21,28c-0.553,0-1-0.447-1-1V17C20,16.448,20.447,16,21,16z
                         M15,39h18c0.553,0,1,0.447,1,1s-0.447,1-1,1H15c-0.553,0-1-0.447-1-1S14.447,39,15,39z"></path>
     </svg>
	<div class="parthner_player_text">2 серия доступна к просмотру на «RuTube»</div>
	
	<div class="free">Бесплатно и легально</div>
	<a href="https://rutube.ru/live/video/c37cd74192c6bc3d6cd6077c0c4fd686/" target="_blank" rel="noopener external noreferrer nofollow">Смотреть 2 серию</a>
	
</div>
</div> 
	<div class="playlists-videos">
		<div class="playlists-items" style="overflow: hidden;">
			<ul style="transform: translateZ(0px) translateX(-4px); width: 368px;" class=""><li data-file="https://rutube.ru/live/video/c37cd74192c6bc3d6cd6077c0c4fd686/" data-text="Смотреть 1 серию" data-descr="1 серия доступна к просмотру на «RuTube»" data-id="0" class="visible">1 серия<span class="playlists-view"></span></li><li data-file="https://rutube.ru/live/video/c37cd74192c6bc3d6cd6077c0c4fd686/" data-text="Смотреть 2 серию" data-descr="2 серия доступна к просмотру на «RuTube»" data-id="0" class="visible active">2 серия<span class="playlists-view"></span></li></ul>
		<div class="playlists-prev disabled"></div><div class="playlists-next disabled"></div></div>
	</div>
</div></div>
Вход Регистрация
Войти в свой аккаунт
И получить новые возможности
Забыли пароль?