{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "MusicBrainz_Recording_Release_Lookup.ipynb",
      "provenance": [],
      "include_colab_link": true
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "view-in-github",
        "colab_type": "text"
      },
      "source": [
        "<a href=\"https://colab.research.google.com/github/filtr/marc-jupyter-notebooks/blob/google-colab/MusicBrainz_Recording_Release_Lookup.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "amk0sUInOax7",
        "colab_type": "code",
        "outputId": "21986ed4-3e09-406f-99dd-35c70eb9eaaa",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 207
        }
      },
      "source": [
        "!pip install musicbrainzngs"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Collecting musicbrainzngs\n",
            "\u001b[?25l  Downloading https://files.pythonhosted.org/packages/63/cc/67ad422295750e2b9ee57c27370dc85d5b85af2454afe7077df6b93d5938/musicbrainzngs-0.6.tar.gz (111kB)\n",
            "\u001b[K     |████████████████████████████████| 112kB 3.5MB/s \n",
            "\u001b[?25hBuilding wheels for collected packages: musicbrainzngs\n",
            "  Building wheel for musicbrainzngs (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
            "  Created wheel for musicbrainzngs: filename=musicbrainzngs-0.6-cp36-none-any.whl size=24235 sha256=33f6dbfd11871919b2e6104fdc5f3ac4ef8c4f18f290a75ab407288e09148201\n",
            "  Stored in directory: /root/.cache/pip/wheels/c7/1e/69/5b0cd3cdbe21c9140b33cb7b81ef41587014023371200e6cb5\n",
            "Successfully built musicbrainzngs\n",
            "Installing collected packages: musicbrainzngs\n",
            "Successfully installed musicbrainzngs-0.6\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "97YEcMB2Odpk",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "import musicbrainzngs"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "4JpdPbNePFx8",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "recordings=musicbrainzngs.search_recordings(isrc='USSM11905818',country='US',strict=True)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "4a21x2qJPZAg",
        "colab_type": "code",
        "outputId": "0b403106-e8c5-4b23-a1ac-9ba57def9520",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 164
        }
      },
      "source": [
        "musicbrainzngs.set_useragent(\"MetaBrainz Production Site\",1)"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "error",
          "ename": "AttributeError",
          "evalue": "ignored",
          "traceback": [
            "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
            "\u001b[0;31mAttributeError\u001b[0m                            Traceback (most recent call last)",
            "\u001b[0;32m<ipython-input-13-4c0bee0d9a5d>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mmusicbrainzngs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_useragent\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"MetaBrainz Production Site\"\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecording_list\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
            "\u001b[0;31mAttributeError\u001b[0m: 'NoneType' object has no attribute 'recording_list'"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "OtwEKsPrPodQ",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "import pandas as pd"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "BYsTFQwyR0qK",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "rlist=pd.DataFrame.from_dict(recordings)['recording-list']"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "pn32JfEvSJ2z",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "releases=musicbrainzngs.search_releases('489ce91b-6658-3307-9877-795b68554c98')"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "0ZVHFLdtS7X-",
        "colab_type": "code",
        "outputId": "549485e4-8c51-45c8-85c9-696bfd2b6792",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "releases"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "{'release-count': 0, 'release-list': []}"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 117
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "TZfhsfyuS-X3",
        "colab_type": "code",
        "outputId": "ad14dcbe-a2fe-4412-db69-fa70c0738cfd",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 51
        }
      },
      "source": [
        "rlist"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "0    {'id': 'bb990ef6-0166-4eb9-8abc-b942b89de32e',...\n",
              "Name: recording-list, dtype: object"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 53
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "SQMW6hxXUZoY",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "slist=pd.DataFrame.from_dict(rlist[0])[['release-list']]"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "-_5dJmfzUb7c",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "release_list=dict(slist['release-list'])[0]['release-event-list']"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "5o8BdrNdVDdF",
        "colab_type": "code",
        "outputId": "d5092472-86ae-48ca-b790-a521bec24339",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 215
        }
      },
      "source": [
        "next(item for item in release_list if item[\"name\"] == \"United States\")"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "error",
          "ename": "KeyError",
          "evalue": "ignored",
          "traceback": [
            "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
            "\u001b[0;31mKeyError\u001b[0m                                  Traceback (most recent call last)",
            "\u001b[0;32m<ipython-input-99-e1f58f186da6>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mnext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mitem\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mitem\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrelease_list\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mitem\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"name\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"United States\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
            "\u001b[0;32m<ipython-input-99-e1f58f186da6>\u001b[0m in \u001b[0;36m<genexpr>\u001b[0;34m(.0)\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mnext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mitem\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mitem\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrelease_list\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mitem\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"name\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34m\"United States\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
            "\u001b[0;31mKeyError\u001b[0m: 'name'"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "UhCBEpeaYFMx",
        "colab_type": "code",
        "outputId": "8a57bec7-b43d-419b-c674-49bd70d6ae83",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "release_list[75]['area']['id']"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "'489ce91b-6658-3307-9877-795b68554c98'"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 114
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "gluzx-RoYMA7",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        ""
      ],
      "execution_count": 0,
      "outputs": []
    }
  ]
}