diff --git a/.appveyor.yml b/.appveyor.yml
index 1b0ededc39d28768d8e133d46fbc3ad0ee3e4a26..4c3367d0504037473cc3fae1438d0d5b28d71d9f 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -25,7 +25,6 @@ build: off
 deploy: off
 version: "{build}"
 skip_branch_with_pr: true
-shallow_clone: true
 skip_tags: true
 max_jobs: 4
 clone_depth: 4
diff --git a/.codecov.yml b/.codecov.yml
new file mode 100644
index 0000000000000000000000000000000000000000..a041559f10cbd02fb7619dc267c3cc5b858c3794
--- /dev/null
+++ b/.codecov.yml
@@ -0,0 +1,83 @@
+codecov:
+  notify:                   # [advanced] usage only
+    require_ci_to_pass: yes # require the build to pass before submitting notifications
+    after_n_builds: 1       # how many build to wait for before submitting notifications, therefore skipping status checks
+    countdown: 60           # number of seconds to wait before checking CI status
+    delay: 120               # number of seconds between each CI status check
+
+coverage:
+  precision: 3         # how many decimal places to display in the UI: 0 <= value <= 4
+  round: down          # how coverage is rounded: down/up/nearest
+  range: "50...75"     # custom range of coverage colors from red -> yellow -> green
+
+#  notify:
+#    irc:
+#      default:                        # -> see "sections" below
+#        server: "chat.freenode.net"   #*S the domain of the irc server
+#        branches: null                # -> see https://github.com/codecov/support/wiki/Filtering-Branches
+#        threshold: null               # -> see "threshold" below
+#        message: "template string"    # [advanced] -> see "customized message" below
+
+  status:
+    project:                   # measuring the overall project coverage
+      default:                 # context, you can create multiple ones with custom titles
+        enabled: yes           # must be yes|true to enable this status
+        target: auto           # specify the target coverage for each commit status
+                               #   option: "auto" (must increase from parent commit or pull request base)
+                               #   option: "X%" a static target percentage to hit
+        branches: null         # -> see https://github.com/codecov/support/wiki/Filtering-Branches
+        threshold: 0.1         # allowed to drop X% and still result in a "success" commit status
+        base: auto             # ?
+        if_no_uploads: error   # will post commit status of "error" if no coverage reports we uploaded
+                               # options: success, error, failure
+        if_not_found: success  # if parent is not found report status as success, error, or failure
+        if_ci_failed: error    # if ci fails report status as success, error, or failure
+        only_pulls: false      # ?
+        flags: null            # https://docs.codecov.io/docs/flags
+        paths: null            # ?
+
+    patch:                     # pull requests only: this commit status will measure the
+                               # entire pull requests Coverage Diff. Checking if the lines
+                               # adjusted are covered at least X%.
+      default:
+        enabled: yes             # must be yes|true to enable this status
+        target: 80%              # specify the target "X%" coverage to hit
+        branches: null           # -> see https://github.com/codecov/support/wiki/Filtering-Branches
+        threshold: 0.1           # allowed to drop X% and still result in a "success" commit status
+        if_no_uploads: error     # will post commit status of "error" if no coverage reports we uploaded
+                                 # options: success, error, failure
+        if_not_found: success
+        if_ci_failed: error
+
+    changes:                   # if there are any unexpected changes in coverage
+      default:
+        enabled: no              # must be yes|true to enable this status
+        branches: null           # -> see https://github.com/codecov/support/wiki/Filtering-Branches
+        if_no_uploads: error
+        if_not_found: success
+        if_ci_failed: error
+
+#  ignore:          # files and folders that will be removed during processing
+#    - "tests/*"
+#    - "demo/*.rb"
+
+#  fixes:           # [advanced] in rare cases the report tree is invalid, specify adjustments here
+#    - "old_path::new_path"
+
+parsers:
+  gcov:
+    branch_detection:
+      conditional: yes
+      loop: yes
+      method: no
+      macro: no
+
+comment:                 # comment: false  # to disable comments
+  layout: "header, diff, changes, sunburst, suggestions, tree"
+  branches: null           # -> see https://github.com/codecov/support/wiki/Filtering-Branches
+  behavior: default        # option: "default" posts once then update, posts new if delete
+                           # option: "once"    post once then updates, if deleted do not post new
+                           # option: "new"     delete old, post new
+                           # option: "spammy"  post new
+#  require_base: no        # [yes :: must have a base report to post]
+#  require_head: yes       # [yes :: must have a head report to post]
diff --git a/readme.md b/readme.md
index 6dffd6ff86a3a51e19be80d8c121e4dd74dd25f5..2982519d3ee298eff15bc66c90c1e2b6047f4407 100644
--- a/readme.md
+++ b/readme.md
@@ -1,4 +1,4 @@
-SickRage [![Build Status](https://travis-ci.org/SickRage/SickRage.svg?branch=master)](https://travis-ci.org/SickRage/SickRage) [![Build status](https://ci.appveyor.com/api/projects/status/s8bb0iqroecnhya2/branch/master?svg=true)](https://ci.appveyor.com/project/miigotu/sickrage/branch/master) [![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/SickRage/SickRage.svg)](http://isitmaintained.com/project/SickRage/SickRage "Average time to resolve an issue") [![Percentage of issues still open](http://isitmaintained.com/badge/open/SickRage/SickRage.svg)](http://isitmaintained.com/project/SickRage/SickRage "Percentage of issues still open") [![Coverage Status](https://coveralls.io/repos/SickRage/SickRage/badge.svg?branch=master&service=github)](https://coveralls.io/github/SickRage/SickRage?branch=master)
+SickRage [![Build Status](https://travis-ci.org/SickRage/SickRage.svg?branch=master)](https://travis-ci.org/SickRage/SickRage) [![Build status](https://ci.appveyor.com/api/projects/status/s8bb0iqroecnhya2/branch/master?svg=true)](https://ci.appveyor.com/project/miigotu/sickrage/branch/master) [![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/SickRage/SickRage.svg)](http://isitmaintained.com/project/SickRage/SickRage "Average time to resolve an issue") [![Percentage of issues still open](http://isitmaintained.com/badge/open/SickRage/SickRage.svg)](http://isitmaintained.com/project/SickRage/SickRage "Percentage of issues still open") [![Coverage Status](https://codecov.io/gh/SickRage/SickRage/branch/master/graph/badge.svg)](https://codecov.io/gh/SickRage/SickRage)
 ====================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
 Automatic Video Library Manager for TV Shows. It watches for new episodes of your favorite shows, and when they are posted it does its magic.
 
diff --git a/tox.ini b/tox.ini
index 0a4ed4e1da7c77fec3f38443414cb1336190855b..ee746cc6f3f859e03b9c3789d261236e836763e8 100644
--- a/tox.ini
+++ b/tox.ini
@@ -6,9 +6,9 @@ envlist = py27-{windows,linux}
 platform = linux
 whitelist_externals = /bin/rm
 envdir = {toxworkdir}/tox
-passenv = TRAVIS TRAVIS_JOB_ID TRAVIS_BRANCH
+passenv = TOXENV CI TRAVIS TRAVIS_*
 deps =
-    coveralls
+    codecov
     nose
     rednose
     mock
@@ -19,13 +19,15 @@ commands =
     /bin/rm -f {toxinidir}/tests/cache.db
     /bin/rm -f {toxinidir}/tests/failed.db
     nosetests -c nose.cfg --nocapture
-    - coveralls
+    - codecov -e TOXENV
 
 [testenv:py27-windows]
 platform = win
 whitelist_externals = {env:SYSTEMROOT:C:\Windows\}\System32\cmd.exe
 envdir = {toxworkdir}/tox
+passenv = TOXENV CI APPVEYOR APPVEYOR_*
 deps =
+    codecov
     nose
     rednose
     mock
@@ -34,3 +36,4 @@ deps =
 commands =
     cmd /c del /f /q {toxinidir}\tests\sickbeard.db {toxinidir}\tests\cache.db {toxinidir}\tests\failed.db 2> nul
     nosetests -c nose.cfg --nocapture
+    - codecov -e TOXENV