{ "cells": [ { "cell_type": "code", "execution_count": 15, "id": "e2eacfc4", "metadata": {}, "outputs": [], "source": [ "import csv\n", "import pandas as pd\n", "import numpy as np\n", "from sklearn.cluster import KMeans\n", "import imdb\n", "import random\n", "import gradio as gr" ] }, { "cell_type": "code", "execution_count": 2, "id": "32abfcc7", "metadata": {}, "outputs": [], "source": [ "file1=open(\"movies.csv\",'r')\n", "file2=open(\"movies3.csv\",'r')\n", "csvreader1 = csv.reader(file1)\n", "csvreader2 = csv.reader(file2)" ] }, { "cell_type": "code", "execution_count": 3, "id": "7c6af3f6", "metadata": {}, "outputs": [], "source": [ "pd_dict={'movie':[],'time_minute':[],'imdb_rating':[],'Action':[],'Adventure':[],'Fantasy':[],\n", " 'Sci-Fi':[],'Animation':[],'Comedy':[],'Family':[],'Mystery':[],'Romance':[],'Drama':[],\n", " 'Crime':[],'Thriller':[],'War':[],'Musical':[],'Biography':[]}\n", "\n", "lst=['Action','Adventure','Fantasy','Sci-Fi','Animation','Comedy',\n", " 'Family','Mystery','Romance','Drama','Crime','Thriller','War','Musical','Biography']" ] }, { "cell_type": "code", "execution_count": 4, "id": "197f938c", "metadata": {}, "outputs": [], "source": [ "j=0\n", "for row in csvreader2:\n", " if j==0:\n", " j=1\n", " continue\n", " for i in range(len(lst)):\n", " pd_dict[lst[i]].append(int(row[i+1]))\n", "j=0\n", "for row in csvreader1:\n", " if j==0:\n", " j=1\n", " continue\n", " if j==250:\n", " break\n", " pd_dict['movie'].append(row[1])\n", " pd_dict['time_minute'].append(int(row[3].split()[0]))\n", " pd_dict['imdb_rating'].append(float(row[4]))\n", " j+=1\n" ] }, { "cell_type": "code", "execution_count": 5, "id": "1b8ae369", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\shiva\\AppData\\Local\\Temp\\ipykernel_26960\\3370603501.py:2: FutureWarning: In a future version of pandas all arguments of DataFrame.drop except for the argument 'labels' will be keyword-only.\n", " X=np.array(df.drop(['movie'],1))\n" ] } ], "source": [ "df=pd.DataFrame(pd_dict)\n", "X=np.array(df.drop(['movie'],1))" ] }, { "cell_type": "code", "execution_count": 6, "id": "17dcbd0b", "metadata": {}, "outputs": [], "source": [ "kmeans = KMeans(max_iter=300).fit(X)" ] }, { "cell_type": "code", "execution_count": 9, "id": "7b41be34", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "15398776\n", "[180, 8.8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]\n" ] } ], "source": [ "movie_name=\"Oppenheimer\"\n", "ia=imdb.IMDb()\n", "items = ia.search_movie(movie_name)\n", "code = items[0].getID()\n", "print(code)\n", "series = ia.get_movie(code)\n", "genre = series.data['genres']\n", "time_minute=series.data['runtimes']\n", "rating=series.data['rating']\n", "x=[int(time_minute[0]),float(rating)]\n", "for i in lst:\n", " if i in genre:\n", " x.append(1)\n", " else:\n", " x.append(0)\n", "print(x)" ] }, { "cell_type": "code", "execution_count": 13, "id": "58c3e306", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Another movie like Oppenheimer is: The Wolf of Wall Street\n" ] } ], "source": [ "i=random.randint(1,249)\n", "test_x=X[i].reshape(1,-1)\n", "x=np.array(x)\n", "x=x.reshape(1,-1)\n", "# print(kmeans.predict(test_x))\n", "# print(kmeans.predict(x))\n", "pred=kmeans.predict(x)\n", "pred_test=kmeans.predict(test_x)\n", "while pred!=pred_test:\n", " i=random.randint(1,249)\n", " test_x=X[i].reshape(1,-1)\n", " x=np.array(x)\n", " x=x.reshape(1,-1)\n", " pred_test=kmeans.predict(test_x)\n", "print('Another movie like',movie_name,'is:',df['movie'][i])" ] }, { "cell_type": "code", "execution_count": 16, "id": "36d61a81", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Running on local URL: http://127.0.0.1:7860\n", "\n", "To create a public link, set `share=True` in `launch()`.\n" ] }, { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def movie(txt):\n", " ia=imdb.IMDb()\n", " items = ia.search_movie(movie_name)\n", " code = items[0].getID()\n", " series = ia.get_movie(code)\n", " genre = series.data['genres']\n", " time_minute=series.data['runtimes']\n", " rating=series.data['rating']\n", " x=[int(time_minute[0]),float(rating)]\n", " for i in lst:\n", " if i in genre:\n", " x.append(1)\n", " else:\n", " x.append(0)\n", " \n", " i=random.randint(1,249)\n", " test_x=X[i].reshape(1,-1)\n", " x=np.array(x)\n", " x=x.reshape(1,-1)\n", " # print(kmeans.predict(test_x))\n", " # print(kmeans.predict(x))\n", " pred=kmeans.predict(x)\n", " pred_test=kmeans.predict(test_x)\n", " while pred!=pred_test:\n", " i=random.randint(1,249)\n", " test_x=X[i].reshape(1,-1)\n", " x=np.array(x)\n", " x=x.reshape(1,-1)\n", " pred_test=kmeans.predict(test_x)\n", " return df['movie'][i]\n", "\n", "iface = gr.Interface(fn=movie, inputs=\"text\", outputs=\"text\")\n", "iface.launch()" ] }, { "cell_type": "code", "execution_count": null, "id": "3e5a81cd", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.4" } }, "nbformat": 4, "nbformat_minor": 5 }