예제 #1
0
        public async Task <AbstractDownloadState?> GetDownloaderState(dynamic archiveINI, bool quickMode)
        {
            var directURL = (Uri)DownloaderUtils.GetDirectURL(archiveINI);
            var state     = UriToState(directURL) as State;

            if (state == null)
            {
                return(state);
            }

            var idx = 0;

            while (true)
            {
                var section = archiveINI[$"track/{idx}"];
                if (section.name == null)
                {
                    break;
                }

                var track = new State.Track();
                track.Name   = section.name;
                track.Start  = TimeSpan.Parse(section.start);
                track.End    = TimeSpan.Parse(section.end);
                track.Format = Enum.Parse <State.Track.FormatEnum>(section.format);
                state.Tracks.Add(track);
                idx += 1;
            }

            return(state);
        }
예제 #2
0
        public async Task <AbstractDownloadState> GetDownloaderState(dynamic archiveINI)
        {
            Uri url = DownloaderUtils.GetDirectURL(archiveINI);

            var absolute = true;

            if (url == null || url.Host != SiteURL.Host)
            {
                return(null);
            }
            if (!url.PathAndQuery.StartsWith("/files/file/"))
            {
                if (string.IsNullOrWhiteSpace(url.Query))
                {
                    return(null);
                }
                if (!url.Query.Substring(1).StartsWith("/files/file/"))
                {
                    return(null);
                }
                absolute = false;
            }

            var id   = HttpUtility.ParseQueryString(url.Query)["r"];
            var file = absolute
                ? url.AbsolutePath.Split('/').Last(s => s != "")
                : url.Query.Substring(1).Split('/').Last(s => s != "");

            return(new TState
            {
                FileID = id,
                FileName = file
            });
        }
예제 #3
0
        public async Task <AbstractDownloadState?> GetDownloaderState(dynamic archiveINI, bool quickMode)
        {
            Uri url = DownloaderUtils.GetDirectURL(archiveINI);

            var absolute = true;

            if (url == null || url.Host != SiteURL.Host)
            {
                return(null);
            }

            if (url.PathAndQuery.StartsWith("/applications/core/interface/file/attachment"))
            {
                return(new TState
                {
                    IsAttachment = true,
                    FullURL = url.ToString()
                });
            }

            if (url.PathAndQuery.StartsWith("/index.php?"))
            {
                var id2    = HttpUtility.ParseQueryString(url.Query)["r"];
                var parsed = HttpUtility.ParseQueryString(url.Query);
                var name   = parsed[null].Split("/", StringSplitOptions.RemoveEmptyEntries).Last();
                return(new TState
                {
                    FullURL = url.AbsolutePath,
                    FileID = id2,
                    FileName = name
                });
            }

            if (!url.PathAndQuery.StartsWith("/files/file/"))
            {
                if (string.IsNullOrWhiteSpace(url.Query))
                {
                    return(null);
                }
                if (!url.Query.Substring(1).StartsWith("/files/file/"))
                {
                    return(null);
                }
                absolute = false;
            }

            var id   = HttpUtility.ParseQueryString(url.Query)["r"];
            var file = absolute
                ? url.AbsolutePath.Split('/').Last(s => s != "")
                : url.Query.Substring(1).Split('/').Last(s => s != "");

            return(new TState
            {
                FullURL = url.AbsolutePath,
                FileID = id,
                FileName = file
            });
        }
예제 #4
0
        public async Task <AbstractDownloadState?> GetDownloaderState(dynamic archiveINI, bool quickMode = false)
        {
            var uri = (Uri?)DownloaderUtils.GetDirectURL(archiveINI);

            if (uri == null)
            {
                return(null);
            }

            return(uri.Host == "yadi.sk" ? new State(uri) : null);
        }
예제 #5
0
        public async Task <AbstractDownloadState?> GetDownloaderState(dynamic archiveINI, bool quickMode)
        {
            Uri url = DownloaderUtils.GetDirectURL(archiveINI);

            if (url == null || url.Host != "www.mediafire.com")
            {
                return(null);
            }

            return(new State(url.ToString()));
        }
예제 #6
0
        public AbstractDownloadState GetDownloaderState(dynamic archive_ini)
        {
            Uri url = DownloaderUtils.GetDirectURL(archive_ini);

            if (url == null || url.Host != "www.mediafire.com")
            {
                return(null);
            }

            return(new State
            {
                Url = url.ToString()
            });
        }
예제 #7
0
        public async Task <AbstractDownloadState> GetDownloaderState(dynamic archive_ini)
        {
            Uri url = DownloaderUtils.GetDirectURL(archive_ini);

            if (url == null || url.Host != "www.loverslab.com" || !url.AbsolutePath.StartsWith("/files/file/"))
            {
                return(null);
            }
            var id   = HttpUtility.ParseQueryString(url.Query)["r"];
            var file = url.AbsolutePath.Split('/').Last(s => s != "");

            return(new State
            {
                FileID = id,
                FileName = file
            });
        }
예제 #8
0
        public async Task <AbstractDownloadState?> GetDownloaderState(dynamic archiveINI, bool quickMode = false)
        {
            var url = (Uri)DownloaderUtils.GetDirectURL(archiveINI);

            return(url == null ? null : StateFromUrl(url));
        }
        public async Task <AbstractDownloadState?> GetDownloaderState(dynamic archiveINI, bool quickMode)
        {
            Uri url = DownloaderUtils.GetDirectURL(archiveINI);

            return(await GetDownloaderStateFromUrl(url, quickMode));
        }
예제 #10
0
        public async Task <AbstractDownloadState> GetDownloaderState(dynamic archiveINI)
        {
            var url = (Uri)DownloaderUtils.GetDirectURL(archiveINI);

            return(StateFromUrl(url));
        }