{"action":"created","comment":{"url":"https://api.github.com/repos/qbittorrent/qBittorrent/pulls/comments/194248042","pull_request_review_id":127387451,"id":194248042,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDE5NDI0ODA0Mg==","diff_hunk":"@@ -0,0 +1,390 @@\n+/*\n+ * Bittorrent Client using Qt and libtorrent.\n+ * Copyright (C) 2018  Vladimir Golovnev <glassez@yandex.ru>\n+ * Copyright (C) 2014  sledgehammer999 <sledgehammer999@qbittorrent.org>\n+ *\n+ * This program is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU General Public License\n+ * as published by the Free Software Foundation; either version 2\n+ * of the License, or (at your option) any later version.\n+ *\n+ * This program is distributed in the hope that it will be useful,\n+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n+ * GNU General Public License for more details.\n+ *\n+ * You should have received a copy of the GNU General Public License\n+ * along with this program; if not, write to the Free Software\n+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.\n+ *\n+ * In addition, as a special exception, the copyright holders give permission to\n+ * link this program with the OpenSSL project's \"OpenSSL\" library (or with\n+ * modified versions of it that use the same license as the \"OpenSSL\" library),\n+ * and distribute the linked executables. You must obey the GNU General Public\n+ * License in all respects for all of the code used other than \"OpenSSL\".  If you\n+ * modify file(s), you may extend this exception to your version of the file(s),\n+ * but you are not obligated to do so. If you do not wish to do so, delete this\n+ * exception statement from your version.\n+ */\n+\n+#include \"os.h\"\n+\n+#ifdef Q_OS_WIN\n+#include <shlobj.h>\n+#include <shobjidl.h>\n+\n+#include <boost/intrusive_ptr.hpp>\n+\n+#include <QDir>\n+#include <QSettings>\n+#include <QSysInfo>\n+\n+#define __WIDE(str) L ## str\n+#define WIDE(str) __WIDE(str)\n+\n+#define APP_REGISTRY_NAME WIDE(APP_NAME)\n+\n+namespace\n+{\n+    void intrusive_ptr_add_ref(IUnknown *pCOMObj)\n+    {\n+        pCOMObj->AddRef();\n+    }\n+\n+    void intrusive_ptr_release(IUnknown *pCOMObj)\n+    {\n+        pCOMObj->Release();\n+    }\n+\n+    class COMLib final\n+    {\n+        Q_DISABLE_COPY(COMLib)\n+\n+    public:\n+        COMLib(DWORD dwCoInit)\n+            : m_status {::CoInitializeEx(NULL, dwCoInit)}\n+        {\n+        }\n+\n+        ~COMLib()\n+        {\n+            if (isInitialized())\n+                ::CoUninitialize();\n+        }\n+\n+        bool isInitialized() const\n+        {\n+            return SUCCEEDED(m_status);\n+        }\n+\n+        template <typename T>\n+        boost::intrusive_ptr<T> createObject(\n+                REFCLSID rclsid, LPUNKNOWN pUnkOuter\n+                , DWORD dwClsContext, HRESULT *pError = nullptr) const\n+        {\n+            if (!isInitialized())\n+                return nullptr;\n+\n+            T *obj = nullptr;\n+            HRESULT result = ::CoCreateInstance(rclsid, pUnkOuter, dwClsContext, __uuidof(T)\n+                                                , reinterpret_cast<void**>(&obj));\n+            if (pError)\n+                *pError = result;\n+\n+            return {obj, false};\n+        }\n+\n+    private:\n+        const HRESULT m_status;\n+    };\n+\n+    enum REG_SEARCH_TYPE\n+    {\n+        USER,\n+        SYSTEM_32BIT,\n+        SYSTEM_64BIT\n+    };\n+\n+    QStringList getRegSubkeys(HKEY handle)\n+    {\n+        QStringList keys;\n+\n+        DWORD cSubKeys = 0;\n+        DWORD cMaxSubKeyLen = 0;\n+        LONG res = ::RegQueryInfoKeyW(handle, NULL, NULL, NULL, &cSubKeys, &cMaxSubKeyLen, NULL, NULL, NULL, NULL, NULL, NULL);\n+\n+        if (res == ERROR_SUCCESS) {\n+            ++cMaxSubKeyLen; // For null character\n+            LPWSTR lpName = new WCHAR[cMaxSubKeyLen];\n+            DWORD cName;\n+\n+            for (DWORD i = 0; i < cSubKeys; ++i) {\n+                cName = cMaxSubKeyLen;\n+                res = ::RegEnumKeyExW(handle, i, lpName, &cName, NULL, NULL, NULL, NULL);\n+                if (res == ERROR_SUCCESS)\n+                    keys.push_back(QString::fromWCharArray(lpName));\n+            }\n+\n+            delete[] lpName;\n+        }\n+\n+        return keys;\n+    }\n+\n+    QString getRegValue(HKEY handle, const QString &name = QString())\n+    {\n+        QString result;\n+\n+        DWORD type = 0;\n+        DWORD cbData = 0;\n+        LPWSTR lpValueName = NULL;\n+        if (!name.isEmpty()) {\n+            lpValueName = new WCHAR[name.size() + 1];\n+            name.toWCharArray(lpValueName);\n+            lpValueName[name.size()] = 0;\n+        }\n+\n+        // Discover the size of the value\n+        ::RegQueryValueExW(handle, lpValueName, NULL, &type, NULL, &cbData);\n+        DWORD cBuffer = (cbData / sizeof(WCHAR)) + 1;\n+        LPWSTR lpData = new WCHAR[cBuffer];\n+        LONG res = ::RegQueryValueExW(handle, lpValueName, NULL, &type, (LPBYTE)lpData, &cbData);\n+        if (lpValueName)\n+            delete[] lpValueName;\n+\n+        if (res == ERROR_SUCCESS) {\n+            lpData[cBuffer - 1] = 0;\n+            result = QString::fromWCharArray(lpData);\n+        }\n+        delete[] lpData;\n+\n+        return result;\n+    }\n+\n+    QString pythonSearchReg(const REG_SEARCH_TYPE type)\n+    {\n+        HKEY hkRoot;\n+        if (type == USER)\n+            hkRoot = HKEY_CURRENT_USER;\n+        else\n+            hkRoot = HKEY_LOCAL_MACHINE;\n+\n+        REGSAM samDesired = KEY_READ;\n+        if (type == SYSTEM_32BIT)\n+            samDesired |= KEY_WOW64_32KEY;\n+        else if (type == SYSTEM_64BIT)\n+            samDesired |= KEY_WOW64_64KEY;\n+\n+        QString path;\n+        LONG res = 0;\n+        HKEY hkPythonCore;\n+        res = ::RegOpenKeyExW(hkRoot, L\"SOFTWARE\\\\Python\\\\PythonCore\", 0, samDesired, &hkPythonCore);\n+\n+        if (res == ERROR_SUCCESS) {\n+            QStringList versions = getRegSubkeys(hkPythonCore);\n+            qDebug(\"Python versions nb: %d\", versions.size());\n+            versions.sort();\n+\n+            bool found = false;\n+            while (!found && !versions.empty()) {\n+                const QString version = versions.takeLast() + \"\\\\InstallPath\";\n+                LPWSTR lpSubkey = new WCHAR[version.size() + 1];\n+                version.toWCharArray(lpSubkey);\n+                lpSubkey[version.size()] = 0;\n+\n+                HKEY hkInstallPath;\n+                res = ::RegOpenKeyExW(hkPythonCore, lpSubkey, 0, samDesired, &hkInstallPath);\n+                delete[] lpSubkey;\n+\n+                if (res == ERROR_SUCCESS) {\n+                    qDebug(\"Detected possible Python v%s location\", qUtf8Printable(version));\n+                    path = getRegValue(hkInstallPath);\n+                    ::RegCloseKey(hkInstallPath);\n+\n+                    if (!path.isEmpty() && QDir(path).exists(\"python.exe\")) {\n+                        qDebug(\"Found python.exe at %s\", qUtf8Printable(path));\n+                        found = true;\n+                    }\n+                }\n+            }\n+\n+            if (!found)\n+                path = QString();\n+\n+            ::RegCloseKey(hkPythonCore);\n+        }\n+\n+        return path;\n+    }\n+\n+    QString getCurrentAssoc(const QString &cls)\n+    {\n+        return (QSettings {\"HKEY_CLASSES_ROOT\", QSettings::NativeFormat}).value(cls + \"/Default\").toString();\n+    }\n+\n+    void setCurrentAssoc(const QString &cls, const QString &value)\n+    {\n+        (QSettings {\"HKEY_CURRENT_USER\\\\Software\\\\Classes\", QSettings::NativeFormat}).setValue(cls + \"/Default\", value);\n+        ::SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0);\n+    }\n+}\n+\n+QString Utils::OS::getPythonPath()\n+{\n+    QString path = pythonSearchReg(USER);\n+    if (!path.isEmpty())\n+        return path;\n+\n+    path = pythonSearchReg(SYSTEM_32BIT);\n+    if (!path.isEmpty())\n+        return path;\n+\n+    path = pythonSearchReg(SYSTEM_64BIT);\n+    if (!path.isEmpty())\n+        return path;\n+\n+    // Fallback: Detect python from default locations\n+    const QStringList dirs = QDir(\"C:/\").entryList(QStringList(\"Python*\"), QDir::Dirs, QDir::Name | QDir::Reversed);\n+    foreach (const QString &dir, dirs) {\n+        const QString path(\"C:/\" + dir + \"/\");\n+        if (QFile::exists(path + \"python.exe\"))\n+            return path;\n+    }\n+\n+    return QString();\n+}\n+\n+bool Utils::OS::isAssociationsSet()\n+{\n+#if (NTDDI_VERSION < NTDDI_VISTA)\n+    return (isTorrentFileAssocSet() && isMagnetLinkAssocSet());\n+#else\n+    // Win8+\n+    if (QSysInfo::WindowsVersion >= QSysInfo::WV_WINDOWS8)\n+        return false;\n+\n+    // Vista, Win7\n+    const COMLib comLib {COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE};\n+\n+    BOOL isDefault = FALSE;\n+    auto pAssoc = comLib.createObject<IApplicationAssociationRegistration>(\n+                       CLSID_ApplicationAssociationRegistration, 0, CLSCTX_INPROC);","path":"src/base/utils/os.cpp","position":271,"original_position":271,"commit_id":"b05dd83dd71636782722e689e84fd84dcb405783","original_commit_id":"b05dd83dd71636782722e689e84fd84dcb405783","user":{"login":"zeule","id":394621,"node_id":"MDQ6VXNlcjM5NDYyMQ==","avatar_url":"https://avatars0.githubusercontent.com/u/394621?v=4","gravatar_id":"","url":"https://api.github.com/users/zeule","html_url":"https://github.com/zeule","followers_url":"https://api.github.com/users/zeule/followers","following_url":"https://api.github.com/users/zeule/following{/other_user}","gists_url":"https://api.github.com/users/zeule/gists{/gist_id}","starred_url":"https://api.github.com/users/zeule/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zeule/subscriptions","organizations_url":"https://api.github.com/users/zeule/orgs","repos_url":"https://api.github.com/users/zeule/repos","events_url":"https://api.github.com/users/zeule/events{/privacy}","received_events_url":"https://api.github.com/users/zeule/received_events","type":"User","site_admin":false},"body":"The last two parameters are wrongly ordered.","created_at":"2018-06-10T07:14:09Z","updated_at":"2018-06-10T07:14:58Z","html_url":"https://github.com/qbittorrent/qBittorrent/pull/9072#discussion_r194248042","pull_request_url":"https://api.github.com/repos/qbittorrent/qBittorrent/pulls/9072","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/qbittorrent/qBittorrent/pulls/comments/194248042"},"html":{"href":"https://github.com/qbittorrent/qBittorrent/pull/9072#discussion_r194248042"},"pull_request":{"href":"https://api.github.com/repos/qbittorrent/qBittorrent/pulls/9072"}}},"pull_request":{"url":"https://api.github.com/repos/qbittorrent/qBittorrent/pulls/9072","id":193606513,"node_id":"MDExOlB1bGxSZXF1ZXN0MTkzNjA2NTEz","html_url":"https://github.com/qbittorrent/qBittorrent/pull/9072","diff_url":"https://github.com/qbittorrent/qBittorrent/pull/9072.diff","patch_url":"https://github.com/qbittorrent/qBittorrent/pull/9072.patch","issue_url":"https://api.github.com/repos/qbittorrent/qBittorrent/issues/9072","number":9072,"state":"open","locked":false,"title":"Use \"Default programs\" to register file associations","user":{"login":"glassez","id":5063477,"node_id":"MDQ6VXNlcjUwNjM0Nzc=","avatar_url":"https://avatars3.githubusercontent.com/u/5063477?v=4","gravatar_id":"","url":"https://api.github.com/users/glassez","html_url":"https://github.com/glassez","followers_url":"https://api.github.com/users/glassez/followers","following_url":"https://api.github.com/users/glassez/following{/other_user}","gists_url":"https://api.github.com/users/glassez/gists{/gist_id}","starred_url":"https://api.github.com/users/glassez/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/glassez/subscriptions","organizations_url":"https://api.github.com/users/glassez/orgs","repos_url":"https://api.github.com/users/glassez/repos","events_url":"https://api.github.com/users/glassez/events{/privacy}","received_events_url":"https://api.github.com/users/glassez/received_events","type":"User","site_admin":false},"body":"","created_at":"2018-06-08T12:59:13Z","updated_at":"2018-06-10T07:14:58Z","closed_at":null,"merged_at":null,"merge_commit_sha":"87dd15367ba66d2f7a335b9c92e1a19de004da79","assignee":null,"assignees":[],"requested_reviewers":[{"login":"sledgehammer999","id":273315,"node_id":"MDQ6VXNlcjI3MzMxNQ==","avatar_url":"https://avatars0.githubusercontent.com/u/273315?v=4","gravatar_id":"","url":"https://api.github.com/users/sledgehammer999","html_url":"https://github.com/sledgehammer999","followers_url":"https://api.github.com/users/sledgehammer999/followers","following_url":"https://api.github.com/users/sledgehammer999/following{/other_user}","gists_url":"https://api.github.com/users/sledgehammer999/gists{/gist_id}","starred_url":"https://api.github.com/users/sledgehammer999/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sledgehammer999/subscriptions","organizations_url":"https://api.github.com/users/sledgehammer999/orgs","repos_url":"https://api.github.com/users/sledgehammer999/repos","events_url":"https://api.github.com/users/sledgehammer999/events{/privacy}","received_events_url":"https://api.github.com/users/sledgehammer999/received_events","type":"User","site_admin":false},{"login":"Chocobo1","id":9395168,"node_id":"MDQ6VXNlcjkzOTUxNjg=","avatar_url":"https://avatars2.githubusercontent.com/u/9395168?v=4","gravatar_id":"","url":"https://api.github.com/users/Chocobo1","html_url":"https://github.com/Chocobo1","followers_url":"https://api.github.com/users/Chocobo1/followers","following_url":"https://api.github.com/users/Chocobo1/following{/other_user}","gists_url":"https://api.github.com/users/Chocobo1/gists{/gist_id}","starred_url":"https://api.github.com/users/Chocobo1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Chocobo1/subscriptions","organizations_url":"https://api.github.com/users/Chocobo1/orgs","repos_url":"https://api.github.com/users/Chocobo1/repos","events_url":"https://api.github.com/users/Chocobo1/events{/privacy}","received_events_url":"https://api.github.com/users/Chocobo1/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":681368562,"node_id":"MDU6TGFiZWw2ODEzNjg1NjI=","url":"https://api.github.com/repos/qbittorrent/qBittorrent/labels/Feature","name":"Feature","color":"3cff5c","default":false},{"id":11309637,"node_id":"MDU6TGFiZWwxMTMwOTYzNw==","url":"https://api.github.com/repos/qbittorrent/qBittorrent/labels/Windows","name":"Windows","color":"0b02e1","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/qbittorrent/qBittorrent/pulls/9072/commits","review_comments_url":"https://api.github.com/repos/qbittorrent/qBittorrent/pulls/9072/comments","review_comment_url":"https://api.github.com/repos/qbittorrent/qBittorrent/pulls/comments{/number}","comments_url":"https://api.github.com/repos/qbittorrent/qBittorrent/issues/9072/comments","statuses_url":"https://api.github.com/repos/qbittorrent/qBittorrent/statuses/b05dd83dd71636782722e689e84fd84dcb405783","head":{"label":"glassez:fileassoc2","ref":"fileassoc2","sha":"b05dd83dd71636782722e689e84fd84dcb405783","user":{"login":"glassez","id":5063477,"node_id":"MDQ6VXNlcjUwNjM0Nzc=","avatar_url":"https://avatars3.githubusercontent.com/u/5063477?v=4","gravatar_id":"","url":"https://api.github.com/users/glassez","html_url":"https://github.com/glassez","followers_url":"https://api.github.com/users/glassez/followers","following_url":"https://api.github.com/users/glassez/following{/other_user}","gists_url":"https://api.github.com/users/glassez/gists{/gist_id}","starred_url":"https://api.github.com/users/glassez/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/glassez/subscriptions","organizations_url":"https://api.github.com/users/glassez/orgs","repos_url":"https://api.github.com/users/glassez/repos","events_url":"https://api.github.com/users/glassez/events{/privacy}","received_events_url":"https://api.github.com/users/glassez/received_events","type":"User","site_admin":false},"repo":{"id":11788320,"node_id":"MDEwOlJlcG9zaXRvcnkxMTc4ODMyMA==","name":"qBittorrent","full_name":"glassez/qBittorrent","owner":{"login":"glassez","id":5063477,"node_id":"MDQ6VXNlcjUwNjM0Nzc=","avatar_url":"https://avatars3.githubusercontent.com/u/5063477?v=4","gravatar_id":"","url":"https://api.github.com/users/glassez","html_url":"https://github.com/glassez","followers_url":"https://api.github.com/users/glassez/followers","following_url":"https://api.github.com/users/glassez/following{/other_user}","gists_url":"https://api.github.com/users/glassez/gists{/gist_id}","starred_url":"https://api.github.com/users/glassez/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/glassez/subscriptions","organizations_url":"https://api.github.com/users/glassez/orgs","repos_url":"https://api.github.com/users/glassez/repos","events_url":"https://api.github.com/users/glassez/events{/privacy}","received_events_url":"https://api.github.com/users/glassez/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/glassez/qBittorrent","description":"qBittorrent BitTorrent client","fork":true,"url":"https://api.github.com/repos/glassez/qBittorrent","forks_url":"https://api.github.com/repos/glassez/qBittorrent/forks","keys_url":"https://api.github.com/repos/glassez/qBittorrent/keys{/key_id}","collaborators_url":"https://api.github.com/repos/glassez/qBittorrent/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/glassez/qBittorrent/teams","hooks_url":"https://api.github.com/repos/glassez/qBittorrent/hooks","issue_events_url":"https://api.github.com/repos/glassez/qBittorrent/issues/events{/number}","events_url":"https://api.github.com/repos/glassez/qBittorrent/events","assignees_url":"https://api.github.com/repos/glassez/qBittorrent/assignees{/user}","branches_url":"https://api.github.com/repos/glassez/qBittorrent/branches{/branch}","tags_url":"https://api.github.com/repos/glassez/qBittorrent/tags","blobs_url":"https://api.github.com/repos/glassez/qBittorrent/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/glassez/qBittorrent/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/glassez/qBittorrent/git/refs{/sha}","trees_url":"https://api.github.com/repos/glassez/qBittorrent/git/trees{/sha}","statuses_url":"https://api.github.com/repos/glassez/qBittorrent/statuses/{sha}","languages_url":"https://api.github.com/repos/glassez/qBittorrent/languages","stargazers_url":"https://api.github.com/repos/glassez/qBittorrent/stargazers","contributors_url":"https://api.github.com/repos/glassez/qBittorrent/contributors","subscribers_url":"https://api.github.com/repos/glassez/qBittorrent/subscribers","subscription_url":"https://api.github.com/repos/glassez/qBittorrent/subscription","commits_url":"https://api.github.com/repos/glassez/qBittorrent/commits{/sha}","git_commits_url":"https://api.github.com/repos/glassez/qBittorrent/git/commits{/sha}","comments_url":"https://api.github.com/repos/glassez/qBittorrent/comments{/number}","issue_comment_url":"https://api.github.com/repos/glassez/qBittorrent/issues/comments{/number}","contents_url":"https://api.github.com/repos/glassez/qBittorrent/contents/{+path}","compare_url":"https://api.github.com/repos/glassez/qBittorrent/compare/{base}...{head}","merges_url":"https://api.github.com/repos/glassez/qBittorrent/merges","archive_url":"https://api.github.com/repos/glassez/qBittorrent/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/glassez/qBittorrent/downloads","issues_url":"https://api.github.com/repos/glassez/qBittorrent/issues{/number}","pulls_url":"https://api.github.com/repos/glassez/qBittorrent/pulls{/number}","milestones_url":"https://api.github.com/repos/glassez/qBittorrent/milestones{/number}","notifications_url":"https://api.github.com/repos/glassez/qBittorrent/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/glassez/qBittorrent/labels{/name}","releases_url":"https://api.github.com/repos/glassez/qBittorrent/releases{/id}","deployments_url":"https://api.github.com/repos/glassez/qBittorrent/deployments","created_at":"2013-07-31T10:19:53Z","updated_at":"2017-05-10T10:56:28Z","pushed_at":"2018-06-10T06:29:09Z","git_url":"git://github.com/glassez/qBittorrent.git","ssh_url":"git@github.com:glassez/qBittorrent.git","clone_url":"https://github.com/glassez/qBittorrent.git","svn_url":"https://github.com/glassez/qBittorrent","homepage":"http://www.qbittorrent.org","size":148508,"stargazers_count":2,"watchers_count":2,"language":"C++","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":2,"default_branch":"master"}},"base":{"label":"qbittorrent:master","ref":"master","sha":"c8c7ed4a2e2a53aab05cc3fb0906b7c10d786808","user":{"login":"qbittorrent","id":2131270,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIxMzEyNzA=","avatar_url":"https://avatars2.githubusercontent.com/u/2131270?v=4","gravatar_id":"","url":"https://api.github.com/users/qbittorrent","html_url":"https://github.com/qbittorrent","followers_url":"https://api.github.com/users/qbittorrent/followers","following_url":"https://api.github.com/users/qbittorrent/following{/other_user}","gists_url":"https://api.github.com/users/qbittorrent/gists{/gist_id}","starred_url":"https://api.github.com/users/qbittorrent/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/qbittorrent/subscriptions","organizations_url":"https://api.github.com/users/qbittorrent/orgs","repos_url":"https://api.github.com/users/qbittorrent/repos","events_url":"https://api.github.com/users/qbittorrent/events{/privacy}","received_events_url":"https://api.github.com/users/qbittorrent/received_events","type":"Organization","site_admin":false},"repo":{"id":3351871,"node_id":"MDEwOlJlcG9zaXRvcnkzMzUxODcx","name":"qBittorrent","full_name":"qbittorrent/qBittorrent","owner":{"login":"qbittorrent","id":2131270,"node_id":"MDEyOk9yZ2FuaXphdGlvbjIxMzEyNzA=","avatar_url":"https://avatars2.githubusercontent.com/u/2131270?v=4","gravatar_id":"","url":"https://api.github.com/users/qbittorrent","html_url":"https://github.com/qbittorrent","followers_url":"https://api.github.com/users/qbittorrent/followers","following_url":"https://api.github.com/users/qbittorrent/following{/other_user}","gists_url":"https://api.github.com/users/qbittorrent/gists{/gist_id}","starred_url":"https://api.github.com/users/qbittorrent/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/qbittorrent/subscriptions","organizations_url":"https://api.github.com/users/qbittorrent/orgs","repos_url":"https://api.github.com/users/qbittorrent/repos","events_url":"https://api.github.com/users/qbittorrent/events{/privacy}","received_events_url":"https://api.github.com/users/qbittorrent/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/qbittorrent/qBittorrent","description":"qBittorrent BitTorrent client","fork":false,"url":"https://api.github.com/repos/qbittorrent/qBittorrent","forks_url":"https://api.github.com/repos/qbittorrent/qBittorrent/forks","keys_url":"https://api.github.com/repos/qbittorrent/qBittorrent/keys{/key_id}","collaborators_url":"https://api.github.com/repos/qbittorrent/qBittorrent/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/qbittorrent/qBittorrent/teams","hooks_url":"https://api.github.com/repos/qbittorrent/qBittorrent/hooks","issue_events_url":"https://api.github.com/repos/qbittorrent/qBittorrent/issues/events{/number}","events_url":"https://api.github.com/repos/qbittorrent/qBittorrent/events","assignees_url":"https://api.github.com/repos/qbittorrent/qBittorrent/assignees{/user}","branches_url":"https://api.github.com/repos/qbittorrent/qBittorrent/branches{/branch}","tags_url":"https://api.github.com/repos/qbittorrent/qBittorrent/tags","blobs_url":"https://api.github.com/repos/qbittorrent/qBittorrent/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/qbittorrent/qBittorrent/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/qbittorrent/qBittorrent/git/refs{/sha}","trees_url":"https://api.github.com/repos/qbittorrent/qBittorrent/git/trees{/sha}","statuses_url":"https://api.github.com/repos/qbittorrent/qBittorrent/statuses/{sha}","languages_url":"https://api.github.com/repos/qbittorrent/qBittorrent/languages","stargazers_url":"https://api.github.com/repos/qbittorrent/qBittorrent/stargazers","contributors_url":"https://api.github.com/repos/qbittorrent/qBittorrent/contributors","subscribers_url":"https://api.github.com/repos/qbittorrent/qBittorrent/subscribers","subscription_url":"https://api.github.com/repos/qbittorrent/qBittorrent/subscription","commits_url":"https://api.github.com/repos/qbittorrent/qBittorrent/commits{/sha}","git_commits_url":"https://api.github.com/repos/qbittorrent/qBittorrent/git/commits{/sha}","comments_url":"https://api.github.com/repos/qbittorrent/qBittorrent/comments{/number}","issue_comment_url":"https://api.github.com/repos/qbittorrent/qBittorrent/issues/comments{/number}","contents_url":"https://api.github.com/repos/qbittorrent/qBittorrent/contents/{+path}","compare_url":"https://api.github.com/repos/qbittorrent/qBittorrent/compare/{base}...{head}","merges_url":"https://api.github.com/repos/qbittorrent/qBittorrent/merges","archive_url":"https://api.github.com/repos/qbittorrent/qBittorrent/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/qbittorrent/qBittorrent/downloads","issues_url":"https://api.github.com/repos/qbittorrent/qBittorrent/issues{/number}","pulls_url":"https://api.github.com/repos/qbittorrent/qBittorrent/pulls{/number}","milestones_url":"https://api.github.com/repos/qbittorrent/qBittorrent/milestones{/number}","notifications_url":"https://api.github.com/repos/qbittorrent/qBittorrent/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/qbittorrent/qBittorrent/labels{/name}","releases_url":"https://api.github.com/repos/qbittorrent/qBittorrent/releases{/id}","deployments_url":"https://api.github.com/repos/qbittorrent/qBittorrent/deployments","created_at":"2012-02-04T09:37:46Z","updated_at":"2018-06-10T06:25:26Z","pushed_at":"2018-06-10T06:29:11Z","git_url":"git://github.com/qbittorrent/qBittorrent.git","ssh_url":"git@github.com:qbittorrent/qBittorrent.git","clone_url":"https://github.com/qbittorrent/qBittorrent.git","svn_url":"https://github.com/qbittorrent/qBittorrent","homepage":"https://www.qbittorrent.org","size":164427,"stargazers_count":4456,"watchers_count":4456,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":835,"mirror_url":null,"archived":false,"open_issues_count":3096,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":835,"open_issues":3096,"watchers":4456,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/qbittorrent/qBittorrent/pulls/9072"},"html":{"href":"https://github.com/qbittorrent/qBittorrent/pull/9072"},"issue":{"href":"https://api.github.com/repos/qbittorrent/qBittorrent/issues/9072"},"comments":{"href":"https://api.github.com/repos/qbittorrent/qBittorrent/issues/9072/comments"},"review_comments":{"href":"https://api.github.com/repos/qbittorrent/qBittorrent/pulls/9072/comments"},"review_comment":{"href":"https://api.github.com/repos/qbittorrent/qBittorrent/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/qbittorrent/qBittorrent/pulls/9072/commits"},"statuses":{"href":"https://api.github.com/repos/qbittorrent/qBittorrent/statuses/b05dd83dd71636782722e689e84fd84dcb405783"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"zeule"}}