public void GetMediaFromJS_Returns_Valid_Data_For_Series()
        {
            //var mockInput = @" $(function () { sof.tv.initCDNSeriesEvents(1931, 13, 1, 1, false, 'rezka.ag', false, {'id':'cdnplayer','streams':'[360p]https:\/\/load.hdrezka-ag.net\/tvseries\/35f9a26c7f3ed3f0ddc121ba7cc417db7f52a10d\/8f33fb24ebee420fe8322acb5cabfe7c:2020040920\/240.mp4:hls:manifest.m3u8 or https:\/\/load.hdrezka-ag.net\/adc0a6b582709a57e32af304d326352a:2020040920\/tvseries\/35f9a26c7f3ed3f0ddc121ba7cc417db7f52a10d\/240.mp4,[480p]https:\/\/load.hdrezka-ag.net\/tvseries\/35f9a26c7f3ed3f0ddc121ba7cc417db7f52a10d\/8f33fb24ebee420fe8322acb5cabfe7c:2020040920\/360.mp4:hls:manifest.m3u8 or https:\/\/load.hdrezka-ag.net\/3e8b1d1452cce378a6ee8c62db3ae658:2020040920\/tvseries\/35f9a26c7f3ed3f0ddc121ba7cc417db7f52a10d\/360.mp4,[720p]https:\/\/load.hdrezka-ag.net\/tvseries\/35f9a26c7f3ed3f0ddc121ba7cc417db7f52a10d\/8f33fb24ebee420fe8322acb5cabfe7c:2020040920\/480.mp4:hls:manifest.m3u8 or https:\/\/load.hdrezka-ag.net\/7ae4005c0713ca5a86ff84e208a712e9:2020040920\/tvseries\/35f9a26c7f3ed3f0ddc121ba7cc417db7f52a10d\/480.mp4,[1080p]https:\/\/load.hdrezka-ag.net\/tvseries\/35f9a26c7f3ed3f0ddc121ba7cc417db7f52a10d\/8f33fb24ebee420fe8322acb5cabfe7c:2020040920\/720.mp4:hls:manifest.m3u8 or https:\/\/load.hdrezka-ag.net\/ff09fd32196ac1174e01d31f28e97548:2020040920\/tvseries\/35f9a26c7f3ed3f0ddc121ba7cc417db7f52a10d\/720.mp4','default_quality':'480p','hlsconfig':{'maxBufferLength':180,'maxMaxBufferLength':600,'maxBufferSize':33554432000},'geo_ip':'62.210.110.54','geo_iso':'fr','preroll':'https:\/\/franecki.net\/assets\/vendor\/3736f6ea7b7e115cbb4f5c2ea8f5f2df.xml?v=3.0 and https:\/\/franecki.net\/assets\/vendor\/49ae0420d7a42849fd13a5e3ae4fc009.xml?v=3.0'}); }); $(function () { sof.tv.initWatchingEvents(1931); }); (function () { $(function () { var comment_id = 0, match = window.location.hash.match(/comment(\d+)/i), ws_usage = 5, show_mode = 0, enabled_mode = 1, callback = function () {}; if (match !== null) { comment_id = match[1]; } callback = function (last_update_id) { if (comment_id > 0) { setTimeout(function () { var comment = $('#comments-tree-item-'+ comment_id +' > div:not(:animated)'); comment.addClass('now-added'); sof.helper.scrollTo($('#comments-tree-item-'+ comment_id), 15, 300, function () { comment.animate({backgroundColor: 'transparent'}, 2000, function () { comment.removeClass('now-added').removeAttr('style'); }); }); }, 200); } if (ws_usage < 50) { sof.comments.initWSComments('wss://hdrezka.ws', 1931, 0, last_update_id, null); } }; if (enabled_mode == 1 && (show_mode == 0 || ws_usage < 5)) { sof.comments.loadComments(1931, 1, true, 0, comment_id, callback); } }); } ());";

            var mockInput = @"$(function () { sof.tv.initCDNSeriesEvents(1933, 1, 1, 1, false, 'rezka.ag', false, {'id':'cdnplayer','streams':'#hWzM2MHBdaHR0cHM6Ly9zdHJlYW0udm9pZGJvb3N0LmNjLzEvNy80LzcvOS84Lzg4NTRkZTc5MTA4YzZjZDQ0OTkxY2RkNzhlM2Q1NWVjOjIwMjIwMTA3MTQ6OGYyNDQ2ZDktNGI5My00MDg4LTkwMzgtMDkyZDUxYmFmMjZlL3R5NTJsLm1wNDpobHM6bWFuaWZlc3QubTN1OCBvciBodHRwczovL3N0cmVhbS52b2lkYm9vc3QuY2MvOGU4MDllNjNmZTEwN2UxZjUwZGRiMTE2NmNmMDkyODA6MjAyMjAxMDcxNDo4ZjI0NDZkOS00YjkzLTQwODgtOTAzOC0wOTJkNTFiYWYyNmUvMS83LzQvNy85LzgvdHk1MmwubXA0LFs0ODBwXWh0dHBzOi8vc3RyZWFtLnZvaWRib29zdC5jYy8xLzcvNC83LzkvOC84ODU0ZGU3OTEwOGM2Y2Q0NDk5MWNkZDc4ZTNkNTVlYzoyMDIyMDEwNzE0OjhmMjQ0NmQ5LTRiOTMtNDA4OC05MDM4LTA5MmQ1MWJhZjI2ZS81ZHFuZy5tcDQ6aGxzOm1hbmlmZXN0Lm0zdTggb3IgaHR0cHM6Ly9zdHJlYW0udm9pZGJvb3N0LmNjL2EwZWY5ODEwYmZkZGE1MTYwODRkMjQ1NjYzYWIzOTE3OjIwMjIwMTA3MTQ6OGYyNDQ2ZDktNGI5My00MDg4LTkwMzgtMDkyZDUxYmFmMjZlLzEvNy80LzcvOS84LzVkcW5nLm1wNCxbNzIwcF1odHRwczovL3N0cmVhbS52b2lkYm9vc3QuY2MvMS83LzQvNy85LzgvODg1NGRlNzkxMDhjNmNkNDQ5OTFjZGQ3OGUzZDU1ZWM6MjAyMjAxMDcxNDo4ZjI0NDZkOS00YjkzLTQwODgtOTAzOC0wOTJkNTFiYWYyNmUvbnVqeWsubXA0OmhsczptYW5pZmVzdC5tM3U4IG9yIGh0dHBzOi8vc3RyZWFtLnZvaWRib29zdC5jYy9kOWE3YjQyYmJmMGRmNWVlZjllNzU4YTkyZDEyY2Q1YjoyMDIyMDEwNzE0OjhmMjQ0NmQ5LTRiO\/\/_\/\/JCQhIUAkJEBeIUAjJCRATMtNDA4OC05MDM4LTA5MmQ1MWJhZjI2ZS8xLzcvNC83LzkvOC9udW\/\/_\/\/QEBAQEAhIyMhXl5ep5ay5tcDQsWzEwODBwXWh0dHBzOi8vc3RyZWFt\/\/_\/\/Xl5eIUAjIyEhIyM=LnZvaWRib29zdC5jYy8xLzcvNC83LzkvOC84ODU0ZGU3OTEwOGM2Y2Q0NDk5MWNkZDc4ZTNkNTVlYzoyMDIyMDEwNzE0OjhmMjQ0NmQ5LTRiOTMtNDA4OC05MDM4LTA5MmQ1MWJhZjI2ZS85cGloNi5tcDQ6aGxzOm1hbmlmZXN0Lm0zdTggb3IgaHR0cHM6Ly9zdHJlYW0udm9pZGJvb3N0LmNjL2ZlNzM5YWQ3NzdlNWE2MzFkZjE2ZGFhMDkxOWFlMjI1OjIwMjIwMTA3MTQ6OGYyNDQ2ZDktNGI5My00MDg4LTkwMzgtMDkyZDUxYmFmMjZlLzEvNy80LzcvOS84LzlwaWg2Lm1wNCxbMTA4M\/\/_\/\/JCQjISFAIyFAIyM\/\/_\/\/IyMjI14hISMjIUBA=HAgVWx0cmFdaHR0cHM6Ly9zdHJlYW0udm9pZGJvb3N0LmNjLzEvNy80LzcvOS84Lzg4NTRkZTc5MTA4YzZjZDQ0OTkxY2RkNzhlM2Q1NWVjOjIwMjIwMTA3MTQ6OGYyNDQ2ZDktNGI5My00MDg4LTkwMzgtMDkyZDUxYmFmMjZlL2NudHo4Lm1wNDpobHM6bWFuaWZlc3QubTN1OCBvciBodHRwczovL3N0cmVhbS52b2lkYm9vc3QuY2MvNmIyY2JmNTYzNjRhMDJjYWNlNmE1NDkxMDY0ZWFhYWQ6MjAyMjAxMDcxNDo4ZjI0NDZkOS00YjkzLTQwODgtOTAzOC0wOTJkNTFiYWYyNmUvMS83LzQvNy85LzgvY250ejgubXA0','default_quality':'480p','subtitle':false,'subtitle_lns':false,'subtitle_def':false,'thumbnails':'\/ajax\/get_cdn_tiles\/1\/351027\/?t=1641484761','hlsconfig':{'maxBufferLength':60,'maxMaxBufferLength':600,'maxBufferSize':33554432000},'hlsdebug':0,'debug':0,'geo_ip':'5.39.86.77','geo_iso':'fr','autoswitch':1,'preroll':'https:\/\/franecki.net\/assets\/vendor\/3736f6ea7b7e115cbb4f5c2ea8f5f2df.xml?v=3.0&external_subid=(host)&abfn=maybeneedtorestart and https:\/\/franecki.net\/assets\/vendor\/49ae0420d7a42849fd13a5e3ae4fc009.xml?v=3.0&external_subid=(host)&abfn=maybeneedtorestart'}); }); $(function () { sof.tv.initWatchingEvents(1933); }); (function () { $(function () { var comment_id = 0, match = window.location.hash.match(/comment(\d+)/i), ws_usage = 5, show_mode = 1, callback = function () {}; if (match !== null) { comment_id = match[1]; } callback = function (last_update_id) { if (comment_id > 0) { setTimeout(function () { var comment = $('#comments-tree-item-'+ comment_id +' > div:not(:animated)'); comment.addClass('now-added'); sof.helper.scrollTo($('#comments-tree-item-'+ comment_id), 15, 300, function () { comment.animate({backgroundColor: 'transparent'}, 2000, function () { comment.removeClass('now-added').removeAttr('style'); }); }); }, 200); } /*if (ws_usage < 50) { sof.comments.initWSComments('wss://hdrezka.ws', 1933, 0, last_update_id, null); }*/ }; if (show_mode == 1) { sof.comments.loadComments(1933, 1, true, 0, comment_id, callback); } }); } ());";

            var result = RezkaParser.GetMediaFromJS(mockInput);

            Assert.AreEqual(1933, result.Id);

            Assert.AreEqual(1, result.CurrentTranslationId);

            Assert.AreEqual(MediaType.Series, result.Type);

            Assert.AreEqual(1, result.CurrentEpisode);

            Assert.AreEqual(1, result.CurrentSeason);

            Assert.AreEqual(1, result.Translations[0].Id);

            Assert.AreEqual("360p", result.Translations[0].CDNStreams[0].Quality);

            Assert.AreEqual("https://stream.voidboost.cc/8e809e63fe107e1f50ddb1166cf09280:2022010714:8f2446d9-4b93-4088-9038-092d51baf26e/1/7/4/7/9/8/ty52l.mp4", result.Translations[0].CDNStreams[0].URL2);

            Assert.AreEqual("1080p Ultra", result.Translations[0].CDNStreams[4].Quality);

            Assert.AreEqual("https://stream.voidboost.cc/6b2cbf56364a02cace6a5491064eaaad:2022010714:8f2446d9-4b93-4088-9038-092d51baf26e/1/7/4/7/9/8/cntz8.mp4", result.Translations[0].CDNStreams[4].URL2);
        }
        public async Task <IEnumerable <SearchResult> > Post([FromBody] string q)
        {
            if (string.IsNullOrEmpty(q))
            {
                return(null);
            }

            var htmlText = await _rezkaFetch.GetSearchHtml(q);

            return(RezkaParser.GetSearchResult(htmlText));
        }
        public void GetSearchResult_Returns_Valid_Data()
        {
            var mockInput = @"<div class='b-search__live_section'><ul class='b-search__section_list'><li><a href='https://rezka.ag/series/thriller/1931-proslushka-2016-01-28-55.html'><span class='enty'>Прослушка</span> (The Wire, сериал, 2002-2008)<span class='rating'><i class='hd-tooltip rating-green-string' title='Рейтинг Кинопоиска на основе 17536 голосов'>8.45</i></span></a></li><li><a href='https://rezka.ag/films/documentary/6412-kanatohodec-2007.html'><span class='enty'>Канатоходец / Человек на проволоке</span> (Man on Wire, 2007)<span class='rating'><i class='hd-tooltip rating-green-string' title='Рейтинг Кинопоиска на основе 3648 голосов'>7.65</i></span></a></li><li><a href='https://rezka.ag/films/comedy/7296-ptichka-na-provode-1990.html'><span class='enty'>Птичка на проводе</span> (Bird on a Wire, 1990)<span class='rating'><i class='hd-tooltip rating-green-string' title='Рейтинг Кинопоиска на основе 11733 голосов'>7.28</i></span></a></li><li><a href='https://rezka.ag/films/action/8807-ne-nazyvay-menya-malyshkoy-1996.html'><span class='enty'>Не называй меня малышкой</span> (Barb Wire, 1996)<span class='rating'><i class='hd-tooltip rating-red-string' title='Рейтинг Кинопоиска на основе 2350 голосов'>4.73</i></span></a></li><li><a href='https://rezka.ag/films/action/18840-provod-pod-tokom-1992.html'><span class='enty'>Провод под током</span> (Live Wire, 1992)<span class='rating'><i class='hd-tooltip rating-grey-string' title='Рейтинг Кинопоиска на основе 494 голосов'>6.33</i></span></a></li></ul></div><a class='b-search__live_all' href='https://rezka.ag/index.php?do=search&amp;subaction=search&amp;q=wire'>Смотреть все результаты (еще 1 совпадение)</a>";

            var result = RezkaParser.GetSearchResult(mockInput);

            Assert.AreEqual("https://rezka.ag/series/thriller/1931-proslushka-2016-01-28-55.html", result[0].URL);
            Assert.AreEqual("Прослушка", result[0].Name);
            Assert.AreEqual(" (The Wire, сериал, 2002-2008)", result[0].Text);
            Assert.AreEqual("8.45", result[0].Rating);
        }
        public void GetTranslations_With_Empty_Div_Returns_Empty_Array()
        {
            var mockInput = @"<div class='b-translators__block'></div>";

            var htmlDoc = new HtmlDocument();

            htmlDoc.LoadHtml(mockInput);

            var result = RezkaParser.GetTranslations(htmlDoc);

            Assert.AreEqual(0, result.Length);
        }
        public void GetCDNStreams_Returns_Valid_Data()
        {
            //var mockInput = @"{'success':true,'message':'','url':'[360p]https:\/\/load.hdrezka-ag.net\/tvseries\/a17e9f9fe955f32942c96e0e581ba72d2d7bd920\/96017f0571adb0a66d1e3f26147217ce:2020041100\/240.mp4:hls:manifest.m3u8 or https:\/\/load.hdrezka-ag.net\/fe088672471c26588147deee924efc4b:2020041100\/tvseries\/a17e9f9fe955f32942c96e0e581ba72d2d7bd920\/240.mp4,[480p]https:\/\/load.hdrezka-ag.net\/tvseries\/a17e9f9fe955f32942c96e0e581ba72d2d7bd920\/96017f0571adb0a66d1e3f26147217ce:2020041100\/360.mp4:hls:manifest.m3u8 or https:\/\/load.hdrezka-ag.net\/3b529f82ca5928786e988a0f4d147a49:2020041100\/tvseries\/a17e9f9fe955f32942c96e0e581ba72d2d7bd920\/360.mp4,[720p]https:\/\/load.hdrezka-ag.net\/tvseries\/a17e9f9fe955f32942c96e0e581ba72d2d7bd920\/96017f0571adb0a66d1e3f26147217ce:2020041100\/480.mp4:hls:manifest.m3u8 or https:\/\/load.hdrezka-ag.net\/101c9d76f6f06da7cf1e985849bccc94:2020041100\/tvseries\/a17e9f9fe955f32942c96e0e581ba72d2d7bd920\/480.mp4,[1080p]https:\/\/load.hdrezka-ag.net\/tvseries\/a17e9f9fe955f32942c96e0e581ba72d2d7bd920\/96017f0571adb0a66d1e3f26147217ce:2020041100\/720.mp4:hls:manifest.m3u8 or https:\/\/load.hdrezka-ag.net\/6136628d535d0e5235107a8424886817:2020041100\/tvseries\/a17e9f9fe955f32942c96e0e581ba72d2d7bd920\/720.mp4','quality':'480p'}";

            var mockInput = @"{'success':true,'message':'','url':'#hWzM2MHBdaHR0cHM6Ly9zdHJlYW0udm9pZGJvb3N0LmNjLzIvOS8xLzYvNi81L2Q4MjJhZjUzMGU4NTUwNGEzNjM4YmEyYzIzN2JiZGYxOjIwMjIwMTA3MTU6V1hkTmVFcEpTbE5JWjNoa1ZqZFRRWEY2ZDJSWFEzVnhkRTh6YmpobFUwOHdjR293ZDNBMGRuaHZReXRsVDJOM2FUbERORUp6U2pRM1IxVjZabkJTWTFabmJqTm5XbXBJTlVKWWJFVTVUbHBFUzFSeFFYYzlQUT09LzBvZmx1Lm1wNDpobHM6bWFuaWZlc3QubTN1OCBvciBodHRwczovL3N0cmVhbS52b2lkYm9vc3QuY2MvYTg2YzllYzY1MDljNjU2YzJiY2FmYWJmYjI0MDE4NjE6MjAyMjAxMDcxNTpXWGROZUVwSlNsTklaM2hrVmpkVFFYRjZkMlJYUTNWeGRFOHpiamhsVTA4d2NHb3dkM0EwZG5odlF5dGxUMk4zYVRsRE5FSnpTalEzUjFWNlpuQlNZMVpuYmpObldtcElOVUpZYkVVNVRscEVTMVJ4UVhjOVBRPT0vMi85LzEvNi82LzUvMG9mbHUubXA0LFs0ODBwXWh0dHBzOi8vc3RyZWFtLnZvaWRib29zdC5jYy8yLzkvMS82LzYvNS9kODIyYWY1MzBlODU1MDRhMzYzO\/\/_\/\/JCQjISFAIyFAIyM=GJhMmMyMzdiYmRmMToyMDIyMDEwNzE1OldYZE5lRXBKU2xOSVozaGtWamRUUVhGNmQyUlhRM1Z4ZEU4emJqaGxVMDh3Y0dvd2QzQTBkbmh2UXl0bFQyTjNhVGxETkVKelNqUTNSMVY2Wm5CU1kxWm5iak5uV21wSU5VSlliRVU1VGxwRVMxUnhRWGM5UFE9PS9lZWY2My5tcDQ6aGxzOm1hbmlmZXN0Lm0zdTggb3IgaHR0cHM6Ly9zdH\/\/_\/\/QEBAQEAhIyMhXl5eJlYW0udm9pZGJvb3N0LmNjL2NjMmYzMDllYTllMDg2YTUwYzJiOWYzYjAyZTM2YTQ4OjIwMjIwMTA3MTU6V1hkTmVFcEpTbE5JWjNoa1ZqZFRRWEY2Z\/\/_\/\/Xl5eIUAjIyEhIyM=DJSWFEzVnhkRTh6YmpobFUwOHdjR293ZDNBMGRuaHZReXRsVDJOM2FUbERORUp6U2pRM1IxVjZabkJTWTFabmJqTm5XbXBJTlVKWWJFVTVUbHBFUzFSeFFYYzlQUT09LzIvOS8xLzYvNi81L2VlZjYzLm1wNCxbNzIwcF1odHRwczovL3N0cmVhbS52b2lkYm9vc3QuY2MvMi85LzEvNi82LzUvZDgyMmFmNTMwZTg1NTA0YTM2MzhiYTJjMjM3YmJkZjE6MjAyMjAxMDcxNTpXWGROZUVwSlNsTklaM2hrVmpkVFFYRjZkMlJYUTNWeGRFOHpiamhsVTA4d2NHb3dkM0EwZG5odlF5dGxUMk4zYVRsRE5FSnpTalEzUjFWNlpuQlNZMVpuYmpObldtcElOVUpZYkVVNVRscEVTMVJ4UVhjOVBRPT0vcGRlMmYubXA0OmhsczptYW5pZmVzdC5tM3U4IG9yIGh0dHBzOi8vc3RyZWFtLnZvaWRib29zdC5jYy9jNzdhZDgxMDU1ODVlYzI0MDgxYjM2Y2VhZjk2MjE3NDoyMDIyMDEwNzE1OldYZE5lRXBKU2xOSVozaGtWamRUUVhGNmQyUlhRM1Z4ZEU4emJqaGxVMDh3Y0dvd2QzQTBkbmh2UXl0bFQyTjNhVGxETkVKelNqUTNSMVY2Wm5CU1kxWm5iak5uV21wSU5VSlliRVU1VGxwRVMxUnhRWGM5UFE9PS8yLzkvMS82LzYvNS9wZGUyZi5tcDQsWzEwODBwXWh0dHBzOi8vc3RyZWFtLnZva\/\/_\/\/JCQhIUAkJEBeIUAjJCRAWRib29zdC5jYy8yLzkvMS82LzYvNS9kODIyYWY1MzBlODU1MDRhMzYzOGJhMmMyMzdiYmRmMToyMDIyMDEwNzE1OldYZE5lRXBKU2xOSVozaGtWamRUUVhGNmQyUlhRM1Z4ZEU4emJqaGxVMDh3Y0dvd2QzQTBkbmh2UXl0bFQyTjNhVGxETkVKelNqUTNSMVY2Wm5CU1kxWm5iak5uV21wSU5VSlliRVU1VGxwRVMxUnhRWGM5UFE9PS8yc3JoZi5tcDQ6aGxzOm1hbmlmZXN0Lm0zdTggb3IgaHR0cHM6Ly9zdHJlYW0udm9pZGJvb3N0LmNjL2E0NDQ2ZGZmZmNmY2Q4MmQwMTFiMzc4MTBiM2QzMTVkOjIwMjIwMTA3MTU6V1hkTmVFcEpTbE5JWjNoa1ZqZFRRWEY2ZDJSWFEzVnhkRTh6YmpobFUwOHdjR293ZDNBMGRuaHZReXRsVDJOM2FUbERORUp6U2pRM1IxVjZabkJTWTFabmJqTm5XbXBJTlVKWWJFVTVUbHBFUzFSeFFYYzlQUT09LzIvOS8xLzYvNi81LzJzcmhmLm1wNCxbMTA4MHAgVWx0cmFdaHR0cHM6Ly9zdHJlYW0udm9pZGJvb3N0LmNjLzIvOS8xLzYvNi81L2Q4MjJhZjUzMGU4NTUwNGEzNjM4YmEyYzIzN2JiZGYxOjIwMjIwMTA3MTU6V1hkTm\/\/_\/\/IyMjI14hISMjIUBAVFcEpTbE5JWjNoa1ZqZFRRWEY2ZDJSWFEzVnhkRTh6YmpobFUwOHdjR293ZDNBMGRuaHZReXRsVDJOM2FUbERORUp6U2pRM1IxVjZabkJTWTFabmJqTm5XbXBJTlVKWWJFVTVUbHBFUzFSeFFYYzlQUT09L3lscWRiLm1wNDpobHM6bWFuaWZlc3QubTN1OCBvciBodHRwczovL3N0cmVhbS52b2lkYm9vc3QuY2MvZTU0NWQ0NmMwY2MwYjUxMWM4M2IxM2MyMDA4NmU2YWE6MjAyMjAxMDcxNTpXWGROZUVwSlNsTklaM2hrVmpkVFFYRjZkMlJYUTNWeGRFOHpiamhsVTA4d2NHb3dkM0EwZG5odlF5dGxUMk4zYVRsRE5FSnpTalEzUjFWNlpuQlNZMVpuYmpObldtcElOVUpZYkVVNVRscEVTMVJ4UVhjOVBRPT0vMi85LzEvNi82LzUveWxxZGIubXA0','quality':'480p','subtitle':false,'subtitle_lns':false,'subtitle_def':false,'thumbnails':'\/ajax\/get_cdn_tiles\/0\/54072\/?t=1641485857'}";

            var result = RezkaParser.GetCDNStreams(mockInput);

            Assert.AreEqual("360p", result[0].Quality);

            Assert.AreEqual("https://stream.voidboost.cc/a86c9ec6509c656c2bcafabfb2401861:2022010715:WXdNeEpJSlNIZ3hkVjdTQXF6d2RXQ3VxdE8zbjhlU08wcGowd3A0dnhvQytlT2N3aTlDNEJzSjQ3R1V6ZnBSY1ZnbjNnWmpINUJYbEU5TlpES1RxQXc9PQ==/2/9/1/6/6/5/0oflu.mp4", result[0].URL2);

            Assert.AreEqual("1080p Ultra", result[4].Quality);

            Assert.AreEqual("https://stream.voidboost.cc/e545d46c0cc0b511c83b13c20086e6aa:2022010715:WXdNeEpJSlNIZ3hkVjdTQXF6d2RXQ3VxdE8zbjhlU08wcGowd3A0dnhvQytlT2N3aTlDNEJzSjQ3R1V6ZnBSY1ZnbjNnWmpINUJYbEU5TlpES1RxQXc9PQ==/2/9/1/6/6/5/ylqdb.mp4", result[4].URL2);
        }
        public void GetTranslations_Returns_Valid_Data()
        {
            var mockInput = @"<div class='b-translators__block'> <div class='b-translators__title'>В русской озвучке от:</div> <ul id='translators-list' class='b-translators__list'><li title='многоголосый закадровый' class='b-translator__item active' data-id='6756' data-translator_id='59' data-cdn_quality='480p'>Гаврилов</li><li title='Оригинал' class='b-translator__item' data-id='6756' data-translator_id='65' data-cdn_quality='480p'>Оригинал</li></ul> </div>";

            var htmlDoc = new HtmlDocument();

            htmlDoc.LoadHtml(mockInput);

            var result = RezkaParser.GetTranslations(htmlDoc);

            Assert.AreEqual(59, result[0].Id);

            Assert.AreEqual("Гаврилов", result[0].Name);

            Assert.AreEqual(65, result[1].Id);

            Assert.AreEqual("Оригинал", result[1].Name);
        }
        public void GetSeasons_Returns_Valid_Data()
        {
            //var mockInput = @"{'success':true,'message':'','seasons':'\u003Cli class=\'b-simple_season__item active\' data-autoswitch=\'1\' data-tab_id=\'1\'\u003E\u0421\u0435\u0437\u043e\u043d 1\u003C\/li\u003E\u003Cli class=\'b-simple_season__item\' data-autoswitch=\'1\' data-tab_id=\'2\'\u003E\u0421\u0435\u0437\u043e\u043d 2\u003C\/li\u003E\u003Cli class=\'b-simple_season__item\' data-autoswitch=\'1\' data-tab_id=\'3\'\u003E\u0421\u0435\u0437\u043e\u043d 3\u003C\/li\u003E','episodes':'\u003Cul id=\'simple-episodes-list-1\' class=\'b-simple_episodes__list clearfix\'\u003E\u003Cli class=\'b-simple_episode__item active\' data-autoswitch=\'1\' data-cdn_url=\'[360p]https:\/\/load.hdrezka-ag.net\/tvseries\/0f0d00f1f7b57c0d5a9e6dcb9979c4c430420328\/e219be1d8c58ae31128cacf99c066c0a:2020041221\/240.mp4:hls:manifest.m3u8 or https:\/\/load.hdrezka-ag.net\/fd4c88cf72020e1c110eab4bdc27b629:2020041221\/tvseries\/0f0d00f1f7b57c0d5a9e6dcb9979c4c430420328\/240.mp4,[480p]https:\/\/load.hdrezka-ag.net\/tvseries\/0f0d00f1f7b57c0d5a9e6dcb9979c4c430420328\/e219be1d8c58ae31128cacf99c066c0a:2020041221\/360.mp4:hls:manifest.m3u8 or https:\/\/load.hdrezka-ag.net\/05c9fa20cac42167ab5ba5ec630243ed:2020041221\/tvseries\/0f0d00f1f7b57c0d5a9e6dcb9979c4c430420328\/360.mp4,[720p]https:\/\/load.hdrezka-ag.net\/tvseries\/0f0d00f1f7b57c0d5a9e6dcb9979c4c430420328\/e219be1d8c58ae31128cacf99c066c0a:2020041221\/480.mp4:hls:manifest.m3u8 or https:\/\/load.hdrezka-ag.net\/43f902b266992ed550c05ed2ae6977b2:2020041221\/tvseries\/0f0d00f1f7b57c0d5a9e6dcb9979c4c430420328\/480.mp4,[1080p]https:\/\/load.hdrezka-ag.net\/tvseries\/0f0d00f1f7b57c0d5a9e6dcb9979c4c430420328\/e219be1d8c58ae31128cacf99c066c0a:2020041221\/720.mp4:hls:manifest.m3u8 or https:\/\/load.hdrezka-ag.net\/553bfe1417b7ba53246e2dc9ed154c49:2020041221\/tvseries\/0f0d00f1f7b57c0d5a9e6dcb9979c4c430420328\/720.mp4,[1080p Ultra]https:\/\/load.hdrezka-ag.net\/tvseries\/0f0d00f1f7b57c0d5a9e6dcb9979c4c430420328\/e219be1d8c58ae31128cacf99c066c0a:2020041221\/1080.mp4:hls:manifest.m3u8 or https:\/\/load.hdrezka-ag.net\/f59fb4da3f852daebdb363f2777decf4:2020041221\/tvseries\/0f0d00f1f7b57c0d5a9e6dcb9979c4c430420328\/1080.mp4\' data-cdn_quality=\'480p\' data-id=\'11658\' data-season_id=\'1\' data-episode_id=\'1\'\u003E\u0421\u0435\u0440\u0438\u044f 1\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-autoswitch=\'1\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'11658\' data-season_id=\'1\' data-episode_id=\'2\'\u003E\u0421\u0435\u0440\u0438\u044f 2\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-autoswitch=\'1\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'11658\' data-season_id=\'1\' data-episode_id=\'3\'\u003E\u0421\u0435\u0440\u0438\u044f 3\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-autoswitch=\'1\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'11658\' data-season_id=\'1\' data-episode_id=\'4\'\u003E\u0421\u0435\u0440\u0438\u044f 4\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-autoswitch=\'1\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'11658\' data-season_id=\'1\' data-episode_id=\'5\'\u003E\u0421\u0435\u0440\u0438\u044f 5\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-autoswitch=\'1\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'11658\' data-season_id=\'1\' data-episode_id=\'6\'\u003E\u0421\u0435\u0440\u0438\u044f 6\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-autoswitch=\'1\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'11658\' data-season_id=\'1\' data-episode_id=\'7\'\u003E\u0421\u0435\u0440\u0438\u044f 7\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-autoswitch=\'1\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'11658\' data-season_id=\'1\' data-episode_id=\'8\'\u003E\u0421\u0435\u0440\u0438\u044f 8\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-autoswitch=\'1\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'11658\' data-season_id=\'1\' data-episode_id=\'9\'\u003E\u0421\u0435\u0440\u0438\u044f 9\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-autoswitch=\'1\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'11658\' data-season_id=\'1\' data-episode_id=\'10\'\u003E\u0421\u0435\u0440\u0438\u044f 10\u003C\/li\u003E\u003C\/ul\u003E\u003Cul id=\'simple-episodes-list-2\' class=\'b-simple_episodes__list clearfix\' style=\'display: none;\'\u003E\u003Cli class=\'b-simple_episode__item\' data-autoswitch=\'1\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'11658\' data-season_id=\'2\' data-episode_id=\'1\'\u003E\u0421\u0435\u0440\u0438\u044f 1\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-autoswitch=\'1\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'11658\' data-season_id=\'2\' data-episode_id=\'2\'\u003E\u0421\u0435\u0440\u0438\u044f 2\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-autoswitch=\'1\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'11658\' data-season_id=\'2\' data-episode_id=\'3\'\u003E\u0421\u0435\u0440\u0438\u044f 3\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-autoswitch=\'1\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'11658\' data-season_id=\'2\' data-episode_id=\'4\'\u003E\u0421\u0435\u0440\u0438\u044f 4\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-autoswitch=\'1\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'11658\' data-season_id=\'2\' data-episode_id=\'5\'\u003E\u0421\u0435\u0440\u0438\u044f 5\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-autoswitch=\'1\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'11658\' data-season_id=\'2\' data-episode_id=\'6\'\u003E\u0421\u0435\u0440\u0438\u044f 6\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-autoswitch=\'1\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'11658\' data-season_id=\'2\' data-episode_id=\'7\'\u003E\u0421\u0435\u0440\u0438\u044f 7\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-autoswitch=\'1\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'11658\' data-season_id=\'2\' data-episode_id=\'8\'\u003E\u0421\u0435\u0440\u0438\u044f 8\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-autoswitch=\'1\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'11658\' data-season_id=\'2\' data-episode_id=\'9\'\u003E\u0421\u0435\u0440\u0438\u044f 9\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-autoswitch=\'1\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'11658\' data-season_id=\'2\' data-episode_id=\'10\'\u003E\u0421\u0435\u0440\u0438\u044f 10\u003C\/li\u003E\u003C\/ul\u003E\u003Cul id=\'simple-episodes-list-3\' class=\'b-simple_episodes__list clearfix\' style=\'display: none;\'\u003E\u003Cli class=\'b-simple_episode__item\' data-autoswitch=\'1\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'11658\' data-season_id=\'3\' data-episode_id=\'1\'\u003E\u0421\u0435\u0440\u0438\u044f 1\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-autoswitch=\'1\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'11658\' data-season_id=\'3\' data-episode_id=\'2\'\u003E\u0421\u0435\u0440\u0438\u044f 2\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-autoswitch=\'1\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'11658\' data-season_id=\'3\' data-episode_id=\'3\'\u003E\u0421\u0435\u0440\u0438\u044f 3\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-autoswitch=\'1\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'11658\' data-season_id=\'3\' data-episode_id=\'4\'\u003E\u0421\u0435\u0440\u0438\u044f 4\u003C\/li\u003E\u003C\/ul\u003E','url':'[360p]https:\/\/load.hdrezka-ag.net\/tvseries\/0f0d00f1f7b57c0d5a9e6dcb9979c4c430420328\/e219be1d8c58ae31128cacf99c066c0a:2020041221\/240.mp4:hls:manifest.m3u8 or https:\/\/load.hdrezka-ag.net\/fd4c88cf72020e1c110eab4bdc27b629:2020041221\/tvseries\/0f0d00f1f7b57c0d5a9e6dcb9979c4c430420328\/240.mp4,[480p]https:\/\/load.hdrezka-ag.net\/tvseries\/0f0d00f1f7b57c0d5a9e6dcb9979c4c430420328\/e219be1d8c58ae31128cacf99c066c0a:2020041221\/360.mp4:hls:manifest.m3u8 or https:\/\/load.hdrezka-ag.net\/05c9fa20cac42167ab5ba5ec630243ed:2020041221\/tvseries\/0f0d00f1f7b57c0d5a9e6dcb9979c4c430420328\/360.mp4,[720p]https:\/\/load.hdrezka-ag.net\/tvseries\/0f0d00f1f7b57c0d5a9e6dcb9979c4c430420328\/e219be1d8c58ae31128cacf99c066c0a:2020041221\/480.mp4:hls:manifest.m3u8 or https:\/\/load.hdrezka-ag.net\/43f902b266992ed550c05ed2ae6977b2:2020041221\/tvseries\/0f0d00f1f7b57c0d5a9e6dcb9979c4c430420328\/480.mp4,[1080p]https:\/\/load.hdrezka-ag.net\/tvseries\/0f0d00f1f7b57c0d5a9e6dcb9979c4c430420328\/e219be1d8c58ae31128cacf99c066c0a:2020041221\/720.mp4:hls:manifest.m3u8 or https:\/\/load.hdrezka-ag.net\/553bfe1417b7ba53246e2dc9ed154c49:2020041221\/tvseries\/0f0d00f1f7b57c0d5a9e6dcb9979c4c430420328\/720.mp4,[1080p Ultra]https:\/\/load.hdrezka-ag.net\/tvseries\/0f0d00f1f7b57c0d5a9e6dcb9979c4c430420328\/e219be1d8c58ae31128cacf99c066c0a:2020041221\/1080.mp4:hls:manifest.m3u8 or https:\/\/load.hdrezka-ag.net\/f59fb4da3f852daebdb363f2777decf4:2020041221\/tvseries\/0f0d00f1f7b57c0d5a9e6dcb9979c4c430420328\/1080.mp4','quality':'480p'}";
            var mockInput = @"{'success':true,'message':'','seasons':'\u003Cli class=\'b-simple_season__item active\' data-tab_id=\'1\'\u003E\u0421\u0435\u0437\u043e\u043d 1\u003C\/li\u003E\u003Cli class=\'b-simple_season__item\' data-tab_id=\'2\'\u003E\u0421\u0435\u0437\u043e\u043d 2\u003C\/li\u003E','episodes':'\u003Cul id=\'simple-episodes-list-1\' class=\'b-simple_episodes__list clearfix\'\u003E\u003Cli class=\'b-simple_episode__item active\' data-cdn_url=\'#hWzM2MHBdaHR0cHM6Ly9zdHJlYW0udm9pZGJvb3N0LmNjLzEvNy80LzkvNC8yLzBkYWI5NWZhZTc4ZGQ1ZDAwMzg1Mjg1ODUyY2EwNzYxOjIwMjIwMTA4MDg6V1hkTmVFcEpTbE5JWjNoa1ZqZFRRWEY2ZDJSWFEzVnhkRTh6YmpobFUwOHdjR293ZDNBMGRuaHZReXRsV\/\/_\/\/IyMjI14hISMjIUBADJOM2FUbERORUp6U2pRM1IxVjZabkJTWTFOb1MwcDRZbGR1ZUdGMU4zbDFTRWhsYjFSNGJVRTlQUT09L291MzV5Lm1wNDpobHM6bWFuaWZlc3QubTN1OCBvciBodHRwczovL3N0cmVhbS52b2lkYm9vc3QuY2MvZWQyMzk2NGY4ZWNlZjAxNWQ2YzgyZWY0YjJhOGMwZjU6MjAyMjAxMDgwODpXWGROZUVwSlNsTklaM2hrVmpkVFFYRjZkMlJYUTNWeGRFOHpiamhsVTA4d2NHb3dkM0EwZG5odlF5dGxUMk4zYVRsRE5FSnpTalEzUjFWNlpuQlNZMU5vUzBwNFlsZHVlR0YxTjNsMVNFaGxiMVI0YlVFOVBRPT0vMS83LzQvOS80LzIvb3UzNXkubXA0LFs0ODBwXWh0dHBzOi8vc3RyZWFtLnZvaWRib29zdC5jYy8xLzcvNC85LzQvMi8wZGFiOTVmYWU3OGRkNWQwMDM4NTI4NTg1MmNhMDc2MToyMDIyMDEwODA4OldYZE5lRXBKU2xOSVozaGtWamRUUVhGNmQyUlhRM1Z4ZEU4emJqaGxVMDh3Y0dvd2QzQTBkbmh2UXl0bFQyTjNhVGxETkVKelNqUTNSMVY2Wm5CU1kxTm9TMHA0WWxkdWVHRjFOM\/\/_\/\/Xl5eIUAjIyEhIyM=\/\/_\/\/JCQhIUAkJEBeIUAjJCRA2wxU0VobGIxUjRiVUU5UFE9PS9udXZ4NC5tcDQ6aGxzOm1hbmlmZXN0Lm0zdTggb3IgaHR0cHM6Ly9zdHJlYW0udm9pZGJvb3N0LmNjLzFhM2I1MDEzOTVjMDgxNzZjMjc1MGE5NDgyNTMyYjA1OjIwMjIwMTA4MDg6V1hkTmVFcEpTbE5JWjNoa1ZqZFRRWEY2ZDJSW\/\/_\/\/JCQjISFAIyFAIyM=FEzVnhkRTh6YmpobFUwOHdjR293ZDNBMGRuaHZReXRsVDJOM2FUbERORUp6U2pRM1IxVjZabkJTWTFOb1MwcDRZbGR1ZUdGMU4zbDFTRWhsYjFSNGJVRTlQUT09LzEvNy80LzkvNC8yL251dng0Lm1wNCxbNzIwcF1odHRwczovL3N0cmVhbS52b2lkYm9vc3QuY2MvMS83LzQvOS80LzIvMGRhYjk1\/\/_\/\/QEBAQEAhIyMhXl5eZmFlNzhkZDVkMDAzODUyODU4NTJjYTA3NjE6MjAyMjAxMDgwODpXWGROZUVwSlNsTklaM2hrVmpkVFFYRjZkMlJYUTNWeGRFOHpiamhsVTA4d2NHb3dkM0EwZG5odlF5dGxUMk4zYVRsRE5FSnpTalEzUjFWNlpuQlNZMU5vUzBwNFlsZHVlR0YxTjNsMVNFaGxiMVI0YlVFOVBRPT0vZWFsa3MubXA0OmhsczptYW5pZmVzdC5tM3U4IG9yIGh0dHBzOi8vc3RyZWFtLnZvaWRib29zdC5jYy83NjI5ZWI4NDJjNTcyMmQ1MmUyYTM5NzQxOGVlYWQyNzoyMDIyMDEwODA4OldYZE5lRXBKU2xOSVozaGtWamRUUVhGNmQyUlhRM1Z4ZEU4emJqaGxVMDh3Y0dvd2QzQTBkbmh2UXl0bFQyTjNhVGxETkVKelNqUTNSMVY2Wm5CU1kxTm9TMHA0WWxkdWVHRjFOM2wxU0VobGIxUjRiVUU5UFE9PS8xLzcvNC85LzQvMi9lYWxrcy5tcDQsWzEwODBwXWh0dHBzOi8vc3RyZWFtLnZvaWRib29zdC5jYy8xLzcvNC85LzQvMi8wZGFiOTVmYWU3OGRkNWQwMDM4NTI4NTg1MmNhMDc2MToyMDIyMDEwODA4OldYZE5lRXBKU2xOSVozaGtWamRUUVhGNmQyUlhRM1Z4ZEU4emJqaGxVMDh3Y0dvd2QzQTBkbmh2UXl0bFQyTjNhVGxETkVKelNqUTNSMVY2Wm5CU1kxTm9TMHA0WWxkdWVHRjFOM2wxU0VobGIxUjRiVUU5UFE9PS8zeDM4Yy5tcDQ6aGxzOm1hbmlmZXN0Lm0zdTggb3IgaHR0cHM6Ly9zdHJlYW0udm9pZGJvb3N0LmNjLzc3MWNkNzYzZjI0OTUwYmQzZmRhODhmN2UxNjE1YzAwOjIwMjIwMTA4MDg6V1hkTmVFcEpTbE5JWjNoa1ZqZFRRWEY2ZDJSWFEzVnhkRTh6YmpobFUwOHdjR293ZDNBMGRuaHZReXRsVDJOM2FUbERORUp6U2pRM1IxVjZabkJTWTFOb1MwcDRZbGR1ZUdGMU4zbDFTRWhsYjFSNGJVRTlQUT09LzEvNy80LzkvNC8yLzN4MzhjLm1wNCxbMTA4MHAgVWx0cmFdaHR0cHM6Ly9zdHJlYW0udm9pZGJvb3N0LmNjLzEvNy80LzkvNC8yLzBkYWI5NWZhZTc4ZGQ1ZDAwMzg1Mjg1ODUyY2EwNzYxOjIwMjIwMTA4MDg6V1hkTmVFcEpTbE5JWjNoa1ZqZFRRWEY2ZDJSWFEzVnhkRTh6YmpobFUwOHdjR293ZDNBMGRuaHZReXRsVDJOM2FUbERORUp6U2pRM1IxVjZabkJTWTFOb1MwcDRZbGR1ZUdGMU4zbDFTRWhsYjFSNGJVRTlQUT09L2JtMjltLm1wNDpobHM6bWFuaWZlc3QubTN1OCBvciBodHRwczovL3N0cmVhbS52b2lkYm9vc3QuY2MvMTkwMGEyOTZkNWFhNjg2NzEyZDc5OTViYzQyZjkyOTE6MjAyMjAxMDgwODpXWGROZUVwSlNsTklaM2hrVmpkVFFYRjZkMlJYUTNWeGRFOHpiamhsVTA4d2NHb3dkM0EwZG5odlF5dGxUMk4zYVRsRE5FSnpTalEzUjFWNlpuQlNZMU5vUzBwNFlsZHVlR0YxTjNsMVNFaGxiMVI0YlVFOVBRPT0vMS83LzQvOS80LzIvYm0yOW0ubXA0\' data-cdn_quality=\'480p\' data-id=\'1933\' data-season_id=\'1\' data-episode_id=\'1\'\u003E\u0421\u0435\u0440\u0438\u044f 1\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'1933\' data-season_id=\'1\' data-episode_id=\'2\'\u003E\u0421\u0435\u0440\u0438\u044f 2\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'1933\' data-season_id=\'1\' data-episode_id=\'3\'\u003E\u0421\u0435\u0440\u0438\u044f 3\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'1933\' data-season_id=\'1\' data-episode_id=\'4\'\u003E\u0421\u0435\u0440\u0438\u044f 4\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'1933\' data-season_id=\'1\' data-episode_id=\'5\'\u003E\u0421\u0435\u0440\u0438\u044f 5\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'1933\' data-season_id=\'1\' data-episode_id=\'6\'\u003E\u0421\u0435\u0440\u0438\u044f 6\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'1933\' data-season_id=\'1\' data-episode_id=\'7\'\u003E\u0421\u0435\u0440\u0438\u044f 7\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'1933\' data-season_id=\'1\' data-episode_id=\'8\'\u003E\u0421\u0435\u0440\u0438\u044f 8\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'1933\' data-season_id=\'1\' data-episode_id=\'9\'\u003E\u0421\u0435\u0440\u0438\u044f 9\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'1933\' data-season_id=\'1\' data-episode_id=\'10\'\u003E\u0421\u0435\u0440\u0438\u044f 10\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'1933\' data-season_id=\'1\' data-episode_id=\'11\'\u003E\u0421\u0435\u0440\u0438\u044f 11\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'1933\' data-season_id=\'1\' data-episode_id=\'12\'\u003E\u0421\u0435\u0440\u0438\u044f 12\u003C\/li\u003E\u003C\/ul\u003E\u003Cul id=\'simple-episodes-list-2\' class=\'b-simple_episodes__list clearfix\' style=\'display: none;\'\u003E\u003Cli class=\'b-simple_episode__item\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'1933\' data-season_id=\'2\' data-episode_id=\'1\'\u003E\u0421\u0435\u0440\u0438\u044f 1\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'1933\' data-season_id=\'2\' data-episode_id=\'2\'\u003E\u0421\u0435\u0440\u0438\u044f 2\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'1933\' data-season_id=\'2\' data-episode_id=\'3\'\u003E\u0421\u0435\u0440\u0438\u044f 3\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'1933\' data-season_id=\'2\' data-episode_id=\'4\'\u003E\u0421\u0435\u0440\u0438\u044f 4\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'1933\' data-season_id=\'2\' data-episode_id=\'5\'\u003E\u0421\u0435\u0440\u0438\u044f 5\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'1933\' data-season_id=\'2\' data-episode_id=\'6\'\u003E\u0421\u0435\u0440\u0438\u044f 6\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'1933\' data-season_id=\'2\' data-episode_id=\'7\'\u003E\u0421\u0435\u0440\u0438\u044f 7\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'1933\' data-season_id=\'2\' data-episode_id=\'8\'\u003E\u0421\u0435\u0440\u0438\u044f 8\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'1933\' data-season_id=\'2\' data-episode_id=\'9\'\u003E\u0421\u0435\u0440\u0438\u044f 9\u003C\/li\u003E\u003Cli class=\'b-simple_episode__item\' data-cdn_url=\'null\' data-cdn_quality=\'null\' data-id=\'1933\' data-season_id=\'2\' data-episode_id=\'10\'\u003E\u0421\u0435\u0440\u0438\u044f 10\u003C\/li\u003E\u003C\/ul\u003E','url':'#hWzM2MHBdaHR0cHM6Ly9zdHJlYW0udm9pZGJvb3N0LmNjLzEvNy80LzkvNC8yLzBkYWI5NWZhZTc4ZGQ1ZDAwMzg1Mjg1ODUyY2EwNzYxOjIwMjIwMTA4MDg6V1hkTmVFcEpTbE5JWjNoa1ZqZFRRWEY2ZDJSWFEzVnhkRTh6YmpobFUwOHdjR293ZDNBMGRuaHZReXRsV\/\/_\/\/IyMjI14hISMjIUBADJOM2FUbERORUp6U2pRM1IxVjZabkJTWTFOb1MwcDRZbGR1ZUdGMU4zbDFTRWhsYjFSNGJVRTlQUT09L291MzV5Lm1wNDpobHM6bWFuaWZlc3QubTN1OCBvciBodHRwczovL3N0cmVhbS52b2lkYm9vc3QuY2MvZWQyMzk2NGY4ZWNlZjAxNWQ2YzgyZWY0YjJhOGMwZjU6MjAyMjAxMDgwODpXWGROZUVwSlNsTklaM2hrVmpkVFFYRjZkMlJYUTNWeGRFOHpiamhsVTA4d2NHb3dkM0EwZG5odlF5dGxUMk4zYVRsRE5FSnpTalEzUjFWNlpuQlNZMU5vUzBwNFlsZHVlR0YxTjNsMVNFaGxiMVI0YlVFOVBRPT0vMS83LzQvOS80LzIvb3UzNXkubXA0LFs0ODBwXWh0dHBzOi8vc3RyZWFtLnZvaWRib29zdC5jYy8xLzcvNC85LzQvMi8wZGFiOTVmYWU3OGRkNWQwMDM4NTI4NTg1MmNhMDc2MToyMDIyMDEwODA4OldYZE5lRXBKU2xOSVozaGtWamRUUVhGNmQyUlhRM1Z4ZEU4emJqaGxVMDh3Y0dvd2QzQTBkbmh2UXl0bFQyTjNhVGxETkVKelNqUTNSMVY2Wm5CU1kxTm9TMHA0WWxkdWVHRjFOM\/\/_\/\/Xl5eIUAjIyEhIyM=\/\/_\/\/JCQhIUAkJEBeIUAjJCRA2wxU0VobGIxUjRiVUU5UFE9PS9udXZ4NC5tcDQ6aGxzOm1hbmlmZXN0Lm0zdTggb3IgaHR0cHM6Ly9zdHJlYW0udm9pZGJvb3N0LmNjLzFhM2I1MDEzOTVjMDgxNzZjMjc1MGE5NDgyNTMyYjA1OjIwMjIwMTA4MDg6V1hkTmVFcEpTbE5JWjNoa1ZqZFRRWEY2ZDJSW\/\/_\/\/JCQjISFAIyFAIyM=FEzVnhkRTh6YmpobFUwOHdjR293ZDNBMGRuaHZReXRsVDJOM2FUbERORUp6U2pRM1IxVjZabkJTWTFOb1MwcDRZbGR1ZUdGMU4zbDFTRWhsYjFSNGJVRTlQUT09LzEvNy80LzkvNC8yL251dng0Lm1wNCxbNzIwcF1odHRwczovL3N0cmVhbS52b2lkYm9vc3QuY2MvMS83LzQvOS80LzIvMGRhYjk1\/\/_\/\/QEBAQEAhIyMhXl5eZmFlNzhkZDVkMDAzODUyODU4NTJjYTA3NjE6MjAyMjAxMDgwODpXWGROZUVwSlNsTklaM2hrVmpkVFFYRjZkMlJYUTNWeGRFOHpiamhsVTA4d2NHb3dkM0EwZG5odlF5dGxUMk4zYVRsRE5FSnpTalEzUjFWNlpuQlNZMU5vUzBwNFlsZHVlR0YxTjNsMVNFaGxiMVI0YlVFOVBRPT0vZWFsa3MubXA0OmhsczptYW5pZmVzdC5tM3U4IG9yIGh0dHBzOi8vc3RyZWFtLnZvaWRib29zdC5jYy83NjI5ZWI4NDJjNTcyMmQ1MmUyYTM5NzQxOGVlYWQyNzoyMDIyMDEwODA4OldYZE5lRXBKU2xOSVozaGtWamRUUVhGNmQyUlhRM1Z4ZEU4emJqaGxVMDh3Y0dvd2QzQTBkbmh2UXl0bFQyTjNhVGxETkVKelNqUTNSMVY2Wm5CU1kxTm9TMHA0WWxkdWVHRjFOM2wxU0VobGIxUjRiVUU5UFE9PS8xLzcvNC85LzQvMi9lYWxrcy5tcDQsWzEwODBwXWh0dHBzOi8vc3RyZWFtLnZvaWRib29zdC5jYy8xLzcvNC85LzQvMi8wZGFiOTVmYWU3OGRkNWQwMDM4NTI4NTg1MmNhMDc2MToyMDIyMDEwODA4OldYZE5lRXBKU2xOSVozaGtWamRUUVhGNmQyUlhRM1Z4ZEU4emJqaGxVMDh3Y0dvd2QzQTBkbmh2UXl0bFQyTjNhVGxETkVKelNqUTNSMVY2Wm5CU1kxTm9TMHA0WWxkdWVHRjFOM2wxU0VobGIxUjRiVUU5UFE9PS8zeDM4Yy5tcDQ6aGxzOm1hbmlmZXN0Lm0zdTggb3IgaHR0cHM6Ly9zdHJlYW0udm9pZGJvb3N0LmNjLzc3MWNkNzYzZjI0OTUwYmQzZmRhODhmN2UxNjE1YzAwOjIwMjIwMTA4MDg6V1hkTmVFcEpTbE5JWjNoa1ZqZFRRWEY2ZDJSWFEzVnhkRTh6YmpobFUwOHdjR293ZDNBMGRuaHZReXRsVDJOM2FUbERORUp6U2pRM1IxVjZabkJTWTFOb1MwcDRZbGR1ZUdGMU4zbDFTRWhsYjFSNGJVRTlQUT09LzEvNy80LzkvNC8yLzN4MzhjLm1wNCxbMTA4MHAgVWx0cmFdaHR0cHM6Ly9zdHJlYW0udm9pZGJvb3N0LmNjLzEvNy80LzkvNC8yLzBkYWI5NWZhZTc4ZGQ1ZDAwMzg1Mjg1ODUyY2EwNzYxOjIwMjIwMTA4MDg6V1hkTmVFcEpTbE5JWjNoa1ZqZFRRWEY2ZDJSWFEzVnhkRTh6YmpobFUwOHdjR293ZDNBMGRuaHZReXRsVDJOM2FUbERORUp6U2pRM1IxVjZabkJTWTFOb1MwcDRZbGR1ZUdGMU4zbDFTRWhsYjFSNGJVRTlQUT09L2JtMjltLm1wNDpobHM6bWFuaWZlc3QubTN1OCBvciBodHRwczovL3N0cmVhbS52b2lkYm9vc3QuY2MvMTkwMGEyOTZkNWFhNjg2NzEyZDc5OTViYzQyZjkyOTE6MjAyMjAxMDgwODpXWGROZUVwSlNsTklaM2hrVmpkVFFYRjZkMlJYUTNWeGRFOHpiamhsVTA4d2NHb3dkM0EwZG5odlF5dGxUMk4zYVRsRE5FSnpTalEzUjFWNlpuQlNZMU5vUzBwNFlsZHVlR0YxTjNsMVNFaGxiMVI0YlVFOVBRPT0vMS83LzQvOS80LzIvYm0yOW0ubXA0','quality':'480p','subtitle':false,'subtitle_lns':false,'subtitle_def':false,'thumbnails':'\/ajax\/get_cdn_tiles\/1\/350939\/?t=1641546864'}";

            var result = RezkaParser.GetSeasons(mockInput);

            Assert.AreEqual(2, result.Seasons.Length);

            Assert.AreEqual(12, result.Seasons.Single(x => x.Id == 1).Episodes.Length);

            Assert.AreEqual(10, result.Seasons.Single(x => x.Id == 2).Episodes.Length);

            Assert.AreEqual(1, result.CurrentSeason);

            Assert.AreEqual(1, result.CurrentEpisode);

            Assert.IsTrue(result.CDNStreams.Length > 0);
        }
        public void GetMediaFromJS_Returns_Valid_Data_For_Movie()
        {
            //var mockInput = @"$(function () { sof.tv.initCDNMoviesEvents(33703, 0, 'rezka.ag', false, {'id':'cdnplayer','streams':'[360p]https:\/\/load.hdrezka-ag.net\/movies\/98309768fbe048b649d8e3071540d84cdf90aaab\/deae4e32ca81c3cb79a1111fe3e519f3:2020040721\/240.mp4:hls:manifest.m3u8 or https:\/\/load.hdrezka-ag.net\/b3e04764bde7b7657dc7e1bcf353f2da:2020040721\/movies\/98309768fbe048b649d8e3071540d84cdf90aaab\/240.mp4,[480p]https:\/\/load.hdrezka-ag.net\/movies\/98309768fbe048b649d8e3071540d84cdf90aaab\/deae4e32ca81c3cb79a1111fe3e519f3:2020040721\/360.mp4:hls:manifest.m3u8 or https:\/\/load.hdrezka-ag.net\/d79d1496cc57d2000fbf00b7f993736d:2020040721\/movies\/98309768fbe048b649d8e3071540d84cdf90aaab\/360.mp4,[720p]https:\/\/load.hdrezka-ag.net\/movies\/98309768fbe048b649d8e3071540d84cdf90aaab\/deae4e32ca81c3cb79a1111fe3e519f3:2020040721\/480.mp4:hls:manifest.m3u8 or https:\/\/load.hdrezka-ag.net\/313e7aea979f7fe9e7830f87c526364a:2020040721\/movies\/98309768fbe048b649d8e3071540d84cdf90aaab\/480.mp4,[1080p]https:\/\/load.hdrezka-ag.net\/movies\/98309768fbe048b649d8e3071540d84cdf90aaab\/deae4e32ca81c3cb79a1111fe3e519f3:2020040721\/720.mp4:hls:manifest.m3u8 or https:\/\/load.hdrezka-ag.net\/f02335870d7abea63ebb1a3a9c0f211a:2020040721\/movies\/98309768fbe048b649d8e3071540d84cdf90aaab\/720.mp4,[1080p Ultra]https:\/\/load.hdrezka-ag.net\/movies\/98309768fbe048b649d8e3071540d84cdf90aaab\/deae4e32ca81c3cb79a1111fe3e519f3:2020040721\/1080.mp4:hls:manifest.m3u8 or https:\/\/load.hdrezka-ag.net\/8599895da0e7d16c7802f46e13a5ee28:2020040721\/movies\/98309768fbe048b649d8e3071540d84cdf90aaab\/1080.mp4','default_quality':'480p','hlsconfig':{'maxBufferLength':180,'maxMaxBufferLength':600,'maxBufferSize':33554432000},'geo_ip':'104.42.145.67','geo_iso':'us','preroll':'https:\/\/franecki.net\/assets\/vendor\/3736f6ea7b7e115cbb4f5c2ea8f5f2df.xml?v=3.0 and https:\/\/franecki.net\/assets\/vendor\/49ae0420d7a42849fd13a5e3ae4fc009.xml?v=3.0'}); }); $(function () { sof.tv.initWatchingEvents(33703); }); (function () { $(function () { var comment_id = 0, match = window.location.hash.match(/comment(\d+)/i), ws_usage = 5, show_mode = 0, enabled_mode = 1, callback = function () {}; if (match !== null) { comment_id = match[1]; } callback = function (last_update_id) { if (comment_id > 0) { setTimeout(function () { var comment = $('#comments-tree-item-'+ comment_id +' > div:not(:animated)'); comment.addClass('now-added'); sof.helper.scrollTo($('#comments-tree-item-'+ comment_id), 15, 300, function () { comment.animate({backgroundColor: 'transparent'}, 2000, function () { comment.removeClass('now-added').removeAttr('style'); }); }); }, 200); } if (ws_usage < 50) { sof.comments.initWSComments('wss://hdrezka.ws', 33703, 0, last_update_id, null); } }; if (enabled_mode == 1 && (show_mode == 0 || ws_usage < 5)) { sof.comments.loadComments(33703, 1, true, 0, comment_id, callback); } }); } ());";
            var mockInput = @"$(function () { sof.tv.initCDNMoviesEvents(859, 56, 'rezka.ag', false, {'id':'cdnplayer','streams':'#hWzM2MHBdaHR0cHM6Ly9zdHJlYW0udm9pZGJvb3N0LmNjLzIvOS8xLzYvNi8zL2JiNTM5YWZjMDM3OTQ2Y2RiYjU4ZDdkM2VlMjA4YzcyOjIwMjIwMTA3MTA6OWRlMzUzMmMtOWMyOS00NTQxLTljZjctOTc1ZTM0MDNlZDE1L2tuZW5pLm1wNDpobHM6bWFuaWZlc3QubTN1OCBvciBodHRwczovL3N0cmVhbS52b2lkYm9vc3QuY2MvZjNlOWUxODJiMGVkMzJiYjViY2M4YmM1OTE4ZjM4YzM6MjAyMjAxMDcxMDo5ZGUzNTMyYy05YzI5LTQ1NDEtOWNmNy05NzVlMzQwM2VkMTUvMi85LzEvNi82LzMva25lbmkubXA0LFs0ODBwXWh0dHBzOi8vc3RyZWFtLnZvaWRib29zdC5jYy8yLzkvMS82LzYvMy9iYjUzOWFmYzAzNzk0NmNkYmI1OGQ3ZDNlZTIwOGM3MjoyMDIyMDEwNzEwOjlkZTM1MzJjLTljMjktNDU0MS05Y2Y3LTk3NWUzNDAzZWQxNS9pajh2Zi5tcDQ6aGxzOm1hbmlmZXN0Lm0zdTggb3IgaHR0cHM6Ly9zdHJlYW0udm9pZGJvb3N0LmNjL2U1NzMxMzkzMDZjZDAyNjVkY2JhOWIwZmY1NTYwZWQ2OjIwMjIwMTA3MTA6OWRlMzUzMmMtOWMyOS00NTQxLTljZjctOTc1Z\/\/_\/\/IyMjI14hISMjIUBATM0MDNlZDE1LzIvOS8xLzYvNi8zL2lqOHZmLm\/\/_\/\/JCQhIUAkJEBeIUAjJCRA1wNCxbNzIwcF1odHRwczovL3N0cmVhbS52b2lkYm9vc3QuY2MvMi85LzEvNi82LzMvYmI1MzlhZmMwMzc5NDZjZGJiNThkN2QzZWUyMDhjNzI6MjAyMjAxMDcxMDo5ZGUzNTMyYy05YzI5LTQ1NDEtOWNmNy05NzVlMzQwM2VkMTUvZW5ubTgubXA0OmhsczptYW5pZmVzdC5tM3U4IG9yIGh0dHBzOi8vc3RyZWFtLnZvaWRib29zdC5jYy8yMDg2NjY5MTQwYzkxYzM4ZjdjODZhZjc0NzQ4ZTFmMDoyMDIyMDEwNzEwOjlkZTM1MzJjLTljMjktNDU0MS05Y2Y3LTk3NWUzNDAzZWQxNS8yLzkvMS82LzYvMy9lbm5tOC5tcDQsWzEwODBwXWh0dHBzOi8vc3RyZWFtLnZvaWRib29zdC5jYy8yLzkvMS82LzYvMy9iYjUzOWFmYzAzNzk0NmNkYmI1OGQ3ZDNl\/\/_\/\/JCQjISFAIyFAIyM=ZTIwOGM3MjoyMDIyMDEwNzEwOjlkZTM1MzJjLTljMjktNDU0MS05Y2Y3LTk3NWUzNDAzZWQxNS9iN2dvNC5tcDQ6aGxzOm1hbmlmZXN0Lm0zdTggb3IgaHR0cHM6Ly9zdHJlYW0udm9pZGJvb3N0LmNjLzhhNWIwNmNlNjZlMjhmNjU0YWQyMTY1Y2ZkNTYxNWZlOjIwMjIwMTA3MTA6OWRlMzUzMmMtOWMyOS00NTQxLTljZjctOTc1ZTM0MDNlZDE1LzIvOS8xLzYvNi8zL2I3Z280Lm1wNCxbMTA4MHAgVWx0cmFdaHR0cHM6Ly9zdHJlYW0udm9pZG\/\/_\/\/QEBAQEAhIyMhXl5eJvb3N0LmNjLzIvOS8xLzYvNi8zL2JiNTM5YWZjMDM3OTQ2Y2RiYjU4ZDdkM2VlM\/\/_\/\/Xl5eIUAjIyEhIyM=jA4YzcyOjIwMjIwMTA3MTA6OWRlMzUzMmMtOWMyOS00NTQxLTljZjctOTc1ZTM0MDNlZDE1L214NHp5Lm1wNDpobHM6bWFuaWZlc3QubTN1OCBvciBodHRwczovL3N0cmVhbS52b2lkYm9vc3QuY2MvYzdiYzE5YzNiYTZkMjJjMWIzOTMwNzc0ZDU5MjZlY2Y6MjAyMjAxMDcxMDo5ZGUzNTMyYy05YzI5LTQ1NDEtOWNmNy05NzVlMzQwM2VkMTUvMi85LzEvNi82LzMvbXg0enkubXA0','default_quality':'480p','subtitle':'[\u0420\u0443\u0441\u0441\u043a\u0438\u0439]https:\/\/static.voidboost.com\/view\/wc5tglc6VF5JFhkEnh2lXQ\/1641538833\/2\/9\/1\/6\/6\/3\/tic9a1u0e7ia.vtt','subtitle_lns':{'off':'','\u0420\u0443\u0441\u0441\u043a\u0438\u0439':'ru'},'subtitle_def':'ru','thumbnails':'\/ajax\/get_cdn_tiles\/0\/54070\/?t=1641466833','hlsconfig':{'maxBufferLength':60,'maxMaxBufferLength':600,'maxBufferSize':33554432000},'hlsdebug':0,'debug':0,'geo_ip':'5.39.86.77','geo_iso':'fr','autoswitch':1,'preroll':'https:\/\/franecki.net\/assets\/vendor\/3736f6ea7b7e115cbb4f5c2ea8f5f2df.xml?v=3.0&external_subid=(host)&abfn=maybeneedtorestart and https:\/\/franecki.net\/assets\/vendor\/49ae0420d7a42849fd13a5e3ae4fc009.xml?v=3.0&external_subid=(host)&abfn=maybeneedtorestart'}); }); $(function () { sof.tv.initWatchingEvents(859); }); (function () { $(function () { var comment_id = 0, match = window.location.hash.match(/comment(\d+)/i), ws_usage = 5, show_mode = 1, callback = function () {}; if (match !== null) { comment_id = match[1]; } callback = function (last_update_id) { if (comment_id > 0) { setTimeout(function () { var comment = $('#comments-tree-item-'+ comment_id +' > div:not(:animated)'); comment.addClass('now-added'); sof.helper.scrollTo($('#comments-tree-item-'+ comment_id), 15, 300, function () { comment.animate({backgroundColor: 'transparent'}, 2000, function () { comment.removeClass('now-added').removeAttr('style'); }); }); }, 200); } /*if (ws_usage < 50) { sof.comments.initWSComments('wss://hdrezka.ws', 859, 0, last_update_id, null); }*/ }; if (show_mode == 1) { sof.comments.loadComments(859, 1, true, 0, comment_id, callback); } }); } ());";

            var result = RezkaParser.GetMediaFromJS(mockInput);

            Assert.AreEqual(859, result.Id);

            Assert.AreEqual(56, result.CurrentTranslationId);

            Assert.AreEqual(MediaType.Movies, result.Type);

            Assert.AreEqual(56, result.Translations[0].Id);

            Assert.AreEqual("360p", result.Translations[0].CDNStreams[0].Quality);

            Assert.AreEqual("https://stream.voidboost.cc/f3e9e182b0ed32bb5bcc8bc5918f38c3:2022010710:9de3532c-9c29-4541-9cf7-975e3403ed15/2/9/1/6/6/3/kneni.mp4", result.Translations[0].CDNStreams[0].URL2);

            Assert.AreEqual("1080p Ultra", result.Translations[0].CDNStreams[4].Quality);

            Assert.AreEqual("https://stream.voidboost.cc/c7bc19c3ba6d22c1b3930774d5926ecf:2022010710:9de3532c-9c29-4541-9cf7-975e3403ed15/2/9/1/6/6/3/mx4zy.mp4", result.Translations[0].CDNStreams[4].URL2);
        }
        public async Task <Media> Post([FromBody] string url)
        {
            if (string.IsNullOrEmpty(url))
            {
                return(null);
            }

            var htmlDocument = await _rezkaFetch.GetMediaHtmlDocument(url);

            var jsText = RezkaParser.GetCDNScriptText(htmlDocument);

            var media = RezkaParser.GetMediaFromJS(jsText);

            var translations = RezkaParser.GetTranslations(htmlDocument);

            var favsId = RezkaParser.GetFavsId(htmlDocument);

            media.Translations = media.Translations.Union(translations.Where(x => x.Id != media.CurrentTranslationId)).ToArray();

            media.FavsId = favsId;

            var defaultTranslation = translations.FirstOrDefault(x => x.Id == media.CurrentTranslationId);

            if (defaultTranslation != null)
            {
                media.Translations[0].Name = defaultTranslation.Name;
            }

            if (media.Type == MediaType.Series)
            {
                var seriesJsText = await _rezkaFetch.GetCDNSeries(new MediaRequest { Id = media.Id, TranslationId = media.CurrentTranslationId, FavsId = media.FavsId });

                media.Translations[0].Seasons = RezkaParser.GetSeasons(seriesJsText).Seasons;
            }

            return(media);
        }
Beispiel #10
0
        public async Task <IEnumerable <CDNStream> > Post(CDNSeriesRequest request)
        {
            var response = await _rezkaFetch.GetCDNSeries(request);

            return(RezkaParser.GetCDNStreams(response));
        }
        public async Task <SeasonsData> Post(MediaRequest request)
        {
            var response = await _rezkaFetch.GetCDNSeries(request);

            return(RezkaParser.GetSeasons(response));
        }