Thứ Tư, 15 tháng 6, 2016

[YoutubeVideoDownloader] Download youtube video with multiple progress and multiple links

Main function:

  1. Add Link: Add single Youtube video link
  2. Import Source: Add multiple link from text (*.txt) or excel file (*.xlsx)
  3. Action: Support cancel download selected link or cancel all
  4. Context menu(right click): function when right click on list video link
  5. Help>Manual: Manual usage the program

1. Main Screen

2. Add Link Screen

3. Import Source Screen

Use library: https://github.com/jamesqo/libvideo to extract link
Download Link: YoutubeVideoDownloader_2016.rar

Thứ Năm, 11 tháng 6, 2015

[PARSER] Parse folder and files to treeview structure on text file

Input: Directory Path
Output: Return string treeview structure

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ParserUtils
{
    /// 
    /// Class FileFolderToText.
    /// Parser folder and file structure to text file.
    /// 
    public class FileFolderToText
    {
        Dictionary<string, int> dictCounterType = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase)
        {
            {"Others", 0}
        };
        private string _otherExtension = string.Empty;
        private int _totalFile = 0;
        private int _totalFolder = 0;
        Dictionary<string, string> dicMapFileType = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase)
        {
            {".doc", "Word"},
            {".docx", "Word"},
            {".xls", "Excel File"},
            {".xlsx", "Excel File"},
            {".xml", "Xml File"},
            {".xsd", "Xsd File"},
            {".ppt", "Power Point File"},
            {".pptx", "Power Point File"},
            {".mdb", "Access File"},
            {".mpp", "Microsoft Project File"},
            {".pdf", "Pdf File"},
            {".png", "Image File"},
            {".gif", "Image File"},
            {".jpg", "Image File"},
            {".jpeg", "ImageFile"},
            {".bmp", "Image File"},
            {".txt", "Text File"},
            {".zip", "Zip File"},
            {".rar", "Rar File"},
            {".7z", "7Z File"},
            {".mht", "Html Document"},
            {".html", "Html File"},
            {".htm", "Html File"},
            {".exe", "Execute File"},
            {".ssc", "DScript File"},
            {".ini", "INI File"},
            {".inf", "INF File"},
            {".bat", "BAT File"},
            {".scc", "Source Control File"},
            {".vsd", "Visio File"},
            {".csv", "CSV File"},
            {".cs", "CSharp File"},
            {".vb", "VB File"},
            {".java", "Java File"},
            {".jsp", "JSP File"},
            {".diff", "Diffrent File"},
            {".resx", "Resource File"},
            {".json", "JSON File"},
            {".rtf", "RTF File"},
            {".rb", "Rubby File"},
            {".mp3", "MP3 File"},
            {".mp4", "MP4 File"},
            {".ico", "Icon File"}
        };

        private string _folderPath = string.Empty;
        public FileFolderToText(string folderPath)
        {
            _folderPath = folderPath;
        }
        public bool Save(string filePath, string data = null)
        {
            if (data == null)
                data = ToText(_folderPath);
            try
            {
                using (StreamWriter sw = new StreamWriter(filePath, false, Encoding.GetEncoding(932)))
                {
                    sw.WriteLine("=======================");
                    sw.WriteLine(string.Format("Folder Path: {0}", _folderPath));
                    sw.WriteLine(string.Format("Total: {0} folder and {1} files.", _totalFolder, _totalFile));
                    sw.WriteLine("========Summary=========");
                    sw.WriteLine(_otherExtension);
                    foreach (var dict in dictCounterType)
                    {
                        sw.WriteLine(string.Format("Total: {0} {1} files.", dict.Value, dict.Key));
                    }
                    sw.WriteLine("=======================");
                    sw.Write(data);
                }
                return true;
            }
            catch
            {
                return false;
            }
        }
        /// 
        /// Parse folder and files to the text.
        /// 
        /// "folderPath">The folder path.
        /// "indent">The space indent.
        /// System.String text tree structure.
        private string ToText(string folderPath, int indent = 0)
        {
            StringBuilder sb = new StringBuilder();
            DirectoryInfo dirInfo = new DirectoryInfo(folderPath);
            if (dirInfo != null)
            {
                _totalFolder++;
                sb.Append(string.Empty.PadLeft(indent));
                sb.AppendLine(dirInfo.Name);
                DirectoryInfo[] lstDirInfo = dirInfo.GetDirectories();
                if (lstDirInfo.Length > 0)
                {
                    for (int i = 0; i < lstDirInfo.Length; i++)
                    {
                        sb.Append(ToText(lstDirInfo[i].FullName, indent + 4));
                    }
                }
                FileInfo[] lstFileInfo = dirInfo.GetFiles();
                if (lstFileInfo.Length > 0)
                {
                    for (int i = 0; i < lstFileInfo.Length; i++)
                    {
                        MappingFileType(Path.GetExtension(lstFileInfo[i].Name));
                        _totalFile++;
                        sb.Append(string.Empty.PadLeft(indent + 4));
                        sb.AppendLine(lstFileInfo[i].Name);
                    }
                }
            }
            return sb.ToString();
        }
        private void MappingFileType(string ext)
        {
            if (dicMapFileType.ContainsKey(ext))
            {
                if (dictCounterType.ContainsKey(dicMapFileType[ext]))
                    dictCounterType[dicMapFileType[ext]]++;
                else
                    dictCounterType[dicMapFileType[ext]] = 1;
            }
            else
            {
                dictCounterType["Others"]++;
                if (_otherExtension.Length == 0)
                {
                    _otherExtension += ext;
                }
                else if (_otherExtension.IndexOf(ext) == -1)
                {
                    _otherExtension += "|" + ext;
                }
            }
        }
    }
}

Execute:

FileFolderToText parseStructure = new FileFolderToText(@"D:\Develop");

parseStructure.Save(@"C:\OutputFile.txt");