{"action":"created","comment":{"url":"https://api.github.com/repos/xbmc/xbmc/pulls/comments/33885594","id":33885594,"diff_hunk":"@@ -255,28 +302,92 @@ extern \"C\" {\n   } ATTRIBUTE_PACKED PVR_CHANNEL_GROUP_MEMBER;\n \n   /*!\n+   * @brief Representation of a timer's attribute integer value.\n+   */\n+  typedef struct PVR_TIMER_TYPE_ATTRIBUTE_INT_VALUE\n+  {\n+    int iValue;                                              /*!< @brief (required) an integer value for a certain timer attribute */\n+    char strDescription[PVR_ADDON_TIMERTYPE_STRING_LENGTH];  /*!< @brief (optional) a localized string describing the value. If left blank, Kodi will\n+                                                               generate a suitable representation (like the integer value as string) */\n+  } ATTRIBUTE_PACKED PVR_TIMER_TYPE_ATTRIBUTE_INT_VALUE;\n+\n+  /*!\n+   * @brief Representation of a timer type.\n+   */\n+  typedef struct PVR_TIMER_TYPE\n+  {\n+    unsigned int iId;                                       /*!< @brief (required) this type's identifier. Ids must be > PVR_TIMER_TYPE_NONE. */\n+    unsigned int iAttributes;                               /*!< @brief (required) defines the attributes for this type (PVR_TIMER_TYPE_* constants). */\n+    char strDescription[PVR_ADDON_TIMERTYPE_STRING_LENGTH]; /*!< @brief (optional) a short localized string describing the purpose of the type. (e.g.\n+                                                              \"Any time at this channel if title matches\"). If left blank, Kodi will generate a\n+                                                              description based on the attributes REPEATING and MANUAL. (e.g. \"Repeating EPG-based.\" */\n+    /* priority value definitions */\n+    unsigned int iPrioritiesSize;                           /*!< @brief (required) Count of possible values for PVR_TMER.iPriority. 0 means priority\n+                                                              is not supported by this timer type or no own value definition wanted, but to use Kodi defaults\n+                                                              of 1..100. */\n+    PVR_TIMER_TYPE_ATTRIBUTE_INT_VALUE\n+      priorities[PVR_ADDON_TIMERTYPE_VALUES_ARRAY_SIZE];    /*!< @brief (optional) Array containing the possible values for PVR_TMER.iPriority. Must be\n+                                                              filled if iPrioritiesSize > 0 */\n+    int          iPrioritiesDefault;                        /*!< @brief (optional) The default value for PVR_TMER.iPriority. Must be filled if iPrioritiesSize > 0 */\n+\n+    /* lifetime value definitions */\n+    unsigned int iLifetimesSize;                            /*!< @brief (required) Count of possible values for PVR_TMER.iLifetime. 0 means lifetime\n+                                                              is not supported by this timer type or no own value definition wanted, but to use Kodi defaults\n+                                                              of 1..365. */\n+    PVR_TIMER_TYPE_ATTRIBUTE_INT_VALUE\n+      lifetimes[PVR_ADDON_TIMERTYPE_VALUES_ARRAY_SIZE];     /*!< @brief (optional) Array containing the possible values for PVR_TMER.iLifetime. Must be\n+                                                              filled if iLifetimesSize > 0 */\n+    int          iLifetimesDefault;                         /*!< @brief (optional) The default value for PVR_TMER.iLifetime. Must be filled if iLifetimesSize > 0 */\n+\n+    /* prevent duplicate episodes value definitions */\n+    unsigned int iPreventDuplicateEpisodesSize;             /*!< @brief (required) Count of possible values for PVR_TMER.iPreventDuplicateEpisodes. 0 means duplicate\n+                                                              episodes prevention is not supported by this timer type or no own value definition wanted, but to use\n+                                                              Kodi defaults. */\n+    PVR_TIMER_TYPE_ATTRIBUTE_INT_VALUE\n+      preventDuplicateEpisodes[PVR_ADDON_TIMERTYPE_VALUES_ARRAY_SIZE];\n+                                                            /*!< @brief (optional) Array containing the possible values for PVR_TMER.iPreventDuplicateEpisodes.. Must\n+                                                              be filled if iPreventDuplicateEpisodesSize > 0 */\n+    unsigned int iPreventDuplicateEpisodesDefault;          /*!< @brief (optional) The default value for PVR_TMER.iPreventDuplicateEpisodesSize. Must be filled if iPreventDuplicateEpisodesSize > 0 */\n+\n+    /* recording folder list value definitions */\n+    unsigned int iRecordingGroupSize;                       /*< @brief (required) Count of possible values of PVR_TIMER.iRecordingGroup. 0 means folder lists are not supported by this timer type */\n+    PVR_TIMER_TYPE_ATTRIBUTE_INT_VALUE\n+      recordingGroup[PVR_ADDON_TIMERTYPE_VALUES_ARRAY_SIZE];\n+                                                            /*!< @brief (optional) Array containing the possible values of PVR_TMER.iRecordingGroup. Must be filled if iRecordingGroupSize > 0 */\n+    unsigned int iRecordingGroupDefault;                    /*! @brief (optional) The default value for PVR_TIMER.iRecordingGroup. Must be filled in if PVR_TIMER.iRecordingGroupSize > 0 */\n+\n+  } ATTRIBUTE_PACKED PVR_TIMER_TYPE;\n+\n+  /*!\n    * @brief Representation of a timer event.\n    */\n   typedef struct PVR_TIMER {\n     unsigned int    iClientIndex;                              /*!< @brief (required) the index of this timer given by the client */\n-    int             iClientChannelUid;                         /*!< @brief (required) unique identifier of the channel to record on */\n-    time_t          startTime;                                 /*!< @brief (required) start time of the recording in UTC. instant timers that are sent to the add-on by xbmc will have this value set to 0 */\n-    time_t          endTime;                                   /*!< @brief (required) end time of the recording in UTC */\n+    unsigned int    iParentClientIndex;                        /*!< @brief (optional) for timers scheduled by a repeating timer, the index of the repeating that scheduled this timer. 0 indicates \"no parent\". */\n+    int             iClientChannelUid;                         /*!< @brief (optional) unique identifier of the channel to record on. For repeating timers, -1 will indicate \"any\" channel. */\n+    time_t          startTime;                                 /*!< @brief (optional) start time of the recording in UTC. Instant timers that are sent to the add-on by Kodi will have this value set to 0. For repeatimg timers, 0 will indicate \"any\" time. */\n+    time_t          endTime;                                   /*!< @brief (optional) end time of the recording in UTC. For repeating timers, 0 will indicate \"any\" time. */\n     PVR_TIMER_STATE state;                                     /*!< @brief (required) the state of this timer */\n-    char            strTitle[PVR_ADDON_NAME_STRING_LENGTH];    /*!< @brief (optional) title of this timer */\n-    char            strDirectory[PVR_ADDON_URL_STRING_LENGTH]; /*!< @brief (optional) the directory where the recording will be stored in */\n+    unsigned int    iTimerType;                                /*!< @brief (required) the type of this timer */","path":"xbmc/addons/include/xbmc_pvr_types.h","position":174,"original_position":174,"commit_id":"d05ac04edc08f5fd6ad14fc46c8434e6c96fb925","original_commit_id":"d05ac04edc08f5fd6ad14fc46c8434e6c96fb925","user":{"login":"ksooo","id":3226626,"avatar_url":"https://avatars.githubusercontent.com/u/3226626?v=3","gravatar_id":"","url":"https://api.github.com/users/ksooo","html_url":"https://github.com/ksooo","followers_url":"https://api.github.com/users/ksooo/followers","following_url":"https://api.github.com/users/ksooo/following{/other_user}","gists_url":"https://api.github.com/users/ksooo/gists{/gist_id}","starred_url":"https://api.github.com/users/ksooo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ksooo/subscriptions","organizations_url":"https://api.github.com/users/ksooo/orgs","repos_url":"https://api.github.com/users/ksooo/repos","events_url":"https://api.github.com/users/ksooo/events{/privacy}","received_events_url":"https://api.github.com/users/ksooo/received_events","type":"User","site_admin":false},"body":"This is not a bitmask and value is not any of the timer type attributes. This is just a private id defined by the addon, not interpreted by Kodi, but passed (back) to the addon with any PVR_TIMER instance. I will change the comment accordingly.","created_at":"2015-07-04T07:38:10Z","updated_at":"2015-07-04T07:38:10Z","html_url":"https://github.com/xbmc/xbmc/pull/7079#discussion_r33885594","pull_request_url":"https://api.github.com/repos/xbmc/xbmc/pulls/7079","_links":{"self":{"href":"https://api.github.com/repos/xbmc/xbmc/pulls/comments/33885594"},"html":{"href":"https://github.com/xbmc/xbmc/pull/7079#discussion_r33885594"},"pull_request":{"href":"https://api.github.com/repos/xbmc/xbmc/pulls/7079"}}},"pull_request":{"url":"https://api.github.com/repos/xbmc/xbmc/pulls/7079","id":34903025,"html_url":"https://github.com/xbmc/xbmc/pull/7079","diff_url":"https://github.com/xbmc/xbmc/pull/7079.diff","patch_url":"https://github.com/xbmc/xbmc/pull/7079.patch","issue_url":"https://api.github.com/repos/xbmc/xbmc/issues/7079","number":7079,"state":"closed","locked":false,"title":"[PVR] Series recordings","user":{"login":"ksooo","id":3226626,"avatar_url":"https://avatars.githubusercontent.com/u/3226626?v=3","gravatar_id":"","url":"https://api.github.com/users/ksooo","html_url":"https://github.com/ksooo","followers_url":"https://api.github.com/users/ksooo/followers","following_url":"https://api.github.com/users/ksooo/following{/other_user}","gists_url":"https://api.github.com/users/ksooo/gists{/gist_id}","starred_url":"https://api.github.com/users/ksooo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ksooo/subscriptions","organizations_url":"https://api.github.com/users/ksooo/orgs","repos_url":"https://api.github.com/users/ksooo/repos","events_url":"https://api.github.com/users/ksooo/events{/privacy}","received_events_url":"https://api.github.com/users/ksooo/received_events","type":"User","site_admin":false},"body":"This PR adds series recording support to Kodi.\r\n\r\nThe technical concept:\r\n==================\r\n\r\nBasic concept is that PVR addons now define an arbitrary number of timer types they support, each type defining its own combination of timer type attributes (out of a set of attributes predefined by the PVR addon API).\r\n\r\nKodi PVR core picks up the different types (and their attributes) using a new PVR addon API function and strictly builds up the complete timer-related logic dynamically, according to the timer attributes. Timer type information is now available at every TimerInfoTag instance.\r\n\r\nEssential timer attributes: Kodi distinguishes between manual (time-based) and epg-based timers. Also, there can be one-shot and repeating timers. All combinations of these attributes are allowed, e.g. \"manual + one-shot\" or \"epg + repeating\".\r\n\r\nExamples for other timer attributes: \"supports recording priority\", \"supports epg search string\", \"supports recording folders\", ...\r\n\r\nUI changes:\r\n=========\r\nTimer window: \r\n* A \"Type\" column has been added\r\n* \"Scheduled time\" column now handles all combinations of weekdays, and start/stop time (incl. \"any time\" for timer schedules) correctly.\r\n\r\n![screenshot001](https://cloud.githubusercontent.com/assets/3226626/7513123/0102b398-f4b2-11e4-9cec-a2afddf987dd.png)\r\n\r\n* The timers scheduled by timer schedules (aka repeating timers) can be displayed as \"children\" of the timer schedule, similar to the \"group items\" feature of the recording window\r\n\r\n![screenshot004](https://cloud.githubusercontent.com/assets/3226626/7513244/fbfdc97c-f4b2-11e4-8ce7-4ffd4d3d255f.png)\r\n\r\n* This behaviour can be controlled using a new (level 4) setting available in the Confluence side blade, similar to the group items feature of the recordings window.\r\n\r\n![screenshot010](https://cloud.githubusercontent.com/assets/3226626/7513292/4b1371d8-f4b3-11e4-8113-f2922df409f9.png)\r\n\r\n![screenshot011](https://cloud.githubusercontent.com/assets/3226626/7513297/60fd44ce-f4b3-11e4-918d-ca80eccdc37f.png)\r\n\r\nTimer settings dialog:\r\n* Completely rewritten from scratch, now acts completely dynamically upon the available timer types and their attributes\r\n* Main idea is to start creation of a new timer by selecting the appropriate timer type. Dialog content will automatically adjust itself according to the respective timer type attributes. As before, user fills in the relevant data on kicks of the new timer\r\n* Dialog can (like before) also used for editing existing timers\r\n* Couple of new/enhanced features, among them support for epg-based repeating timers, support for all weekday combinations, pre- and post-record time, ...\r\n* Finally, lots of bug fixes...\r\n\r\n![screenshot006](https://cloud.githubusercontent.com/assets/3226626/7513474/ad0f7f48-f4b4-11e4-8a91-3118e582103f.png)\r\n\r\n![screenshot007](https://cloud.githubusercontent.com/assets/3226626/7513478/b3d13e8e-f4b4-11e4-95d6-fefd913e7dac.png)\r\n\r\n![screenshot008](https://cloud.githubusercontent.com/assets/3226626/7513480/b6d6739c-f4b4-11e4-9abd-403336cc0059.png)\r\n\r\n* For weekday selection, a new dialog was implemented.\r\n\r\n![screenshot009](https://cloud.githubusercontent.com/assets/3226626/7513500/d4dc323c-f4b4-11e4-823c-bbc7751d96fb.png)\r\n\r\nContext menu actions:\r\n* All relevant context menu items are now displayed only if the corresponding functionality is available according to the timer type attributes. Example: Activate/deactivate timer\r\n* A (from my point of view very cool) new menu item \"Add advanced timer\" is now available if an epg entry was selected, for example in the epg grid. This opens a timer settings dialog preset to create a an epg-based series recording based on the data of the selected epg entry.\r\n\r\n![screenshot012](https://cloud.githubusercontent.com/assets/3226626/7513568/80ba8e5a-f4b5-11e4-9efd-90d1373fb65d.png)\r\n\r\n![screenshot013](https://cloud.githubusercontent.com/assets/3226626/7513572/87536b24-f4b5-11e4-890c-33d8d15af1d3.png)\r\n\r\nNote: All this is implemented and tested against a real PVR addon (pvr.hts), not \"just\" pvr.demo. I consider pvr.hts as the reference implementation of this (larger) PVR addon API change. Code is currently here (https://github.com/ksooo/pvr.hts/tree/series-recording-support), PR will follow soon.\r\n\r\nFeedback is much appreciated!","created_at":"2015-05-07T10:41:05Z","updated_at":"2015-07-04T07:38:10Z","closed_at":"2015-07-03T15:38:57Z","merged_at":"2015-07-03T15:38:57Z","merge_commit_sha":"3833fcbf77d56a151e1df04eea17ce34370f95f2","assignee":null,"milestone":{"url":"https://api.github.com/repos/xbmc/xbmc/milestones/64","html_url":"https://github.com/xbmc/xbmc/milestones/Isengard%2016.0-alpha1","labels_url":"https://api.github.com/repos/xbmc/xbmc/milestones/64/labels","id":1184180,"number":64,"title":"Isengard 16.0-alpha1","description":"","creator":{"login":"MartijnKaijser","id":907436,"avatar_url":"https://avatars.githubusercontent.com/u/907436?v=3","gravatar_id":"","url":"https://api.github.com/users/MartijnKaijser","html_url":"https://github.com/MartijnKaijser","followers_url":"https://api.github.com/users/MartijnKaijser/followers","following_url":"https://api.github.com/users/MartijnKaijser/following{/other_user}","gists_url":"https://api.github.com/users/MartijnKaijser/gists{/gist_id}","starred_url":"https://api.github.com/users/MartijnKaijser/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MartijnKaijser/subscriptions","organizations_url":"https://api.github.com/users/MartijnKaijser/orgs","repos_url":"https://api.github.com/users/MartijnKaijser/repos","events_url":"https://api.github.com/users/MartijnKaijser/events{/privacy}","received_events_url":"https://api.github.com/users/MartijnKaijser/received_events","type":"User","site_admin":false},"open_issues":8,"closed_issues":15,"state":"open","created_at":"2015-06-28T11:45:15Z","updated_at":"2015-07-04T07:29:48Z","due_on":"2015-07-30T22:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/xbmc/xbmc/pulls/7079/commits","review_comments_url":"https://api.github.com/repos/xbmc/xbmc/pulls/7079/comments","review_comment_url":"https://api.github.com/repos/xbmc/xbmc/pulls/comments{/number}","comments_url":"https://api.github.com/repos/xbmc/xbmc/issues/7079/comments","statuses_url":"https://api.github.com/repos/xbmc/xbmc/statuses/d05ac04edc08f5fd6ad14fc46c8434e6c96fb925","head":{"label":"ksooo:pvr-series-recordings","ref":"pvr-series-recordings","sha":"d05ac04edc08f5fd6ad14fc46c8434e6c96fb925","user":{"login":"ksooo","id":3226626,"avatar_url":"https://avatars.githubusercontent.com/u/3226626?v=3","gravatar_id":"","url":"https://api.github.com/users/ksooo","html_url":"https://github.com/ksooo","followers_url":"https://api.github.com/users/ksooo/followers","following_url":"https://api.github.com/users/ksooo/following{/other_user}","gists_url":"https://api.github.com/users/ksooo/gists{/gist_id}","starred_url":"https://api.github.com/users/ksooo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ksooo/subscriptions","organizations_url":"https://api.github.com/users/ksooo/orgs","repos_url":"https://api.github.com/users/ksooo/repos","events_url":"https://api.github.com/users/ksooo/events{/privacy}","received_events_url":"https://api.github.com/users/ksooo/received_events","type":"User","site_admin":false},"repo":{"id":17368872,"name":"xbmc","full_name":"ksooo/xbmc","owner":{"login":"ksooo","id":3226626,"avatar_url":"https://avatars.githubusercontent.com/u/3226626?v=3","gravatar_id":"","url":"https://api.github.com/users/ksooo","html_url":"https://github.com/ksooo","followers_url":"https://api.github.com/users/ksooo/followers","following_url":"https://api.github.com/users/ksooo/following{/other_user}","gists_url":"https://api.github.com/users/ksooo/gists{/gist_id}","starred_url":"https://api.github.com/users/ksooo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ksooo/subscriptions","organizations_url":"https://api.github.com/users/ksooo/orgs","repos_url":"https://api.github.com/users/ksooo/repos","events_url":"https://api.github.com/users/ksooo/events{/privacy}","received_events_url":"https://api.github.com/users/ksooo/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/ksooo/xbmc","description":"XBMC Main Repository","fork":true,"url":"https://api.github.com/repos/ksooo/xbmc","forks_url":"https://api.github.com/repos/ksooo/xbmc/forks","keys_url":"https://api.github.com/repos/ksooo/xbmc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ksooo/xbmc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ksooo/xbmc/teams","hooks_url":"https://api.github.com/repos/ksooo/xbmc/hooks","issue_events_url":"https://api.github.com/repos/ksooo/xbmc/issues/events{/number}","events_url":"https://api.github.com/repos/ksooo/xbmc/events","assignees_url":"https://api.github.com/repos/ksooo/xbmc/assignees{/user}","branches_url":"https://api.github.com/repos/ksooo/xbmc/branches{/branch}","tags_url":"https://api.github.com/repos/ksooo/xbmc/tags","blobs_url":"https://api.github.com/repos/ksooo/xbmc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ksooo/xbmc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ksooo/xbmc/git/refs{/sha}","trees_url":"https://api.github.com/repos/ksooo/xbmc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ksooo/xbmc/statuses/{sha}","languages_url":"https://api.github.com/repos/ksooo/xbmc/languages","stargazers_url":"https://api.github.com/repos/ksooo/xbmc/stargazers","contributors_url":"https://api.github.com/repos/ksooo/xbmc/contributors","subscribers_url":"https://api.github.com/repos/ksooo/xbmc/subscribers","subscription_url":"https://api.github.com/repos/ksooo/xbmc/subscription","commits_url":"https://api.github.com/repos/ksooo/xbmc/commits{/sha}","git_commits_url":"https://api.github.com/repos/ksooo/xbmc/git/commits{/sha}","comments_url":"https://api.github.com/repos/ksooo/xbmc/comments{/number}","issue_comment_url":"https://api.github.com/repos/ksooo/xbmc/issues/comments{/number}","contents_url":"https://api.github.com/repos/ksooo/xbmc/contents/{+path}","compare_url":"https://api.github.com/repos/ksooo/xbmc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ksooo/xbmc/merges","archive_url":"https://api.github.com/repos/ksooo/xbmc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ksooo/xbmc/downloads","issues_url":"https://api.github.com/repos/ksooo/xbmc/issues{/number}","pulls_url":"https://api.github.com/repos/ksooo/xbmc/pulls{/number}","milestones_url":"https://api.github.com/repos/ksooo/xbmc/milestones{/number}","notifications_url":"https://api.github.com/repos/ksooo/xbmc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ksooo/xbmc/labels{/name}","releases_url":"https://api.github.com/repos/ksooo/xbmc/releases{/id}","created_at":"2014-03-03T14:45:39Z","updated_at":"2015-05-04T07:20:01Z","pushed_at":"2015-07-03T21:49:18Z","git_url":"git://github.com/ksooo/xbmc.git","ssh_url":"git@github.com:ksooo/xbmc.git","clone_url":"https://github.com/ksooo/xbmc.git","svn_url":"https://github.com/ksooo/xbmc","homepage":"http://xbmc.org","size":512490,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":2,"mirror_url":null,"open_issues_count":1,"forks":2,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"xbmc:master","ref":"master","sha":"7d8fa88b2961e9698ab9392b85ea1dea982bd355","user":{"login":"xbmc","id":199122,"avatar_url":"https://avatars.githubusercontent.com/u/199122?v=3","gravatar_id":"","url":"https://api.github.com/users/xbmc","html_url":"https://github.com/xbmc","followers_url":"https://api.github.com/users/xbmc/followers","following_url":"https://api.github.com/users/xbmc/following{/other_user}","gists_url":"https://api.github.com/users/xbmc/gists{/gist_id}","starred_url":"https://api.github.com/users/xbmc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xbmc/subscriptions","organizations_url":"https://api.github.com/users/xbmc/orgs","repos_url":"https://api.github.com/users/xbmc/repos","events_url":"https://api.github.com/users/xbmc/events{/privacy}","received_events_url":"https://api.github.com/users/xbmc/received_events","type":"Organization","site_admin":false},"repo":{"id":1217614,"name":"xbmc","full_name":"xbmc/xbmc","owner":{"login":"xbmc","id":199122,"avatar_url":"https://avatars.githubusercontent.com/u/199122?v=3","gravatar_id":"","url":"https://api.github.com/users/xbmc","html_url":"https://github.com/xbmc","followers_url":"https://api.github.com/users/xbmc/followers","following_url":"https://api.github.com/users/xbmc/following{/other_user}","gists_url":"https://api.github.com/users/xbmc/gists{/gist_id}","starred_url":"https://api.github.com/users/xbmc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xbmc/subscriptions","organizations_url":"https://api.github.com/users/xbmc/orgs","repos_url":"https://api.github.com/users/xbmc/repos","events_url":"https://api.github.com/users/xbmc/events{/privacy}","received_events_url":"https://api.github.com/users/xbmc/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/xbmc/xbmc","description":"Kodi Main Repository - By using this code you agree with our policy and will follow the GPLv2 license as included","fork":false,"url":"https://api.github.com/repos/xbmc/xbmc","forks_url":"https://api.github.com/repos/xbmc/xbmc/forks","keys_url":"https://api.github.com/repos/xbmc/xbmc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/xbmc/xbmc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/xbmc/xbmc/teams","hooks_url":"https://api.github.com/repos/xbmc/xbmc/hooks","issue_events_url":"https://api.github.com/repos/xbmc/xbmc/issues/events{/number}","events_url":"https://api.github.com/repos/xbmc/xbmc/events","assignees_url":"https://api.github.com/repos/xbmc/xbmc/assignees{/user}","branches_url":"https://api.github.com/repos/xbmc/xbmc/branches{/branch}","tags_url":"https://api.github.com/repos/xbmc/xbmc/tags","blobs_url":"https://api.github.com/repos/xbmc/xbmc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/xbmc/xbmc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/xbmc/xbmc/git/refs{/sha}","trees_url":"https://api.github.com/repos/xbmc/xbmc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/xbmc/xbmc/statuses/{sha}","languages_url":"https://api.github.com/repos/xbmc/xbmc/languages","stargazers_url":"https://api.github.com/repos/xbmc/xbmc/stargazers","contributors_url":"https://api.github.com/repos/xbmc/xbmc/contributors","subscribers_url":"https://api.github.com/repos/xbmc/xbmc/subscribers","subscription_url":"https://api.github.com/repos/xbmc/xbmc/subscription","commits_url":"https://api.github.com/repos/xbmc/xbmc/commits{/sha}","git_commits_url":"https://api.github.com/repos/xbmc/xbmc/git/commits{/sha}","comments_url":"https://api.github.com/repos/xbmc/xbmc/comments{/number}","issue_comment_url":"https://api.github.com/repos/xbmc/xbmc/issues/comments{/number}","contents_url":"https://api.github.com/repos/xbmc/xbmc/contents/{+path}","compare_url":"https://api.github.com/repos/xbmc/xbmc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/xbmc/xbmc/merges","archive_url":"https://api.github.com/repos/xbmc/xbmc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/xbmc/xbmc/downloads","issues_url":"https://api.github.com/repos/xbmc/xbmc/issues{/number}","pulls_url":"https://api.github.com/repos/xbmc/xbmc/pulls{/number}","milestones_url":"https://api.github.com/repos/xbmc/xbmc/milestones{/number}","notifications_url":"https://api.github.com/repos/xbmc/xbmc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/xbmc/xbmc/labels{/name}","releases_url":"https://api.github.com/repos/xbmc/xbmc/releases{/id}","created_at":"2011-01-03T21:18:51Z","updated_at":"2015-07-03T09:31:22Z","pushed_at":"2015-07-04T07:28:10Z","git_url":"git://github.com/xbmc/xbmc.git","ssh_url":"git@github.com:xbmc/xbmc.git","clone_url":"https://github.com/xbmc/xbmc.git","svn_url":"https://github.com/xbmc/xbmc","homepage":"http://kodi.wiki/view/Official:Trademark_Policy","size":1856774,"stargazers_count":3980,"watchers_count":3980,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":2905,"mirror_url":null,"open_issues_count":255,"forks":2905,"open_issues":255,"watchers":3980,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/xbmc/xbmc/pulls/7079"},"html":{"href":"https://github.com/xbmc/xbmc/pull/7079"},"issue":{"href":"https://api.github.com/repos/xbmc/xbmc/issues/7079"},"comments":{"href":"https://api.github.com/repos/xbmc/xbmc/issues/7079/comments"},"review_comments":{"href":"https://api.github.com/repos/xbmc/xbmc/pulls/7079/comments"},"review_comment":{"href":"https://api.github.com/repos/xbmc/xbmc/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/xbmc/xbmc/pulls/7079/commits"},"statuses":{"href":"https://api.github.com/repos/xbmc/xbmc/statuses/d05ac04edc08f5fd6ad14fc46c8434e6c96fb925"}}}}