コード例 #1
0
        internal static List <TorrentEntry> GetTorrentDownloads()
        {
            List <TorrentEntry> ret = new List <TorrentEntry>();

            // get list of files being downloaded by qBitTorrentFinder

            if (string.IsNullOrEmpty(TVSettings.Instance.qBitTorrentHost) || string.IsNullOrEmpty(TVSettings.Instance.qBitTorrentPort))
            {
                return(ret);
            }

            string settingsString  = null;
            string downloadsString = null;

            try
            {
                settingsString  = JsonHelper.Obtain(GetApiUrl(qBitTorrentAPIPath.settings));
                downloadsString = JsonHelper.Obtain(GetApiUrl(qBitTorrentAPIPath.torrents));

                JToken settings         = JToken.Parse(settingsString);
                JArray currentDownloads = JArray.Parse(downloadsString);

                if (currentDownloads is null || settings is null)
                {
                    LOGGER.Warn($"Could not get currentDownloads or settings from qBitTorrent: {settingsString} {currentDownloads}");
                    return(ret);
                }

                string savePath = (string)settings["save_path"] ?? string.Empty;

                foreach (JToken torrent in currentDownloads.Children())
                {
                    AddFilesFromTorrent(ret, torrent, savePath);
                }
            }
            catch (WebException wex)
            {
                LOGGER.Warn(
                    $"Could not connect to local instance {TVSettings.Instance.qBitTorrentHost}:{TVSettings.Instance.qBitTorrentPort}, Please check qBitTorrent Settings and ensure qBitTorrent is running with no password required for local connections: {wex.LoggableDetails()}");
            }
            catch (JsonReaderException ex)
            {
                LOGGER.Warn(ex,
                            $"Could not parse data recieved from {settingsString} {downloadsString}");
            }

            return(ret);
        }
コード例 #2
0
        private static void AddFilesFromTorrent(ICollection <TorrentEntry> ret, [NotNull] JToken torrent, string savePath)
        {
            string torrentDetailsString = string.Empty;

            try
            {
                (string hashCode, string torrentName) = ExtractTorrentDetails(torrent);

                string url = GetApiUrl(qBitTorrentAPIPath.torrentDetails) + hashCode;
                torrentDetailsString = JsonHelper.Obtain(url);
                JArray torrentDetails = JArray.Parse(torrentDetailsString);

                if (torrentDetails is null)
                {
                    LOGGER.Warn(
                        $"Could not get details of downloads from {url} from qBitTorrent: {torrentDetailsString}");

                    return;
                }

                if (!torrentDetails.Children().Any())
                {
                    string proposedFilename = TVSettings.Instance.FilenameFriendly(savePath + torrentName) +
                                              TVSettings.Instance.VideoExtensionsArray[0];

                    ret.Add(new TorrentEntry(torrentName, proposedFilename, 0));
                    return;
                }

                foreach (JToken file in torrentDetails.Children())
                {
                    (string downloadedFilename, bool isOnHold, int percentComplete) = ExtractTorrentFileDetails(file);

                    if (!downloadedFilename.Contains(".!qB\\.unwanted\\") && !isOnHold)
                    {
                        ret.Add(new TorrentEntry(torrentName, savePath + downloadedFilename, percentComplete));
                    }
                }
            }
            catch (JsonReaderException ex)
            {
                LOGGER.Warn(ex,
                            $"Could not parse data recieved from {torrentDetailsString}");
            }
        }
コード例 #3
0
        private static List <TorrentEntry> GetqBitTorrentDownloads()
        {
            List <TorrentEntry> ret = new List <TorrentEntry>();

            // get list of files being downloaded by qBitTorrentFinder
            string host = TVSettings.Instance.qBitTorrentHost;
            string port = TVSettings.Instance.qBitTorrentPort;

            if (string.IsNullOrEmpty(host) || string.IsNullOrEmpty(port))
            {
                return(ret);
            }

            string url                  = $"http://{host}:{port}/query/";
            string settingsString       = null;
            string downloadsString      = null;
            string torrentDetailsString = null;

            try
            {
                settingsString  = JsonHelper.Obtain(url + "preferences");
                downloadsString = JsonHelper.Obtain(url + "torrents?filter=all");

                JToken settings         = JToken.Parse(settingsString);
                JArray currentDownloads = JArray.Parse(downloadsString);

                foreach (JToken torrent in currentDownloads.Children())
                {
                    torrentDetailsString = JsonHelper.Obtain(url + "propertiesFiles/" + torrent["hash"]);
                    JArray stuff2 = JArray.Parse(torrentDetailsString);

                    foreach (JToken file in stuff2.Children())
                    {
                        string downloadedFilename = file["name"].ToString();
                        bool   isOnHold           = (file["priority"].Value <int>() == 0);
                        if (!downloadedFilename.Contains(".!qB\\.unwanted\\") && !isOnHold)
                        {
                            ret.Add(new TorrentEntry(torrent["name"].ToString(),
                                                     settings["save_path"] + downloadedFilename,
                                                     (int)(100 * file["progress"].ToObject <float>())));
                        }
                    }

                    if (!stuff2.Children().Any())
                    {
                        ret.Add(
                            new TorrentEntry(
                                torrent["name"].ToString()
                                , TVSettings.Instance.FilenameFriendly(
                                    settings["save_path"] + torrent["name"].ToString()) +
                                TVSettings.Instance.VideoExtensionsArray[0]
                                , 0
                                )
                            );
                    }
                }
            }
            catch (WebException)
            {
                LOGGER.Warn(
                    $"Could not connect to {url}, Please check qBitTorrent Settings and ensure qBitTorrent is running with no password required for local connections");
            }
            catch (JsonReaderException ex)
            {
                LOGGER.Warn(ex,
                            $"Could not parse data recieved from {url}, {settingsString} {downloadsString} {torrentDetailsString}");
            }

            return(ret);
        }
コード例 #4
0
        private static List <TorrentEntry> GetqBitTorrentDownloads()
        {
            List <TorrentEntry> ret = new List <TorrentEntry>();

            // get list of files being downloaded by qBitTorrentFinder

            if (string.IsNullOrEmpty(TVSettings.Instance.qBitTorrentHost) || string.IsNullOrEmpty(TVSettings.Instance.qBitTorrentPort))
            {
                return(ret);
            }

            string settingsString       = null;
            string downloadsString      = null;
            string torrentDetailsString = null;

            try
            {
                settingsString  = JsonHelper.Obtain(GetApiUrl(qBitTorrentAPIPath.settings));
                downloadsString = JsonHelper.Obtain(GetApiUrl(qBitTorrentAPIPath.torrents));

                JToken settings         = JToken.Parse(settingsString);
                JArray currentDownloads = JArray.Parse(downloadsString);

                foreach (JToken torrent in currentDownloads.Children())
                {
                    torrentDetailsString = JsonHelper.Obtain(GetApiUrl(qBitTorrentAPIPath.torrentDetails) + torrent["hash"]);
                    JArray stuff2 = JArray.Parse(torrentDetailsString);

                    foreach (JToken file in stuff2.Children())
                    {
                        string downloadedFilename = file["name"].ToString();
                        bool   isOnHold           = file["priority"].Value <int>() == 0;
                        if (!downloadedFilename.Contains(".!qB\\.unwanted\\") && !isOnHold)
                        {
                            ret.Add(new TorrentEntry(torrent["name"].ToString(),
                                                     settings["save_path"] + downloadedFilename,
                                                     (int)(100 * file["progress"].ToObject <float>())));
                        }
                    }

                    if (!stuff2.Children().Any())
                    {
                        ret.Add(
                            new TorrentEntry(
                                torrent["name"].ToString()
                                , TVSettings.Instance.FilenameFriendly(
                                    settings["save_path"] + torrent["name"].ToString()) +
                                TVSettings.Instance.VideoExtensionsArray[0]
                                , 0
                                )
                            );
                    }
                }
            }
            catch (WebException wex)
            {
                LOGGER.Warn(
                    $"Could not connect to {wex.Response.ResponseUri}, Please check qBitTorrent Settings and ensure qBitTorrent is running with no password required for local connections: {wex.Message}");
            }
            catch (JsonReaderException ex)
            {
                LOGGER.Warn(ex,
                            $"Could not parse data recieved from {settingsString} {downloadsString} {torrentDetailsString}");
            }

            return(ret);
        }