Example #1
0
    public void CreateGroup(int idx)
    {
        this.idx    = idx;
        header      = Create <AlbumHeader>();
        header.name = "header";

        AddChild(header);
        header.transform.localPosition = new Vector3(0, -1, 0);
        header.transform.localScale    = new Vector3(0.84f, 0.93f, 0.84f);

        Album album;

        for (int i = 0; i < 8; i++)
        {
            album = Create <Album>();
            AddChild(album);
            album.name   = "album" + i;
            album.idx    = i;
            album.posIdx = i <= 3 ? i : 4;
            album.SetTexture("album_0" + (i % 4));

            album.transform.parent        = transform;
            album.transform.localPosition = new Vector3(0, -1f, DISTANCE_Z * ((i < 3) ? i : 2));
            album.transform.localScale    = new Vector3(0.84f, 0.93f, 0.84f);
            albums.Add(album);
        }

        iter = new Interator <Album>(albums);
    }
Example #2
0
        private void EditHeader_Tap(object sender, System.Windows.Input.GestureEventArgs e)
        {
            FrameworkElement frameworkElement = sender as FrameworkElement;
            AlbumHeader      albumHeader      = (frameworkElement != null ? frameworkElement.DataContext : null) as AlbumHeader;

            if (albumHeader == null)
            {
                return;
            }
            this.ShowEditAlbum(albumHeader.Album);
        }
Example #3
0
        private void Albums_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
        {
            AlbumHeader selectedItem = this.listBoxAlbums.SelectedItem as AlbumHeader;

            if (selectedItem == null)
            {
                return;
            }
            this.listBoxAlbums.SelectedItem = null;
            Navigator.Current.NavigateToVideoAlbum(selectedItem.VideoAlbum.album_id, selectedItem.Title, this.CommonParameters.PickMode, this.CommonParameters.UserOrGroupId, this.CommonParameters.IsGroup);
        }
Example #4
0
        private void Albums_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
        {
            AlbumHeader selectedItem = this.listBoxAlbums.SelectedItem as AlbumHeader;

            if (selectedItem == null)
            {
                return;
            }
            this.listBoxAlbums.SelectedItem = null;
            this.AddVideoToAlbum(selectedItem.VideoAlbum.id);
        }
Example #5
0
        private void Image_Tap(object sender, System.Windows.Input.GestureEventArgs e)
        {
            FrameworkElement frameworkElement = sender as FrameworkElement;
            AlbumHeader      albumHeader      = (frameworkElement != null ? frameworkElement.DataContext : null) as AlbumHeader;

            if (albumHeader == null)
            {
                return;
            }
            if (!this._selectForMove)
            {
                INavigator current       = Navigator.Current;
                long       userOrGroupId = this.PhotoMainVM.UserOrGroupId;
                int        num1          = this.PhotoMainVM.IsGroup ? 1 : 0;
                string     type          = albumHeader.AlbumType.ToString();
                string     albumId       = albumHeader.AlbumId;
                string     albumName     = albumHeader.AlbumName;
                int        photosCount   = albumHeader.PhotosCount;
                string     title         = this.PhotoMainVM.Title;
                string     description   = albumHeader.Album == null ? "" : albumHeader.Album.description ?? "";
                int        num2          = this.CommonParameters.PickMode ? 1 : 0;
                int        adminLevel    = this._adminLevel;
                Album      album         = albumHeader.Album;
                int        num3          = album != null ? (album.can_upload == 1 ? 1 : 0) : 0;
                current.NavigateToPhotoAlbum(userOrGroupId, num1 != 0, type, albumId, albumName, photosCount, title, description, num2 != 0, adminLevel, num3 != 0);
            }
            else
            {
                PhotosToMoveInfo photosToMoveInfo = new PhotosToMoveInfo();
                photosToMoveInfo.albumId   = albumHeader.AlbumId;
                photosToMoveInfo.albumName = albumHeader.AlbumName;
                photosToMoveInfo.photos    = this._selectedPhotos;
                PhotoAlbumViewModel.PhotoAlbumViewModelInput albumViewModelInput = new PhotoAlbumViewModel.PhotoAlbumViewModelInput();
                albumViewModelInput.AlbumDescription = albumHeader.Album == null ? "" : albumHeader.Album.description ?? "";
                albumViewModelInput.AlbumId          = albumHeader.AlbumId;
                albumViewModelInput.AlbumName        = albumHeader.AlbumName;
                albumViewModelInput.AlbumType        = albumHeader.AlbumType;
                int num = this.PhotoMainVM.IsGroup ? 1 : 0;
                albumViewModelInput.IsGroup = num != 0;
                string photoPageTitle2 = this.PhotoMainVM.PhotoPageTitle2;
                albumViewModelInput.PageTitle = photoPageTitle2;
                int photosCount = albumHeader.PhotosCount;
                albumViewModelInput.PhotosCount = photosCount;
                long userOrGroupId = this.PhotoMainVM.UserOrGroupId;
                albumViewModelInput.UserOrGroupId     = userOrGroupId;
                photosToMoveInfo.TargetAlbumInputData = albumViewModelInput;
                ParametersRepository.SetParameterForId("PhotosToMove", photosToMoveInfo);
                ((Page)this).NavigationService.GoBackSafe();
            }
        }
Example #6
0
        private void itemsControlAlbums_Link(object sender, LinkUnlinkEventArgs e)
        {
            AlbumHeader content = e.ContentPresenter.Content as AlbumHeader;

            if (content == null)
            {
                return;
            }
            foreach (Group <AlbumHeader> group in (Collection <Group <AlbumHeader> >) this.PhotosMainVM.AlbumsVM.Collection)
            {
                int count = ((Collection <AlbumHeader>)group).Count;
                if (count > 20 && ((Collection <AlbumHeader>)group)[count - 20] == content)
                {
                    this.PhotosMainVM.AlbumsVM.LoadData(false, false, null, false);
                }
            }
        }
Example #7
0
        private void Image_Tap(object sender, System.Windows.Input.GestureEventArgs e)
        {
            FrameworkElement     frameworkElement = sender as FrameworkElement;
            AlbumHeaderTwoInARow dataContext      = frameworkElement.DataContext as AlbumHeaderTwoInARow;

            if (dataContext == null)
            {
                return;
            }
            AlbumHeader albumHeader = frameworkElement.Tag.ToString() == "1" ? dataContext.AlbumHeader1 : dataContext.AlbumHeader2;

            if (albumHeader == null)
            {
                return;
            }
            this.SelectedAlbumCallback(albumHeader.AlbumId);
        }
        public void Handle(VideoAlbumEditedEvent message)
        {
            if (message.OwnerId != this.OwnerId)
            {
                return;
            }
            AlbumHeader albumHeader = this._albumsVM.Collection.FirstOrDefault <AlbumHeader>((Func <AlbumHeader, bool>)(a =>
            {
                if (a.VideoAlbum.album_id == message.AlbumId)
                {
                    return(a.VideoAlbum.owner_id == message.OwnerId);
                }
                return(false);
            }));

            if (albumHeader == null)
            {
                return;
            }
            albumHeader.VideoAlbum.privacy = message.Privacy.ToStringList();
            albumHeader.VideoAlbum.title   = message.Name;
        }
        private void ah_PropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            AlbumHeader albumHeader = sender as AlbumHeader;

            if (albumHeader == null)
            {
                return;
            }
            if (!this._addedRemovedDict.Keys.Contains <long>(albumHeader.VideoAlbum.id))
            {
                if (albumHeader.IsSelected)
                {
                    this._addedRemovedDict[albumHeader.VideoAlbum.id] = true;
                }
                else
                {
                    this._addedRemovedDict[albumHeader.VideoAlbum.id] = false;
                }
            }
            else
            {
                this._addedRemovedDict.Remove(albumHeader.VideoAlbum.id);
            }
        }
Example #10
0
        public void TryGrabAndParsePage_Album()
        {
            AlbumHeader expected_album_header = new AlbumHeader(
                "The Chronicles Of Riddick - OST / Хроники Риддика - Саундтрек [Score] (2004)",
                "OST",
                "Graeme Revell",
                "2004",
                "Саундтрек",
                22,
                "mp3",
                "Fluffy",
                "Lannna",
                "",
                new Uri("http://fp42.myzuka.ru/Download.aspx?lid=727400&mid=5258695&date=20140130203947&sum=20dd0e5d919bd6def71c53aed0b47cdd&name=&ic=False&cr=False&ex=.jpg&il=False"),
                new Uri("http://myzuka.ru/Album/12059/Graeme-Revell-The-Chronicles-Of-Riddick-Ost-Хроники-Риддика-Саундтрек-Score-2004")
            );

            ACommonData result1 = Core.TryGrabAndParsePage(
                new Uri("http://myzuka.ru/Album/12059/Graeme-Revell-The-Chronicles-Of-Riddick-Ost-Хроники-Риддика-Саундтрек-Score-2004"),
                "Mozilla/5.0 (Windows; I; Windows NT 5.1; ru; rv:1.9.2.13) Gecko/20100101 Firefox/4.0",
                true,
                false,
                CancellationToken.None);

            Assert.NotNull(result1);
            Assert.IsInstanceOf(typeof(ParsedAlbum), result1);

            ParsedAlbum conv_result1 = (ParsedAlbum) result1;
            Assert.IsTrue(conv_result1.Header.Equals(expected_album_header));
            Assert.IsTrue(conv_result1.Songs.Count == 22);
            Assert.IsTrue(
                conv_result1.Songs.TrueForAll(
                    osh => osh.Artist.Equals("Graeme Revell", StringComparison.OrdinalIgnoreCase) && osh.Album.Equals
                        ("The Chronicles Of Riddick - OST / Хроники Риддика - Саундтрек [Score] (2004)",
                        StringComparison.OrdinalIgnoreCase)));
        }
Example #11
0
        /// <summary>
        /// Парсит все песни на странице альбома и возвращает результат в виде списка моделей песен
        /// </summary>
        /// <param name="InputHTML">HTML-код страницы альбома в виде подготовленного HTML-документа</param>
        /// <param name="AHeader">Распарсенный хидер альбома, информацию о песнях которого следует извлечь</param>
        /// <returns></returns>
        internal static List<OneSongHeader> ParseAllSongsInAlbum(HtmlDocument InputHTML, AlbumHeader AHeader)
        {
            if(InputHTML==null) {throw new ArgumentNullException("InputHTML");}
            if(AHeader == null) {throw new ArgumentNullException("AHeader");}

            List<OneSongHeader> output = new List<OneSongHeader>();

            HtmlNodeCollection raw_songs_list = InputHTML.DocumentNode.SelectNodes(
                "//table[normalize-space(@width)='100%' and normalize-space(@class)='rectable rectable_center']" +
                "/tr[starts-with(@id,'trSong_')]");
            if (raw_songs_list == null) {throw new InvalidOperationException("Невозможно извлечь блок HTML-кода с метаинформацией по всем песням в альбоме");}

            foreach (HtmlNode one_raw_song in raw_songs_list)
            {
                String inner_block = "<root>" + one_raw_song.InnerHtml + "</root>";
                HtmlDocument inner_doc = new HtmlDocument();
                inner_doc.LoadHtml(inner_block);
                String number = inner_doc.DocumentNode.SelectSingleNode(
                    "/root/td[2]").InnerHtml.CleanString().Trim();

                String artist = inner_doc.DocumentNode.SelectSingleNode(
                    "/root/td[3]").InnerHtml;
                artist = ExtractFromHTML(artist);
                
                HtmlNode raw_title_node = inner_doc.DocumentNode.SelectSingleNode("/root/td[5][@class]/div");
                if(raw_title_node==null)
                { throw new InvalidOperationException("Невозможно извлечь блок HTML-кода с названием песни, которая имеет номер "+number); }
                String raw_title_text = raw_title_node.InnerText.CleanString();
                String title = HttpUtility.HtmlDecode(raw_title_text.TrimEnd("Файл утерян", StringComparison.OrdinalIgnoreCase, false));

                Boolean is_available = !raw_title_text.Contains("Файл утерян", StringComparison.InvariantCultureIgnoreCase);

                String duration = inner_doc.DocumentNode.SelectSingleNode(
                    "/root/td[6]").InnerHtml.CleanString().Trim();

                String size = inner_doc.DocumentNode.SelectSingleNode(
                    "/root/td[7]").InnerHtml.CleanString().Trim();

                String bitrate = inner_doc.DocumentNode.SelectSingleNode(
                    "/root/td[8]").InnerHtml.CleanString().Trim();
                
                HtmlNode raw_URI_node = inner_doc.DocumentNode.SelectSingleNode(
                    "/root/td[@class='downloadSong']/a[@href and @title]");
                if (raw_URI_node == null)
                { throw new InvalidOperationException(String.Format("Невозможно извлечь из страницы альбома блок HTML-кода со ссылкой на страницу песни '{0}-{1}'", 
                    number, title)); }

                String raw_URI = raw_URI_node.GetAttributeValue("href", "");
                if(raw_URI.IsStringNullOrEmpty()==true) { throw new InvalidOperationException(String.Format(
                    "Невозможно извлечь ссылку на страницу песни '{0}-{1}' из HTML-кода '{2}'", number, title, raw_URI_node.OuterHtml)); }
                String err_mes;
                Uri song_link = TryFixReturnURI(raw_URI, out err_mes);
                if (song_link == null)
                {
                    throw new InvalidOperationException(String.Format(
                        "Невозможно извлечь из страницы альбома URI на страницу песни, полученную из строки '{0}': {1}",
                        raw_URI, err_mes));
                }
                output.Add(
                    new OneSongHeader(Byte.Parse(number), title, title, artist, AHeader.Title, AHeader.Genre,
                        duration, size, bitrate, AHeader.Format, AHeader.Uploader, null, song_link, is_available)
                    );
            }
            return output;
        }
Example #12
0
        internal static AlbumHeader ParseAlbumHeader(HtmlDocument HTMLPage)
        {
            if (HTMLPage == null) { throw new ArgumentNullException("HTMLPage", "Входной документ не может быть NULL"); }
            
            String caption = CoreInternal.TryGrabCaption(HTMLPage);

            HtmlNode main_body = HTMLPage.DocumentNode.SelectSingleNode(
                "//div[@class='centerblock gr']/div[starts-with(@class, 'in2')]/table[1]/tr/td[2]"
                );
            if(main_body==null) {throw new InvalidOperationException("Невозможно извлечь блок HTML-кода с метаинформацией по альбому");}

            HtmlNodeCollection uploader_and_updater = main_body.SelectNodes("//div[@class='loaderSong']/a[@class and @href]");
            if (uploader_and_updater.IsNullOrEmpty()==true) 
            { throw new InvalidOperationException("Невозможно извлечь блок HTML-кода с данными о пользователях, загрузивших и обновивших альбом"); }

            String uploader = uploader_and_updater[0].InnerText.Trim();
            String updater = "";
            if (uploader_and_updater.Count == 2)
            {
                updater = uploader_and_updater[1].InnerText.Trim();
            }
            
            String main_body_html = main_body.InnerHtml;
            Int32 pos_input;

            String genre = StringTools.SubstringHelpers.GetInnerStringBetweenTokens
                (main_body_html, "Жанр:", "Исполнитель", 0, StringComparison.OrdinalIgnoreCase, out pos_input);
            if (genre.Contains("Нет данных", StringComparison.OrdinalIgnoreCase) == true)
            {
                genre = "Нет данных";
            }
            else
            {
                genre = HtmlTools.IntelliRemoveHTMLTags(genre).CleanString().Trim();
                genre = StringTools.SubstringHelpers.ShrinkSpaces(genre);
            }
            
            String artist = StringTools.SubstringHelpers.GetInnerStringBetweenTokens
                (main_body_html, "Исполнитель:", "<br>", pos_input, StringComparison.OrdinalIgnoreCase, out pos_input).Trim();
            artist = HtmlTools.IntelliRemoveHTMLTags(artist).CleanString().Trim();
            artist = StringTools.SubstringHelpers.ShrinkSpaces(artist);

            String release_date = StringTools.SubstringHelpers.GetInnerStringBetweenTokens
                (main_body_html, "Дата релиза:", "<br>", pos_input, StringComparison.OrdinalIgnoreCase, out pos_input).Trim();

            String type = StringTools.SubstringHelpers.GetInnerStringBetweenTokens
                (main_body_html, "Тип:", "<br>", pos_input, StringComparison.OrdinalIgnoreCase, out pos_input).Trim();

            String count = StringTools.SubstringHelpers.GetInnerStringBetweenTokens
                (main_body_html, "Кол-во песен:", "<br>", pos_input, StringComparison.OrdinalIgnoreCase, out pos_input).Trim();
            Byte count_parsed = Byte.Parse(count);

            String format = StringTools.SubstringHelpers.GetInnerStringBetweenTokens
                (main_body_html, "Формат:", "<br>", pos_input, StringComparison.OrdinalIgnoreCase, out pos_input).Trim();
            
            String description = StringTools.SubstringHelpers.GetInnerStringBetweenTokens
                (main_body_html, "Описание: <br>", "GetVipAccount", pos_input, StringComparison.OrdinalIgnoreCase, out pos_input);
            description = CoreInternal.ExtractFromHTML(description);

            if (caption.StartsWith(artist, StringComparison.OrdinalIgnoreCase) == true)
            {
                caption = caption.TrimStart(artist, StringComparison.OrdinalIgnoreCase, false);
                caption = caption.TrimStart(new char[2] { ' ', '-' });
            }

            AlbumHeader output = new AlbumHeader
                (caption, genre, artist, release_date, type, count_parsed, format, uploader, updater, description,
                CoreInternal.TryGrabImageUri(HTMLPage), CoreInternal.ExtractAlbumUri(HTMLPage));
            return output;
        }