{"action":"created","comment":{"url":"https://api.github.com/repos/pymedusa/SickRage/pulls/comments/62415466","id":62415466,"diff_hunk":"@@ -214,10 +215,22 @@ def _getProperList(self):  # pylint: disable=too-many-locals, too-many-branches,\n             # only keep the proper if we have already retrieved the same quality ep (don't get better/worse ones)\n             oldStatus, oldQuality = Quality.splitCompositeStatus(int(sql_results[0]['status']))\n             if oldStatus not in (DOWNLOADED, SNATCHED) or oldQuality != bestResult.quality:\n-                logger.log(u\"Ignoring proper already snatched or downloaded: {name}\".format\n+                logger.log(u\"Ignoring proper because quality is different or episode is already archived: {name}\".format\n                            (name=bestResult.name))\n                 continue\n \n+            # check if we already snatched that PROPER\n+            main_db_con = db.DBConnection()\n+            sql_results = main_db_con.select(\"SELECT resource FROM history WHERE (action LIKE '%2' OR action LIKE '%9') \\\n+                                                AND showid = ? AND season = ? AND episode = ?\",\n+                                                [bestResult.indexerid, bestResult.season, bestResult.episode])\n+            if sql_results:\n+                new_proper = remove_strings(remove_non_release_groups(bestResult.name), ['.mkv','.avi','.mp4'])\n+                if any(result for result in sql_results if result['resource'] \n+                        and remove_strings(remove_non_release_groups(str(result['resource'])), ['.mkv','.avi','.mp4']) == new_proper):","path":"sickbeard/properFinder.py","position":null,"original_position":34,"commit_id":"3cc4bd8e1cfd3ea8894b938255a5443e95de93ae","original_commit_id":"64bedc73482fc3fdfbb97ba78c0c4f5826cba25c","user":{"login":"p0psicles","id":1331394,"avatar_url":"https://avatars.githubusercontent.com/u/1331394?v=3","gravatar_id":"","url":"https://api.github.com/users/p0psicles","html_url":"https://github.com/p0psicles","followers_url":"https://api.github.com/users/p0psicles/followers","following_url":"https://api.github.com/users/p0psicles/following{/other_user}","gists_url":"https://api.github.com/users/p0psicles/gists{/gist_id}","starred_url":"https://api.github.com/users/p0psicles/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/p0psicles/subscriptions","organizations_url":"https://api.github.com/users/p0psicles/orgs","repos_url":"https://api.github.com/users/p0psicles/repos","events_url":"https://api.github.com/users/p0psicles/events{/privacy}","received_events_url":"https://api.github.com/users/p0psicles/received_events","type":"User","site_admin":false},"body":"Yeah but id rather have like one function that can be Used. For ex call it sanitize_proper() or class ProperParser(). That can be Used System wide. Now you have the risk that here you doe the release goup check, and extention removal. But if you need the same in other parts, it's really Easy to make mistakes.  Also I havent worked with it myself, but couldnt we use guessit for Stuff like this? @Labrys opinion?","created_at":"2016-05-07T11:28:03Z","updated_at":"2016-05-07T11:28:03Z","html_url":"https://github.com/pymedusa/SickRage/pull/528#discussion_r62415466","pull_request_url":"https://api.github.com/repos/pymedusa/SickRage/pulls/528","_links":{"self":{"href":"https://api.github.com/repos/pymedusa/SickRage/pulls/comments/62415466"},"html":{"href":"https://github.com/pymedusa/SickRage/pull/528#discussion_r62415466"},"pull_request":{"href":"https://api.github.com/repos/pymedusa/SickRage/pulls/528"}}},"pull_request":{"url":"https://api.github.com/repos/pymedusa/SickRage/pulls/528","id":68751453,"html_url":"https://github.com/pymedusa/SickRage/pull/528","diff_url":"https://github.com/pymedusa/SickRage/pull/528.diff","patch_url":"https://github.com/pymedusa/SickRage/pull/528.patch","issue_url":"https://api.github.com/repos/pymedusa/SickRage/issues/528","number":528,"state":"open","locked":false,"title":"Fix snatch same proper over and over","user":{"login":"fernandog","id":2620870,"avatar_url":"https://avatars.githubusercontent.com/u/2620870?v=3","gravatar_id":"","url":"https://api.github.com/users/fernandog","html_url":"https://github.com/fernandog","followers_url":"https://api.github.com/users/fernandog/followers","following_url":"https://api.github.com/users/fernandog/following{/other_user}","gists_url":"https://api.github.com/users/fernandog/gists{/gist_id}","starred_url":"https://api.github.com/users/fernandog/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fernandog/subscriptions","organizations_url":"https://api.github.com/users/fernandog/orgs","repos_url":"https://api.github.com/users/fernandog/repos","events_url":"https://api.github.com/users/fernandog/events{/privacy}","received_events_url":"https://api.github.com/users/fernandog/received_events","type":"User","site_admin":false},"body":"Check if new found proper is in the history database to make sure we didn't previously snatched it\r\nThis fix was tested in `pubdate2` branch\r\n\r\n@duramato @p0psicles \r\n\r\nfor now log message is a WARNING to detect duplicate PROPERs easyly","created_at":"2016-05-03T18:23:06Z","updated_at":"2016-05-07T11:28:03Z","closed_at":null,"merged_at":null,"merge_commit_sha":"0e4f56f6386257acff50c1af5a58d17f3ec135b0","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/pymedusa/SickRage/pulls/528/commits","review_comments_url":"https://api.github.com/repos/pymedusa/SickRage/pulls/528/comments","review_comment_url":"https://api.github.com/repos/pymedusa/SickRage/pulls/comments{/number}","comments_url":"https://api.github.com/repos/pymedusa/SickRage/issues/528/comments","statuses_url":"https://api.github.com/repos/pymedusa/SickRage/statuses/3cc4bd8e1cfd3ea8894b938255a5443e95de93ae","head":{"label":"pymedusa:multi_proper","ref":"multi_proper","sha":"3cc4bd8e1cfd3ea8894b938255a5443e95de93ae","user":{"login":"pymedusa","id":16712498,"avatar_url":"https://avatars.githubusercontent.com/u/16712498?v=3","gravatar_id":"","url":"https://api.github.com/users/pymedusa","html_url":"https://github.com/pymedusa","followers_url":"https://api.github.com/users/pymedusa/followers","following_url":"https://api.github.com/users/pymedusa/following{/other_user}","gists_url":"https://api.github.com/users/pymedusa/gists{/gist_id}","starred_url":"https://api.github.com/users/pymedusa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pymedusa/subscriptions","organizations_url":"https://api.github.com/users/pymedusa/orgs","repos_url":"https://api.github.com/users/pymedusa/repos","events_url":"https://api.github.com/users/pymedusa/events{/privacy}","received_events_url":"https://api.github.com/users/pymedusa/received_events","type":"Organization","site_admin":false},"repo":{"id":52334681,"name":"SickRage","full_name":"pymedusa/SickRage","owner":{"login":"pymedusa","id":16712498,"avatar_url":"https://avatars.githubusercontent.com/u/16712498?v=3","gravatar_id":"","url":"https://api.github.com/users/pymedusa","html_url":"https://github.com/pymedusa","followers_url":"https://api.github.com/users/pymedusa/followers","following_url":"https://api.github.com/users/pymedusa/following{/other_user}","gists_url":"https://api.github.com/users/pymedusa/gists{/gist_id}","starred_url":"https://api.github.com/users/pymedusa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pymedusa/subscriptions","organizations_url":"https://api.github.com/users/pymedusa/orgs","repos_url":"https://api.github.com/users/pymedusa/repos","events_url":"https://api.github.com/users/pymedusa/events{/privacy}","received_events_url":"https://api.github.com/users/pymedusa/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/pymedusa/SickRage","description":"Now with the most wanted feature: **Manual Search**. You can choose what to download! IRC: #pymedusa","fork":false,"url":"https://api.github.com/repos/pymedusa/SickRage","forks_url":"https://api.github.com/repos/pymedusa/SickRage/forks","keys_url":"https://api.github.com/repos/pymedusa/SickRage/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pymedusa/SickRage/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pymedusa/SickRage/teams","hooks_url":"https://api.github.com/repos/pymedusa/SickRage/hooks","issue_events_url":"https://api.github.com/repos/pymedusa/SickRage/issues/events{/number}","events_url":"https://api.github.com/repos/pymedusa/SickRage/events","assignees_url":"https://api.github.com/repos/pymedusa/SickRage/assignees{/user}","branches_url":"https://api.github.com/repos/pymedusa/SickRage/branches{/branch}","tags_url":"https://api.github.com/repos/pymedusa/SickRage/tags","blobs_url":"https://api.github.com/repos/pymedusa/SickRage/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pymedusa/SickRage/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pymedusa/SickRage/git/refs{/sha}","trees_url":"https://api.github.com/repos/pymedusa/SickRage/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pymedusa/SickRage/statuses/{sha}","languages_url":"https://api.github.com/repos/pymedusa/SickRage/languages","stargazers_url":"https://api.github.com/repos/pymedusa/SickRage/stargazers","contributors_url":"https://api.github.com/repos/pymedusa/SickRage/contributors","subscribers_url":"https://api.github.com/repos/pymedusa/SickRage/subscribers","subscription_url":"https://api.github.com/repos/pymedusa/SickRage/subscription","commits_url":"https://api.github.com/repos/pymedusa/SickRage/commits{/sha}","git_commits_url":"https://api.github.com/repos/pymedusa/SickRage/git/commits{/sha}","comments_url":"https://api.github.com/repos/pymedusa/SickRage/comments{/number}","issue_comment_url":"https://api.github.com/repos/pymedusa/SickRage/issues/comments{/number}","contents_url":"https://api.github.com/repos/pymedusa/SickRage/contents/{+path}","compare_url":"https://api.github.com/repos/pymedusa/SickRage/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pymedusa/SickRage/merges","archive_url":"https://api.github.com/repos/pymedusa/SickRage/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pymedusa/SickRage/downloads","issues_url":"https://api.github.com/repos/pymedusa/SickRage/issues{/number}","pulls_url":"https://api.github.com/repos/pymedusa/SickRage/pulls{/number}","milestones_url":"https://api.github.com/repos/pymedusa/SickRage/milestones{/number}","notifications_url":"https://api.github.com/repos/pymedusa/SickRage/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pymedusa/SickRage/labels{/name}","releases_url":"https://api.github.com/repos/pymedusa/SickRage/releases{/id}","deployments_url":"https://api.github.com/repos/pymedusa/SickRage/deployments","created_at":"2016-02-23T06:02:11Z","updated_at":"2016-05-05T07:07:05Z","pushed_at":"2016-05-07T10:27:08Z","git_url":"git://github.com/pymedusa/SickRage.git","ssh_url":"git@github.com:pymedusa/SickRage.git","clone_url":"https://github.com/pymedusa/SickRage.git","svn_url":"https://github.com/pymedusa/SickRage","homepage":"","size":54688,"stargazers_count":9,"watchers_count":9,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":6,"mirror_url":null,"open_issues_count":75,"forks":6,"open_issues":75,"watchers":9,"default_branch":"master"}},"base":{"label":"pymedusa:develop","ref":"develop","sha":"1b76dbcfe8dd66e7f8cab088b2b4dfb8ecc1a7d3","user":{"login":"pymedusa","id":16712498,"avatar_url":"https://avatars.githubusercontent.com/u/16712498?v=3","gravatar_id":"","url":"https://api.github.com/users/pymedusa","html_url":"https://github.com/pymedusa","followers_url":"https://api.github.com/users/pymedusa/followers","following_url":"https://api.github.com/users/pymedusa/following{/other_user}","gists_url":"https://api.github.com/users/pymedusa/gists{/gist_id}","starred_url":"https://api.github.com/users/pymedusa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pymedusa/subscriptions","organizations_url":"https://api.github.com/users/pymedusa/orgs","repos_url":"https://api.github.com/users/pymedusa/repos","events_url":"https://api.github.com/users/pymedusa/events{/privacy}","received_events_url":"https://api.github.com/users/pymedusa/received_events","type":"Organization","site_admin":false},"repo":{"id":52334681,"name":"SickRage","full_name":"pymedusa/SickRage","owner":{"login":"pymedusa","id":16712498,"avatar_url":"https://avatars.githubusercontent.com/u/16712498?v=3","gravatar_id":"","url":"https://api.github.com/users/pymedusa","html_url":"https://github.com/pymedusa","followers_url":"https://api.github.com/users/pymedusa/followers","following_url":"https://api.github.com/users/pymedusa/following{/other_user}","gists_url":"https://api.github.com/users/pymedusa/gists{/gist_id}","starred_url":"https://api.github.com/users/pymedusa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pymedusa/subscriptions","organizations_url":"https://api.github.com/users/pymedusa/orgs","repos_url":"https://api.github.com/users/pymedusa/repos","events_url":"https://api.github.com/users/pymedusa/events{/privacy}","received_events_url":"https://api.github.com/users/pymedusa/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/pymedusa/SickRage","description":"Now with the most wanted feature: **Manual Search**. You can choose what to download! IRC: #pymedusa","fork":false,"url":"https://api.github.com/repos/pymedusa/SickRage","forks_url":"https://api.github.com/repos/pymedusa/SickRage/forks","keys_url":"https://api.github.com/repos/pymedusa/SickRage/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pymedusa/SickRage/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pymedusa/SickRage/teams","hooks_url":"https://api.github.com/repos/pymedusa/SickRage/hooks","issue_events_url":"https://api.github.com/repos/pymedusa/SickRage/issues/events{/number}","events_url":"https://api.github.com/repos/pymedusa/SickRage/events","assignees_url":"https://api.github.com/repos/pymedusa/SickRage/assignees{/user}","branches_url":"https://api.github.com/repos/pymedusa/SickRage/branches{/branch}","tags_url":"https://api.github.com/repos/pymedusa/SickRage/tags","blobs_url":"https://api.github.com/repos/pymedusa/SickRage/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pymedusa/SickRage/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pymedusa/SickRage/git/refs{/sha}","trees_url":"https://api.github.com/repos/pymedusa/SickRage/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pymedusa/SickRage/statuses/{sha}","languages_url":"https://api.github.com/repos/pymedusa/SickRage/languages","stargazers_url":"https://api.github.com/repos/pymedusa/SickRage/stargazers","contributors_url":"https://api.github.com/repos/pymedusa/SickRage/contributors","subscribers_url":"https://api.github.com/repos/pymedusa/SickRage/subscribers","subscription_url":"https://api.github.com/repos/pymedusa/SickRage/subscription","commits_url":"https://api.github.com/repos/pymedusa/SickRage/commits{/sha}","git_commits_url":"https://api.github.com/repos/pymedusa/SickRage/git/commits{/sha}","comments_url":"https://api.github.com/repos/pymedusa/SickRage/comments{/number}","issue_comment_url":"https://api.github.com/repos/pymedusa/SickRage/issues/comments{/number}","contents_url":"https://api.github.com/repos/pymedusa/SickRage/contents/{+path}","compare_url":"https://api.github.com/repos/pymedusa/SickRage/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pymedusa/SickRage/merges","archive_url":"https://api.github.com/repos/pymedusa/SickRage/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pymedusa/SickRage/downloads","issues_url":"https://api.github.com/repos/pymedusa/SickRage/issues{/number}","pulls_url":"https://api.github.com/repos/pymedusa/SickRage/pulls{/number}","milestones_url":"https://api.github.com/repos/pymedusa/SickRage/milestones{/number}","notifications_url":"https://api.github.com/repos/pymedusa/SickRage/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pymedusa/SickRage/labels{/name}","releases_url":"https://api.github.com/repos/pymedusa/SickRage/releases{/id}","deployments_url":"https://api.github.com/repos/pymedusa/SickRage/deployments","created_at":"2016-02-23T06:02:11Z","updated_at":"2016-05-05T07:07:05Z","pushed_at":"2016-05-07T10:27:08Z","git_url":"git://github.com/pymedusa/SickRage.git","ssh_url":"git@github.com:pymedusa/SickRage.git","clone_url":"https://github.com/pymedusa/SickRage.git","svn_url":"https://github.com/pymedusa/SickRage","homepage":"","size":54688,"stargazers_count":9,"watchers_count":9,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":6,"mirror_url":null,"open_issues_count":75,"forks":6,"open_issues":75,"watchers":9,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/pymedusa/SickRage/pulls/528"},"html":{"href":"https://github.com/pymedusa/SickRage/pull/528"},"issue":{"href":"https://api.github.com/repos/pymedusa/SickRage/issues/528"},"comments":{"href":"https://api.github.com/repos/pymedusa/SickRage/issues/528/comments"},"review_comments":{"href":"https://api.github.com/repos/pymedusa/SickRage/pulls/528/comments"},"review_comment":{"href":"https://api.github.com/repos/pymedusa/SickRage/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/pymedusa/SickRage/pulls/528/commits"},"statuses":{"href":"https://api.github.com/repos/pymedusa/SickRage/statuses/3cc4bd8e1cfd3ea8894b938255a5443e95de93ae"}}}}