Exemple #1
0
 /// <summary>
 /// 检测文件类型
 /// </summary>
 private HASHTYPE GetHashFileKeyType(ref TorrentFile myFile)
 {
     HASHTYPE type1 = HASHTYPE.OTHER;
     List<HASHTYPE> typelist = new List<HASHTYPE>();
     for (int m = 0; m < myFile.TorrentFileInfo.Count;m++ )
     {
         string str1 = myFile.TorrentFileInfo[m].Path;
         //获取后缀名
         int dotIndex = str1.LastIndexOf('.');
         string extName = str1.Substring(dotIndex+1, str1.Length - dotIndex-1).ToUpper();
         HASHTYPE temp1=HASHTYPE.OTHER;
         if (extName == "RMVB" || extName == "AVI" || extName == "RM" || extName == "OGM" || extName == "MP4" || extName == "MKV" || extName == "FLV" || extName == "MPEG" || extName == "WMA" || extName == "ASF" || extName == "WMV" || extName == "MOV" || extName == "DAT" || extName == "BDMV"
             || extName == "CLPI" || extName == "M2TS" || extName == "VOB" || extName == "VCD" || extName == "DSF" || extName == "MPG" || extName == "DIVX" || extName == "TS" || extName == "TP")
         {
             type1=HASHTYPE.MOVIE;
             typelist.Add(type1);
             break;
         }
         else if (extName == "MP3" || extName == "MID" || extName == "APE" || extName == "AAC" || extName == "WAV" || extName == "WMA" || extName == "VOC" || extName == "FLAC"|| extName == "M4A")
         {
             type1=HASHTYPE.MUSIC;
         }
         else if (extName == "CHM"||extName == "EPUB" || extName == "PDF" || extName == "DOC" || extName == "TXT" || extName == "DOCX"
       || extName == "PPT" || extName == "PPTX" || extName == "XLS" || extName == "XLSX" || extName == "PDG" || extName == "FB2" || extName == "CBZ")
         {
             type1=HASHTYPE.BOOK;
         }
         else if(extName=="EXE"||extName=="BIN"||extName=="COM"||extName=="BAT"||extName=="RAR"||extName=="ZIP"||extName=="7z"||extName=="ISO"
       || extName == "MSI" || extName == "TAR" || extName == "LZH" || extName == "TGZ" || extName == "OCX" || extName == "SFV" || extName == "MDF" || extName == "DMG")
         {
             type1=HASHTYPE.EXE;
         }
         else if(extName=="BMP"||extName=="GIF"||extName=="PNG"||extName=="JPG"||extName=="RAW"||extName=="TIF"||extName=="PSD")
         {
             type1=HASHTYPE.PICTURE;
         }
         else
         {
             type1=HASHTYPE.OTHER;
         }
         typelist.Add(type1);
     }
     if (typelist.Contains(HASHTYPE.MOVIE))
         type1 = HASHTYPE.MOVIE;
     else if (typelist.Contains(HASHTYPE.MUSIC))
         type1 = HASHTYPE.MUSIC;
     else if (typelist.Contains(HASHTYPE.BOOK))
         type1 = HASHTYPE.BOOK;
     else if (typelist.Contains(HASHTYPE.EXE))
         type1 = HASHTYPE.EXE;
     else if (typelist.Contains(HASHTYPE.PICTURE))
         type1 = HASHTYPE.PICTURE;
     else
         type1 = HASHTYPE.OTHER;
     return type1;
 }
Exemple #2
0
        /// <summary>
        /// 下载种子文件并进行解析读取
        /// </summary>
        private int GetDownAndReaHashDetail(string hashname, ref HASHITEM item1, ref HASHFILEITEM[] filelist)
        {
            Int32 ticktime1 = System.Environment.TickCount;

            try
            {
                int         res1   = 0;
                TorrentFile myFile = null;
                if (checkBox_Torrent.Checked)
                {
                    res1 = m_downLoad.DownLoadFileByHashToFile(hashname);
                    Application.DoEvents();    //让系统在百忙之中来响应其他事件
                    if (res1 == 1)
                    {
                        string filename = Path.Combine(Path.Combine(Path.Combine(m_localPath, "Torrent"), hashname.Substring(hashname.Length - 2, 2)), hashname + ".torrent");
                        myFile = new TorrentFile(filename);
                        Int32 ticktime2 = System.Environment.TickCount;
                        if (myFile == null || myFile.TorrentName.Length == 0)
                        {
                            m_downBadList[hashname] = System.Environment.TickCount / 1000;
                            //解析不了的文件就直接备份
                            if (checkBox_Torrent.Checked)
                            {
                                File.Move(filename, Path.Combine(Path.Combine(m_localPath, "Torrent\\BAD"), hashname + ".torrent"));
                                LogTheAction(1, 1, hashname + "下载文件不对,删除" + "-" + (ticktime2 - ticktime1).ToString());
                            }
                            return(0);
                        }
                    }
                }
                else
                {
                    //不用存储文件,直接在内存中操作
                    byte[] data = m_downLoad.DownLoadFileByHashToByte(hashname);
                    if (data != null)
                    {
                        res1 = 1;
                    }
                    myFile = new TorrentFile(data);
                }
                //如果解析成功就进行赋值返回
                if (res1 == 1)
                {
                    if (myFile == null || myFile.TorrentName.Length == 0 || myFile.TorrentFileInfo.Count == 0 || myFile.TorrentFileInfo.Count > MAX_FILEDETAIL_COUNT)
                    {
                        Int32 ticktime2 = System.Environment.TickCount;
                        LogTheAction(1, 2, hashname + ">>下载成功,但使用失败." + "-" + (ticktime2 - ticktime1).ToString());
                        m_downBadList[hashname] = System.Environment.TickCount / 1000;
                        return(0);
                    }
                    else
                    {
                        //通过文件列表对文件是哪类进行分析判断
                        item1.keyType       = (int)GetHashFileKeyType(ref myFile);
                        item1.fileCnt       = myFile.TorrentFileInfo.Count;
                        item1.filetotalSize = myFile.TorrentPieceLength;
                        //提取正确的文件名字,过滤一些网址信息
                        item1.keyContent = GetOneGoodString(myFile.TorrentName);


                        filelist = new HASHFILEITEM[myFile.TorrentFileInfo.Count];
                        for (int m = 0; m < myFile.TorrentFileInfo.Count; m++)
                        {
                            filelist[m].filename = myFile.TorrentFileInfo[m].Path;
                            filelist[m].filesize = myFile.TorrentFileInfo[m].Length;
                        }
                        Int32 ticktime2 = System.Environment.TickCount;
                        LogTheAction(1, 3, myFile.TorrentName + ">>下载成功:" + myFile.TorrentFileInfo.Count + "-" + (ticktime2 - ticktime1).ToString());
                        return(1);
                    }
                }
                else
                {
                    Int32 ticktime2 = System.Environment.TickCount;
                    m_downBadList[hashname] = System.Environment.TickCount / 1000;
                    LogTheAction(1, 4, hashname + ">>下载失败" + "-" + (ticktime2 - ticktime1).ToString());
                }
            }
            catch (System.Exception ex)
            {
                H31Debug.PrintLn("GetHashDetail:" + ex.StackTrace);
            }
            return(0);
        }
Exemple #3
0
        /// <summary>
        /// 读取线程 2013-06-16
        /// </summary>
        private int GetHashDetail(string hashname, ref HASHITEM item1, ref HASHFILEITEM[] filelist)
        {
            Int32 ticktime1 = System.Environment.TickCount;
            try
            {
                int res1 = 0;
                TorrentFile myFile = null;
                if (checkBox_Torrent.Checked)
                {
                    res1 = m_downLoad.DownLoadFileByHashToFile(hashname);
                    Application.DoEvents();    //让系统在百忙之中来响应其他事件
                    if (res1 == 1)
                    {
                        string filename = m_localPath+"\\Torrent\\" +hashname.Substring(hashname.Length-1,1)+"\\"+ hashname + ".torrent";
                        myFile = new TorrentFile(filename);
                        Int32 ticktime2 = System.Environment.TickCount;
                        if (myFile == null || myFile.TorrentName.Length == 0)
                        {
                            m_downBadList[hashname] = System.Environment.TickCount / 1000;
                            if (checkBox_Torrent.Checked)
                            {
                                //File.Delete(filename);
                                File.Move(filename, m_localPath + "\\Torrent\\BAD\\" + hashname + ".torrent");
                                LogTheAction(1, 1, hashname + "下载文件不对,删除" + "-" + (ticktime2 - ticktime1).ToString());
                            }
                            return 0;
                        }
                    }

                }
                else
                {
                    byte[] data = m_downLoad.DownLoadFileByHashToByte(hashname);
                    if (data != null)
                        res1 = 1;
                    myFile = new TorrentFile(data);
                }
                if (res1 == 1)
                {
                    if (myFile == null || myFile.TorrentName.Length == 0 || myFile.TorrentFileInfo.Count == 0 || myFile.TorrentFileInfo.Count > MAX_FILEDETAIL_COUNT)
                    {
                        Int32 ticktime2 = System.Environment.TickCount;
                        LogTheAction(1, 2, hashname + ">>下载成功,但使用失败." + "-" + (ticktime2 - ticktime1).ToString());
                        m_downBadList[hashname] = System.Environment.TickCount / 1000;
                        return 0;
                    }
                    else
                    {

                        item1.keyType=(int)GetHashFileKeyType(ref myFile);
                        item1.fileCnt = myFile.TorrentFileInfo.Count;
                        item1.filetotalSize = myFile.TorrentPieceLength;
                        item1.keyContent = GetOneGoodString(myFile.TorrentName);

                        filelist = new HASHFILEITEM[myFile.TorrentFileInfo.Count];
                        for (int m = 0; m < myFile.TorrentFileInfo.Count; m++)
                        {
                            filelist[m].filename = myFile.TorrentFileInfo[m].Path;
                            filelist[m].filesize = myFile.TorrentFileInfo[m].Length;
                        }
                        Int32 ticktime2 = System.Environment.TickCount;
                        LogTheAction(1, 3, myFile.TorrentName + ">>下载成功:" + myFile.TorrentFileInfo.Count + "-" + (ticktime2 - ticktime1).ToString());
                        return 1;
                    }
                }
                else
                {
                    Int32 ticktime2 = System.Environment.TickCount;
                    m_downBadList[hashname] = System.Environment.TickCount / 1000;
                    LogTheAction(1, 4, hashname + ">>下载失败" + "-" + (ticktime2 - ticktime1).ToString());
                }
            }
            catch (System.Exception ex)
            {
                //错误日志记录
                H31Debug.PrintLn("GetHashDetail:" + ex.StackTrace);
            }
            return 0;
        }
Exemple #4
0
        /// <summary>
        /// 检测文件类型
        /// </summary>
        private HASHTYPE GetHashFileKeyType(ref TorrentFile myFile)
        {
            HASHTYPE        type1    = HASHTYPE.OTHER;
            List <HASHTYPE> typelist = new List <HASHTYPE>();

            for (int m = 0; m < myFile.TorrentFileInfo.Count; m++)
            {
                string str1 = myFile.TorrentFileInfo[m].Path;
                //获取后缀名
                int    dotIndex = str1.LastIndexOf('.');
                string extName  = str1.Substring(dotIndex + 1, str1.Length - dotIndex - 1).ToUpper();
                if (extName == "RMVB" || extName == "AVI" || extName == "RM" || extName == "OGM" || extName == "MP4" || extName == "MKV" || extName == "FLV" || extName == "MPEG" || extName == "WMA" || extName == "ASF" || extName == "WMV" || extName == "MOV" || extName == "DAT" || extName == "BDMV" ||
                    extName == "CLPI" || extName == "M2TS" || extName == "VOB" || extName == "VCD" || extName == "DSF" || extName == "MPG" || extName == "DIVX" || extName == "TS" || extName == "TP")
                {
                    type1 = HASHTYPE.MOVIE;
                    typelist.Add(type1);
                    break;
                }
                else if (extName == "MP3" || extName == "MID" || extName == "APE" || extName == "AAC" || extName == "WAV" || extName == "WMA" || extName == "VOC" || extName == "FLAC" || extName == "M4A")
                {
                    type1 = HASHTYPE.MUSIC;
                }
                else if (extName == "CHM" || extName == "EPUB" || extName == "PDF" || extName == "DOC" || extName == "TXT" || extName == "DOCX" ||
                         extName == "PPT" || extName == "PPTX" || extName == "XLS" || extName == "XLSX" || extName == "PDG" || extName == "FB2" || extName == "CBZ")
                {
                    type1 = HASHTYPE.BOOK;
                }
                else if (extName == "EXE" || extName == "BIN" || extName == "COM" || extName == "BAT" || extName == "RAR" || extName == "ZIP" || extName == "7z" || extName == "ISO" ||
                         extName == "MSI" || extName == "TAR" || extName == "LZH" || extName == "TGZ" || extName == "OCX" || extName == "SFV" || extName == "MDF" || extName == "DMG")
                {
                    type1 = HASHTYPE.EXE;
                }
                else if (extName == "BMP" || extName == "GIF" || extName == "PNG" || extName == "JPG" || extName == "RAW" || extName == "TIF" || extName == "PSD")
                {
                    type1 = HASHTYPE.PICTURE;
                }
                else
                {
                    type1 = HASHTYPE.OTHER;
                }
                typelist.Add(type1);
            }
            if (typelist.Contains(HASHTYPE.MOVIE))
            {
                type1 = HASHTYPE.MOVIE;
            }
            else if (typelist.Contains(HASHTYPE.MUSIC))
            {
                type1 = HASHTYPE.MUSIC;
            }
            else if (typelist.Contains(HASHTYPE.BOOK))
            {
                type1 = HASHTYPE.BOOK;
            }
            else if (typelist.Contains(HASHTYPE.EXE))
            {
                type1 = HASHTYPE.EXE;
            }
            else if (typelist.Contains(HASHTYPE.PICTURE))
            {
                type1 = HASHTYPE.PICTURE;
            }
            else
            {
                type1 = HASHTYPE.OTHER;
            }
            return(type1);
        }