coveralls: 
[![Coverage Status](https://coveralls.io/builds/10544411/badge)](https://coveralls.io/builds/10544411)

Coverage remained the same at 96.547% when pulling **a138f1ea040fec310dbb8629f57194a7ed97ce7b on media_kinds** into **8937e869c3ce7d86edad5d2c88d2139fe57c3127 on master**.

diff --git a/pyatv/convert.py b/pyatv/convert.py
index 98c7e77e..0843f19b 100644
--- a/pyatv/convert.py
+++ b/pyatv/convert.py
@@ -7,11 +7,11 @@ def media_kind(kind):
     """Convert iTunes media kind to API representation."""
     if kind in [1]:
         return const.MEDIA_TYPE_UNKNOWN
-    elif kind in [3, 7, 11, 12, 13, 18]:
+    elif kind in [3, 7, 11, 12, 13, 18, 32]:
         return const.MEDIA_TYPE_VIDEO
-    elif kind in [2, 4, 10, 14, 17, 21]:
+    elif kind in [2, 4, 10, 14, 17, 21, 36]:
         return const.MEDIA_TYPE_MUSIC
-    elif kind in [8]:
+    elif kind in [8, 64]:
         return const.MEDIA_TYPE_TV
 
     raise exceptions.UnknownMediaKind('Unknown media kind: ' + str(kind))

Unknown media kind TV show
The media kind "TV Show" is not recognized correctly.
pyatv.exceptions.UnknownMediaKind: Unknown media kind: 64
diff --git a/tests/test_convert.py b/tests/test_convert.py
index 99d8bdd3..77dfab2e 100644
--- a/tests/test_convert.py
+++ b/tests/test_convert.py
@@ -6,6 +6,8 @@ from pyatv import (const, convert, exceptions)
 
 # These are extracted from iTunes, see for instance:
 # http://www.blooming.no/wp-content/uploads/2013/03/ITLibMediaItem.h
+# and also this:
+# https://github.com/melloware/dacp-net/blob/master/Melloware.DACP/DACPResponse.cs
 # Key: cmst.cmmk
 MEDIA_KIND_UNKNOWN = 1
 MEDIA_KIND_SONG = 2
@@ -28,7 +30,9 @@ MEDIA_KIND_ITUNESU = 18
 MEDIA_KIND_BOOK = 19
 MEDIA_KIND_PDFBOOK = 20
 MEDIA_KIND_ALERTTONE = 21
-
+MEDIA_KIND_MUSICVIDEO2 = 32
+MEDIA_KIND_PODCAST2 = 36
+MEDIA_KIND_TVSHOW2 = 64
 
 # Found on various places on the Internet as well as by testing
 # Key: cmst.caps
@@ -52,6 +56,8 @@ class ConvertTest(unittest.TestCase):
                          convert.media_kind(MEDIA_KIND_MOVIE))
         self.assertEqual(const.MEDIA_TYPE_VIDEO,
                          convert.media_kind(MEDIA_KIND_MUSICVIDEO))
+        self.assertEqual(const.MEDIA_TYPE_VIDEO,
+                         convert.media_kind(MEDIA_KIND_MUSICVIDEO2))
         self.assertEqual(const.MEDIA_TYPE_VIDEO,
                          convert.media_kind(MEDIA_KIND_VIDEOPASS))
         self.assertEqual(const.MEDIA_TYPE_VIDEO,
@@ -66,6 +72,8 @@ class ConvertTest(unittest.TestCase):
                          convert.media_kind(MEDIA_KIND_SONG))
         self.assertEqual(const.MEDIA_TYPE_MUSIC,
                          convert.media_kind(MEDIA_KIND_PODCAST))
+        self.assertEqual(const.MEDIA_TYPE_MUSIC,
+                         convert.media_kind(MEDIA_KIND_PODCAST2))
         self.assertEqual(const.MEDIA_TYPE_MUSIC,
                          convert.media_kind(MEDIA_KIND_COACHEDAUDIO))
         self.assertEqual(const.MEDIA_TYPE_MUSIC,
@@ -78,6 +86,8 @@ class ConvertTest(unittest.TestCase):
     def test_tv_kinds(self):
         self.assertEqual(const.MEDIA_TYPE_TV,
                          convert.media_kind(MEDIA_KIND_TVSHOW))
+        self.assertEqual(const.MEDIA_TYPE_TV,
+                         convert.media_kind(MEDIA_KIND_TVSHOW2))
 
     def test_unknown_media_kind_throws(self):
         with self.assertRaises(exceptions.UnknownMediaKind):

pip install -e .
parse_log_pytest
requirements.txt
pytest pytest-cov pytest-aiohttp
apt-get update apt-get install -y virtualenv python3-dev
3.5
requirements_test.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
aiohttp==3.7.4.post0
alabaster==0.7.13
astroid==2.11.7
async-timeout==3.0.1
asynctest==0.9.0
attrs==22.2.0
Babel==2.11.0
certifi==2021.5.30
chardet==4.0.0
charset-normalizer==2.0.12
coverage==6.2
coveralls==3.3.1
dill==0.3.4
docopt==0.6.2
docutils==0.18.1
flake8==5.0.4
idna==3.10
idna-ssl==1.1.0
ifaddr==0.2.0
imagesize==1.4.1
importlib-metadata==4.2.0
iniconfig==1.1.1
isort==5.10.1
Jinja2==3.0.3
lazy-object-proxy==1.7.1
MarkupSafe==2.0.1
mccabe==0.7.0
multidict==5.2.0
mypy-lang==0.5.0
packaging==21.3
platformdirs==2.4.0
pluggy==1.0.0
py==1.11.0
-e git+https://github.com/postlund/pyatv.git@8937e869c3ce7d86edad5d2c88d2139fe57c3127#egg=pyatv
pycodestyle==2.9.1
pydocstyle==6.3.0
pyflakes==2.5.0
Pygments==2.14.0
pylint==2.13.9
pyparsing==3.1.4
pytest==7.0.1
pytest-aiohttp==0.1.3
pytest-cov==4.0.0
pytest-timeout==2.1.0
pytz==2025.2
requests==2.27.1
six==1.17.0
snowballstemmer==2.2.0
Sphinx==1.5.1
tomli==1.2.3
typed-ast==1.5.5
typing_extensions==4.1.1
urllib3==1.26.20
wrapt==1.16.0
yarl==1.7.2
zeroconf==0.38.4
zipp==3.6.0

name: pyatv
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=21.2.2=py36h06a4308_0
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - aiohttp==3.7.4.post0
      - alabaster==0.7.13
      - astroid==2.11.7
      - async-timeout==3.0.1
      - asynctest==0.9.0
      - attrs==22.2.0
      - babel==2.11.0
      - chardet==4.0.0
      - charset-normalizer==2.0.12
      - coverage==6.2
      - coveralls==3.3.1
      - dill==0.3.4
      - docopt==0.6.2
      - docutils==0.18.1
      - flake8==5.0.4
      - idna==3.10
      - idna-ssl==1.1.0
      - ifaddr==0.2.0
      - imagesize==1.4.1
      - importlib-metadata==4.2.0
      - iniconfig==1.1.1
      - isort==5.10.1
      - jinja2==3.0.3
      - lazy-object-proxy==1.7.1
      - markupsafe==2.0.1
      - mccabe==0.7.0
      - multidict==5.2.0
      - mypy-lang==0.5.0
      - packaging==21.3
      - platformdirs==2.4.0
      - pluggy==1.0.0
      - py==1.11.0
      - pycodestyle==2.9.1
      - pydocstyle==6.3.0
      - pyflakes==2.5.0
      - pygments==2.14.0
      - pylint==2.13.9
      - pyparsing==3.1.4
      - pytest==7.0.1
      - pytest-aiohttp==0.1.3
      - pytest-cov==4.0.0
      - pytest-timeout==2.1.0
      - pytz==2025.2
      - requests==2.27.1
      - six==1.17.0
      - snowballstemmer==2.2.0
      - sphinx==1.5.1
      - tomli==1.2.3
      - typed-ast==1.5.5
      - typing-extensions==4.1.1
      - urllib3==1.26.20
      - wrapt==1.16.0
      - yarl==1.7.2
      - zeroconf==0.38.4
      - zipp==3.6.0
prefix: /opt/conda/envs/pyatv

tests/test_convert.py::ConvertTest::test_music_media_kinds tests/test_convert.py::ConvertTest::test_tv_kinds tests/test_convert.py::ConvertTest::test_video_media_kinds
tests/test_convert.py::ConvertTest::test_invalid_time tests/test_convert.py::ConvertTest::test_media_type_to_string tests/test_convert.py::ConvertTest::test_no_time_returns_zero tests/test_convert.py::ConvertTest::test_play_state_no_media tests/test_convert.py::ConvertTest::test_playstate_str tests/test_convert.py::ConvertTest::test_regular_playstates tests/test_convert.py::ConvertTest::test_time_in_seconds tests/test_convert.py::ConvertTest::test_unknown_media_kind tests/test_convert.py::ConvertTest::test_unknown_media_kind_throws tests/test_convert.py::ConvertTest::test_unknown_media_type_to_str_throws tests/test_convert.py::ConvertTest::test_unknown_playstate_throws tests/test_convert.py::ConvertTest::test_unsupported_playstate_str
pyatv/convert.py
pyatv/convert.py