Esempio n. 1
0
        public static PostDownloadLinks Create(IEnumerable <string> links)
        {
            PostDownloadLinks postDownloadLinks = new PostDownloadLinks();

            postDownloadLinks.AddItem();
            foreach (string link in links)
            {
                postDownloadLinks.AddServer(DownloadFileServerInfo.GetServerNameFromLink(link));
                postDownloadLinks.AddLink(link);
            }
            return(postDownloadLinks);
        }
Esempio n. 2
0
        private DownloadLinkRef GetNextDownloadLink(QueueDownloadFile queueDownloadFile)
        {
            if (queueDownloadFile.AllDownloadLinkTreated)
            {
                return(null);
            }
            int itemIndex = 0;

            foreach (DownloadItemLink itemLink in queueDownloadFile.DownloadItemLinks)
            {
                if (!itemLink.Downloaded)
                {
                    if (!itemLink.NoDownloadLinkFound)
                    {
                        if (itemLink.SelectedServerIndex == -1)
                        {
                            var q           = (from server in itemLink.ServerLinks select new { server = server, rate = DownloadFileServerInfo.GetLinkRate(server.Name) }).OrderBy(server => server.rate).Select(server => server.server);
                            int serverIndex = 0;
                            foreach (DownloadServerLink serverLink in q)
                            {
                                DownloadFilePartLink filePartLink = serverLink.FilePartLinks[0];
                                if (!UnprotectLink(queueDownloadFile, serverLink, filePartLink, 0))
                                {
                                    continue;
                                }
                                string debridedLink = null;
                                string file         = null;
                                if (DebridLink(queueDownloadFile, itemLink, serverLink, filePartLink, out debridedLink, out file))
                                {
                                    itemLink.SelectedServerIndex = serverIndex;
                                    queueDownloadFile.Modified   = true;
                                    return(new DownloadLinkRef
                                    {
                                        QueueDownloadFileId = queueDownloadFile.Id, ItemIndex = itemIndex, ServerIndex = serverIndex, FilePartIndex = 0, DebridedDownloadLink = debridedLink, File = file
                                    });
                                }
                                serverIndex++;
                            }
                            itemLink.NoDownloadLinkFound         = true;
                            queueDownloadFile.UncompleteDownload = true;
                            queueDownloadFile.Modified           = true;
                            string message = string.Format("can't find download link for item no {0}", itemIndex + 1);
                            //pb.Trace.WriteLine("{0:dd-MM-yyyy HH:mm:ss} - {1,-50} - {2,-25} - file \"{3}\" key {4}", DateTime.Now, message, null, queueDownloadFile.File, queueDownloadFile.Key);
                            pb.Trace.WriteLine("{0:dd-MM-yyyy HH:mm:ss} - {1,-50} - {2,-25} - directory \"{3}\" filename \"{4}\" key {5}", DateTime.Now, message, null, queueDownloadFile.Directory, queueDownloadFile.Filename, queueDownloadFile.Key);
                        }
                        else
                        {
                            DownloadServerLink serverLink = itemLink.ServerLinks[itemLink.SelectedServerIndex];
                            // dont use foreach because UnprotectLink() may change serverLink.FilePartLinks
                            for (int filePartIndex = 0; filePartIndex < serverLink.FilePartLinks.Length; filePartIndex++)
                            {
                                DownloadFilePartLink filePartLink = serverLink.FilePartLinks[filePartIndex];
                                if (filePartLink.State != DownloadState.NotDownloaded)
                                {
                                    continue;
                                }
                                string errorMessage = null;
                                if (UnprotectLink(queueDownloadFile, serverLink, filePartLink, filePartIndex))
                                {
                                    string debridedLink = null;
                                    string file         = null;
                                    if (DebridLink(queueDownloadFile, itemLink, serverLink, filePartLink, out debridedLink, out file))
                                    {
                                        return(new DownloadLinkRef {
                                            QueueDownloadFileId = queueDownloadFile.Id, ItemIndex = itemIndex, ServerIndex = itemLink.SelectedServerIndex, FilePartIndex = filePartIndex, DebridedDownloadLink = debridedLink, File = file
                                        });
                                    }
                                    else
                                    {
                                        errorMessage = "can't find download link";
                                    }
                                }
                                else
                                {
                                    errorMessage = "error unable to unprotect link";
                                }
                                if (errorMessage != null)
                                {
                                    queueDownloadFile.UncompleteDownload = true;
                                    queueDownloadFile.Modified           = true;
                                    errorMessage = errorMessage + string.Format(" for item no {0} server no {1} part no {2}", itemIndex + 1, itemLink.SelectedServerIndex + 1, filePartIndex + 1);
                                    //pb.Trace.WriteLine("{0:dd-MM-yyyy HH:mm:ss} - {1,-50} - {2,-25} - link \"{3}\" file \"{4}\" key {5}", DateTime.Now, errorMessage, null, filePartLink.DownloadLink, queueDownloadFile.File, queueDownloadFile.Key);
                                    pb.Trace.WriteLine("{0:dd-MM-yyyy HH:mm:ss} - {1,-50} - {2,-25} - link \"{3}\" directory \"{4}\" filename \"{5}\" key {6}", DateTime.Now, errorMessage, null, filePartLink.DownloadLink, queueDownloadFile.Directory, queueDownloadFile.Filename, queueDownloadFile.Key);
                                }
                            }
                        }
                    }
                }
                itemIndex++;
            }
            queueDownloadFile.AllDownloadLinkTreated = true;
            queueDownloadFile.Modified = true;
            return(null);
        }
Esempio n. 3
0
        private DownloadItemLink[] CreateDownloadItemLinkArray()
        {
            //IRequestDownloadItemLink[] requestItemLinks = requestDownloadLinks.GetLinks();

            //DownloadItemLink[] downloadItemLinks = new DownloadItemLink[downloadLinks.Length + 1];
            //List<DownloadItemLink> downloadItemLinks = new List<DownloadItemLink>();
            //for (int i1 = 0; i1 < downloadLinks.Length; i1++)
            //foreach (string link in downloadLinks)
            //{
            //IRequestDownloadItemLink requestItemLink = requestItemLinks[i1];
            DownloadItemLink downloadItemLink = new DownloadItemLink();

            //downloadItemLink.Name = requestItemLink.GetName();
            downloadItemLink.Downloaded = false;
            //IRequestDownloadServerLink[] requestFileLinks = requestItemLink.GetServerLinks();
            downloadItemLink.ServerLinks = new DownloadServerLink[downloadLinks.Length + 1];

            int i2 = 0;

            DownloadServerLink fileLink = new DownloadServerLink();

            fileLink.Name          = "DownloadedLink";
            fileLink.FilePartLinks = new DownloadFilePartLink[1];
            DownloadFilePartLink filePartLink = new DownloadFilePartLink();

            filePartLink.Downloaded        = false;
            filePartLink.DownloadLink      = downloadLink;
            filePartLink.State             = state;
            filePartLink.DownloadedFile    = file;
            filePartLink.File              = file;
            filePartLink.StartDownloadTime = startDownloadTime;
            filePartLink.EndDownloadTime   = endDownloadTime;

            filePartLink.DownloadDuration = downloadDuration;
            fileLink.FilePartLinks[0]     = filePartLink;

            downloadItemLink.ServerLinks[i2++] = fileLink;

            //for (int i2 = 0; i2 < requestFileLinks.Length; i2++)
            foreach (string link in downloadLinks)
            {
                //IRequestDownloadServerLink requestFileLink = requestFileLinks[i2];
                fileLink = new DownloadServerLink();
                //fileLink.Name = requestFileLink.GetName();
                fileLink.Name = DownloadFileServerInfo.GetServerNameFromLink(link);
                //string[] filePartLinks = requestFileLink.GetFilePartLinks();
                fileLink.FilePartLinks = new DownloadFilePartLink[1];
                //for (int i3 = 0; i3 < filePartLinks.Length; i3++)
                //{
                filePartLink              = new DownloadFilePartLink();
                filePartLink.Downloaded   = false;
                filePartLink.DownloadLink = link;
                filePartLink.State        = DownloadState.NotDownloaded;
                fileLink.FilePartLinks[0] = filePartLink;
                //}
                downloadItemLink.ServerLinks[i2++] = fileLink;
            }
            //downloadItemLinks.Add(downloadItemLink);
            //}
            return(new DownloadItemLink[] { downloadItemLink });
        }