/// <summary>
        ///		Carga los archivos de un álbum
        /// </summary>
        private MediaFileModelCollection LoadFiles(MediaAlbumModel album, MLNode rootML)
        {
            var files = new MediaFileModelCollection();

            // Carga los archivos
            foreach (MLNode nodeML in rootML.Nodes)
            {
                if (nodeML.Name == TagFile)
                {
                    var file = new MediaFileModel();

                    // Carga los datos
                    file.Album       = album;
                    file.Name        = nodeML.Nodes[TagName].Value;
                    file.Description = nodeML.Nodes[TagDescription].Value;
                    file.CreatedAt   = nodeML.Attributes[TagCreatedAt].Value.GetDateTime(DateTime.Now);
                    file.Status      = nodeML.Attributes[TagStatus].Value.GetEnum(MediaFileModel.StatusFile.NotPlayed);
                    file.FileName    = nodeML.Nodes[TagFileName].Value;
                    file.Url         = nodeML.Nodes[TagUrl].Value;
                    // Añade el archivo
                    if (!string.IsNullOrEmpty(file.Url) || !string.IsNullOrEmpty(file.FileName))
                    {
                        files.Add(file);
                    }
                }
            }
            // Devuelve los archivos
            return(files);
        }
Beispiel #2
0
        public static MediaFileModel GetMediaFile(string filePath)
        {
            if (!IsMediaFile(filePath))
                return null;

            var result = new MediaFileModel
            {
                FileType = Path.GetExtension(filePath),
                FileName = Path.GetFileName(filePath),
                FilePath = Path.GetFullPath(filePath)
            };

            var file = TagLib.File.Create(filePath);
            if (file == null)
                return null;

            var tag = file.Tag;
            if (tag != null)
            {
                result.Title = tag.Title;
                result.Album = tag.Album;
                if (tag.AlbumArtists != null)
                {
                    if (tag.AlbumArtists.Length > 1)
                        result.Artist = String.Join(", ", tag.AlbumArtists);
                    else if (tag.AlbumArtists.Length == 1)
                        result.Artist = tag.AlbumArtists[0];
                    else
                        result.Artist = "";
                }
            }


            return result;
        }
        private void editListMediaItem(MediaFileModel file)
        {
            AddComment form = new AddComment(file);

            form.ShowDialog();

            file.Comment = form.Comment;
        }
Beispiel #4
0
        private async Task RemoveMedia(MediaFileModel mediaFile)
        {
            _mediaToDelete.Add(mediaFile);
            var fileHelper = DependencyService.Get <IFileHelper>();

            fileHelper.DeleteFile(mediaFile.Path);
            SelectedMedia.Remove(mediaFile);
            SetMediaHeight();
        }
Beispiel #5
0
 public async void AddAudio()
 {
     if (((App)App.Current).AudioRecording != null)
     {
         var recording = new MediaFileModel(((App)App.Current).AudioRecording.Path, LocalRecordId, MediaFileModel.MediaType.Audio);
         SelectedMedia.Add(recording);
         OnPropertyChanged(nameof(SelectedMedia));
         ((App)App.Current).AudioRecording = null;
     }
 }
 public AddComment(MediaFileModel file)
 {
     InitializeComponent();
     label2.Text = file.Name;
     label4.Text = file.Type;
     label6.Text = file.Path;
     if (file.Comment != "")
     {
         textBox1.Text = file.Comment;
     }
 }
Beispiel #7
0
 private static bool IsAudio(MediaFileModel mediaFileModel)
 {
     return(mediaFileModel.Extension switch
     {
         "mp3" => true,
         "aac" => true,
         "flac" => true,
         "wav" => true,
         "ogg" => true,
         "m4a" => true,
         _ => false
     });
Beispiel #8
0
        /// <summary>
        ///		Trata el mensaje de añadir archivos
        /// </summary>
        private void TreatMessagePlayMedia(MessagePlayMedia message)
        {
            if (message.Files.Count > 0)
            {
                MediaAlbumModel album            = MainViewModel.MediaManager.File.SearchAlbumByName(message.Group);
                MediaAlbumModel reproductionList = new MediaAlbumModel
                {
                    Name = message.Group
                };

                // Agrega el álbum si no existía
                if (album == null)
                {
                    album = MainViewModel.MediaManager.File.Albums.Add(message.Group, string.Empty);
                }
                // Añade los archivos
                foreach (KeyValuePair <string, string> file in message.Files)
                {
                    MediaFileModel media = new MediaFileModel
                    {
                        Album = album
                    };

                    // Asigna las propiedades
                    media.Name = file.Key;
                    if (file.Value.StartsWith("http://", StringComparison.CurrentCultureIgnoreCase) ||
                        file.Value.StartsWith("https://", StringComparison.CurrentCultureIgnoreCase))
                    {
                        media.Url = file.Value;
                    }
                    else
                    {
                        media.FileName = file.Value;
                    }
                    // Añade el archivo al álbum
                    if (!album.Files.ExistsByFile(media))
                    {
                        album.Files.Add(media);
                    }
                    // Añade el archivo a la lista de reproducción
                    reproductionList.Files.Add(media);
                }
                // Graba el álbum y lanza el evento de reproducción de lista
                if (reproductionList.Files.Count > 0)
                {
                    MediaPlayerViewModel.Instance.MediaManager.Save();
                    RaiseEventPlay(reproductionList);
                }
            }
        }
 public AddCategory(MediaFileModel file, List <string> categories)
 {
     InitializeComponent();
     label3.Text = file.Name;
     label5.Text = file.Type;
     label7.Text = file.Path;
     if (file.Comment != "")
     {
         label9.Text = file.Comment;
     }
     if (file.Category != null)
     {
         label11.Text = file.Category.ToString();
     }
     listBox1.DataSource = categories;
 }
Beispiel #10
0
        /// <summary>
        ///		Obtiene el nombre del archivo de descarga
        /// </summary>
        private string GetDownloadFileName(MediaFileModel file)
        {
            string fileName = string.Empty;

            // Calcula el nombre del archivo
            if (!string.IsNullOrEmpty(file.Url))
            {
                // Obtiene el nombre de archivo
                fileName = Path.Combine(PathBase, HelperFiles.Normalize(file.Album.Name),
                                        HelperFiles.Normalize(Path.GetFileName(file.Url)));
                // Ajusta el nombre de archivo
                fileName = HelperFiles.GetConsecutiveFileName(Path.GetDirectoryName(fileName), Path.GetFileName(fileName));
            }
            // Devuelve el nombre de archivo
            return(fileName);
        }
        public void createDirectory()
        {
            FolderBrowserDialog folderBrowser = new FolderBrowserDialog();

            folderBrowser.ShowNewFolderButton = true;

            DialogResult   result = folderBrowser.ShowDialog();
            DirectoryModel direct = new DirectoryModel(folderBrowser.SelectedPath, new BindingList <MediaFileModel>());

            if (result == DialogResult.OK)
            {
                Environment.SpecialFolder root = folderBrowser.RootFolder;
                try
                {
                    var fileExtensions = new[] { ".doc", ".docx", ".pdf", ".ppt", ".pptx", ".xls", ".xslx", ".mp3", ".jpg", ".png",
                                                 ".bpm", ".avi", ".mp4" };
                    filePaths = Directory
                                .GetFiles(folderBrowser.SelectedPath)
                                .Where(file => fileExtensions.Any(file.ToLower().EndsWith))
                                .ToArray();

                    for (var i = 0; i < filePaths.Length; i++)
                    {
                        var            fn         = new FileInfo(filePaths[i]);
                        MediaFileModel importFile = new MediaFileModel();
                        importFile.Name = fn.Name.ToString();
                        importFile.Type = fn.Extension.ToString();
                        importFile.Path = fn.Directory.ToString();

                        direct.MediaFiles.Add(importFile);
                    }
                    ListViewItem directory = new ListViewItem(folderBrowser.SelectedPath, _form.listViewLibrary.Groups[0]);
                    directory.Selected = true;

                    directories.Add(direct);
                    _form.listViewLibrary.Items.Add(directory);

                    _form.dataGridView1.DataSource = direct.MediaFiles;
                    Json.saveToJson(@".\directories.json", directories);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Sorry this folder is not available because " + ex.Message);
                }
            }
        }
        private void addCategoryMediaItem(MediaFileModel file)
        {
            List <string> categoryList = new List <string>();

            foreach (ListViewItem item in _form.listViewLibrary.Groups[2].Items)
            {
                categoryList.Add(item.Text);
            }
            AddCategory categoryForm = new AddCategory(file, categoryList);

            categoryForm.ShowDialog();

            if (categoryForm.Category.CategoryName != null)
            {
                file.Category = categoryForm.Category.CategoryName;
                Json.saveToJson(@".\directories.json", directories);
                Json.saveToJson(@".\playlists.json", playlists);
            }
        }
 public MediaItemListViewModel(MediaFileModel file)
 {
     File      = file;
     Group     = file.Album.Name;
     Title     = file.Name;
     Url       = file.Url;
     FileName  = file.FileName;
     CreatedAt = file.CreatedAt;
     if (!string.IsNullOrWhiteSpace(file.FileName))
     {
         FullFileName = file.FileName;
         TextFile     = System.IO.Path.GetFileNameWithoutExtension(file.FileName);
     }
     else
     {
         TextFile    = FullFileName = file.Url;
         CanDownload = true;
     }
 }
        private void dataGridViewMenu_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            MediaFileModel file = _form.dataGridView1.CurrentRow.DataBoundItem as MediaFileModel;

            ListViewItem selectedList = _form.listViewLibrary.SelectedItems[0];

            switch (e.ClickedItem.ToString())
            {
            case "Delete":
                deleteListMediaItem(selectedList);
                _form.dataGridView1.Refresh();
                break;

            case "Add Comment":
                editListMediaItem(file);
                _form.dataGridView1.Refresh();
                break;

            case "Add Category":
                addCategoryMediaItem(file);
                _form.dataGridView1.Refresh();
                break;
            }
        }
Beispiel #15
0
 /// <summary>
 ///		Lanza el evento de descarga de una entrada de un blog
 /// </summary>
 private void RaiseEvent(MediaFileModel file, int actual, int total)
 {
     MediaFileDownload?.Invoke(this, new EventArguments.MediaFileDownloadEventArgs(file, actual, total));
 }
 public Task <int> SaveMedia(MediaFileModel mediaFileModel)
 {
     return(database.InsertAsync(mediaFileModel));
 }
 public Task <int> DeleteMedia(MediaFileModel mediaFileModel)
 {
     return(database.DeleteAsync(mediaFileModel));
 }
 private void deleteListMediaItem(ListViewItem selectedList)
 {
     MediaFileModel file = _form.dataGridView1.CurrentRow.DataBoundItem as MediaFileModel;
 }