Beispiel #1
0
    def getAwards(self):

        title = self.title
        client = omdb.OMDBClient(apikey=os.environ['OMDB_API_KEY'])
        movieData = client.get(title=title)
        imdbID = movieData['imdb_id']
        imdbAwardsURL = "https://www.imdb.com/title/{}/awards?ref_=tt_awd".format(
            movieData['imdb_id'])
        r = requests.get(imdbAwardsURL)
        soup = bs4.BeautifulSoup(r.text, 'lxml')
        table = soup.find('table', attrs={'class': 'awards'})

        rows = table.find_all('tr')

        winline = table.find('td', attrs={'class': 'title_award_outcome'})
        numWins = 0
        if "Winner" in winline.text:
            numWins = int(winline['rowspan'])
        else:
            return False
        data = []
        for row in rows:
            cols = row.find_all('td')
            cols = [ele.text.strip() for ele in cols]
            data.append([ele for ele in cols if ele])  # Get rid of empty

        temp = []
        temp.append(data[0][1])
        for i in range(1, numWins):
            temp.append(data[i][0])
        awardsList = "\n\n".join(temp)
        return awardsList
Beispiel #2
0
def test_set_default(client):
    req = {'title': 'True Grit'}

    data = client.get(**req)

    # default request returns movie with this year
    assert data['year'] == '2010'

    # change the default year and re-request
    client.set_default('year', '1969')

    data = client.get(**req)

    # default year is now used
    assert data['year'] == '1969'

    # can also set defaults at client instantiation time
    client = omdb.OMDBClient(year='1969',
                             apikey=client.default_params['apikey'])

    data = client.get(**req)

    assert data['year'] == '1969'

    # defaults can be overridden
    req = {'title': 'True Grit', 'year': '2010'}
    data = client.get(**req)

    assert data['year'] == '2010'
Beispiel #3
0
    def __init__(self):
        # Set up basic omdb library
        self.api_key = '57f4b0ed'
        omdb.set_default('apikey', self.api_key)

        self.omdb_client = omdb.OMDBClient(apikey=self.api_key)

        self.main_url = 'http://www.omdbapi.com/?apikey=%s&' % (self.api_key)

        self.db = DB()
Beispiel #4
0
def _omdb_client():
    import omdb

    global _OMDB

    if _OMDB is None:
        LOGGER.debug('Making client with API key: %s', config.OMDB_API_KEY)
        _OMDB = omdb.OMDBClient(apikey=config.OMDB_API_KEY)

    return _OMDB
    def __init__(self, title=None, posterURL=None):
        """
        Constructor
        """
        logging.info("Entering OpenMovie CTOR")
        # Save class data members
        self.title = title
        self.posterURL = posterURL
        self.posterFileName = None

        # os.mkdir will throw an exception if the directory already
        # exists, so catch it and move on
        try:
            os.mkdir("Posters")
        except:
            pass

        client = omdb.OMDBClient(apikey=os.environ['OMDB_API_KEY'])
        try:
            self.movie = client.get(title=title)
        except:
            logging.error("Could not get {} from omdb".format(title))
            print("Could not get {} from omdb".format(title))

        # adding a bunch of empty lists
        self.monthlyBudget = []
        self.monthlyRevenue = []
        self.monthlyMaxRevenue = []
        self.monthlyMovieCount = []
        self.monthlyMovieTitles = []

        self.monthlyRevenueMean = []
        self.monthlyRevenueMedian = []
        self.monthlyRevenueStd = []

        self.monthlyBudgetMean = []
        self.monthlyBudgetMedian = []
        self.monthlyBudgetStd = []

        self.annualRevenue = []
        self.annualRevenueMean = []
        self.annualRevenueMedian = []
        self.annualRevenueStd = []

        self.annualBudget = []
        self.annualBudgetMean = []
        self.annualBudgetMedian = []
        self.annualBudgetStd = []

        logging.info("Exiting OpenMovie CTOR. MOVIE TITLE: {}".format(
            self.title))
        return
Beispiel #6
0
def get_movie_names_for(srch_term):
	import omdb
	from .secretfile import omdbapikey #this is my own api for omdb
#will not work outside django
	client = omdb.OMDBClient(apikey=omdbapikey)
	data = client.search_movie(srch_term)

	movie_names_with_id = dict()

	for i in range(len(data)):
		instance = data[i]
		movie_names_with_id[instance['title']] = instance['imdb_id']
	return movie_names_with_id
Beispiel #7
0
    def __init__(self, title=None):
        self.title = title
        self.client = omdb.OMDBClient(apikey=os.environ['OMDB_API_KEY'])
        self.posterFileName = None
        try:
            os.mkdir("Posters")
        except:
            pass

        try:
            self.movie = self.client.get(title=title)
        except Exception:
            logging.error("FAILED to get movie {}".format(title))
            print(traceback.format_exc())
            logging.error(traceback.format_exc())
        return
Beispiel #8
0
 def __init__(self, title=""):
     """
     The constructor initializes the three fields and also creates the directory that the poster files will be stored in.
     """
     self.posterFileName = ""
     self.title = title
     # connect to omdb
     self.client = omdb.OMDBClient(apikey=os.environ['OMDB_API_KEY'])
     # get data
     try:
         self.movie = self.client.get(title=title)
     except:
         return
     # the directory is created in a try catch block since after first being created it will throw an exception when mkdir is called again.
     try:
         os.mkdir("Posters")
     except:
         pass
     return
    def __init__(self, title=None, tomatoes=False):
        self.title = title
        self.client = omdb.OMDBClient(apikey=os.environ['OMDB_API_KEY'])
        self.posterFileName = None
        self.awardsDict = {}

        self.monthlyBudget = []
        self.monthlyRevenue = []
        self.monthlyMaxRevenue = []
        self.monthlyMovieCount = []
        self.monthlyMovieTitles = []

        self.monthlyRevenueMean = []
        self.monthlyRevenueMedian = []
        self.monthlyRevenueStd = []

        self.monthlyBudgetMean = []
        self.monthlyBudgetMedian = []
        self.monthlyBudgetStd = []

        self.annualBudgetMean = []
        self.annualBudgetMedian = []
        self.annualBudgetStd = []

        self.annualRevenueMean = []
        self.annualRevenueMedian = []
        self.annualRevenueStd = []

        try:
            os.mkdir("Posters")
        except:
            pass

        try:
            self.movie = self.client.get(title=title, tomatoes=tomatoes)
        except Exception:
            logging.error("FAILED to get movie {}".format(title))
            print(traceback.format_exc())
            logging.error(traceback.format_exc())
        return
Beispiel #10
0
    def get(self, request):
        movies_client = omdb.OMDBClient(apikey=settings.OMDB_API_KEY)

        title = request.GET.get('title', '')
        page = int(request.GET.get('page', 1))

        movies = movies_client.search_series(title, page=page)

        movies_to_return = []
        for movie in movies:
            instance, _ = Movie.objects.update_or_create(
                imdb_id=movie['imdb_id'],
                defaults={
                    'title':
                    movie['title'],
                    'poster_url':
                    movie['poster']
                    if self._is_poster_url_valid(movie['poster']) else None
                })
            movies_to_return.append(instance)
        return Response(data=MovieSerializer(
            movies_to_return, many=True, context={
                'request': request
            }).data)
Beispiel #11
0
import omdb
from django.conf import settings

from iioy.core.adapters import UnImplementableMethod
from iioy.movies.external.data_sources.base import BaseMovieAdapter, \
    MovieRating

client = omdb.OMDBClient(apikey=settings.OMDB_API_KEY)


class OmdbMovieAdapter(BaseMovieAdapter):
    source = 'omdb'
    """
    NB: The OMDB api has many of these fields, but we rely on TMDB as the
    source of truth and only use OMDB as supplemental.
    """
    def __init__(self, tmdb_id, imdb_id):
        self.tmdb_id = tmdb_id
        self.imdb_id = imdb_id

        self._data = None

    @property
    def data(self):
        if self._data is None:
            self._data = client.get(imdbid=self.imdb_id)
        return self._data

    get_title = UnImplementableMethod('Not used from OMDB.')
    get_original_title = UnImplementableMethod('Not used from OMDB.')
    get_tagline = UnImplementableMethod('Not used from OMDB.')
Beispiel #12
0
answer = {"Ala": 2, "ma": 2, "kota": 1, "psa": 1, ".": 2}
assert word_counter2("Ala ma kota. Ala ma psa.") == answer

import re


def validatePIN(PIN):
    return bool(re.fullmatch("\d{4}", PIN))


assert validatePIN("1234") == True, "Wrong validation!"
assert validatePIN("12345") == False, "Wrong validation!"
assert validatePIN("a234") == False, "Wrong validation!"


def validate_input(word):
    return bool(re.fullmatch("[a-z 0-9_]{5,20}", word))


assert validate_input("Summer Academmy") == False, "Bad validation!"
assert validate_input("Summer_Academmy") == False, "Bad validation!"
assert validate_input("summer_academmy") == True, "Bad validation!"

import omdb

client = omdb.OMDBClient(apikey="1ecdeb9a")
res = client.request(t='Grease', y='1978')
xml_content = res.content
print(xml_content)
Beispiel #13
0
import omdb
import re

# set up OMDB API to be used to pull data
client = omdb.OMDBClient(apikey='5203b3e3')

# code logic similar to movie extraction code

# search keywords
words = [
    'Canada', 'University', 'Moncton', 'Halifax', 'Toronto', 'Vancouver'
    'Alberta', 'Niagara'
]
data = []  # empty list to which movie_details obj will be added
print("Searching for movie data...")

# API call from http://www.omdbapi.com/
for z in range(1, 20):
    for word in words:
        movies = client.search(word, page=z)
        for movie in movies:
            movie_details = {
                'title': movie['title'],
                'poster': movie['poster'],
                'imdb ID': movie['imdb_id'],
                'year': movie['year'],
                'type': movie['type']
            }
            data.append(movie_details)
        # special tags regex reference: https://www.webdeveloper.com/d/199621-need-a-regex-to-exclude-all-but-a-za-z0-9s
        if movie_details['type'] is not None:
Beispiel #14
0
 def load_config(self, confdict):
     self.api = omdb.OMDBClient(apikey=confdict["api_key"])
     self.artkey = confdict['fanart_key']
     self.artckey = confdict['fanart_ckey']
Beispiel #15
0
 def _fetch_from_omdb(title):
     client = omdb.OMDBClient(apikey=os.getenv('OMDB_API_KEY'))
     return client.get(title=title, media_type='movie', timeout=5.0)
#! /usr/bin/env python3

import os
import re
import bs4
import omdb
import requests

if __name__ == "__main__":

    title = "Gladiator"
    title = "Clerks"
    title = "Avatar"
    title = "The Matrix"
    title = "The Expendables"
    client = omdb.OMDBClient(apikey=os.environ['OMDB_API_KEY'])
    movie = client.get(title=title, tomatoes=False)
    print(movie['imdb_id'])
    imdb_url = "https://www.imdb.com/title/{}/awards?ref_=tt_awd".format(
        movie['imdb_id'])

    r = requests.get(imdb_url)
    # print(r.text)
    soup = bs4.BeautifulSoup(r.text, "lxml")

    table = soup.find('table', attrs={'class': 'awards'})
    data = []
    rows = table.find_all('tr')
    for row in rows:
        cols = row.find_all('td')
        cols = [ele.text.strip() for ele in cols]
Beispiel #17
0
def client(cache):
    return omdb.OMDBClient(apikey=cache.get('omdbapikey', None))
Beispiel #18
0
 def __init__(self, api_key=API_KEY):
     self.api_key = api_key
     omdb.set_default('tomatoes', True)
     self.client = omdb.OMDBClient(apikey=API_KEY)
Beispiel #19
0
import omdb
import os
import dialogflow_v2 as dialogflow
import database
import requests
import urllib


os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "moviesbot-secret.json"

dialogflow_session_client = dialogflow.SessionsClient()
PROJECT_ID = "moviesbot-uasafb"
API_KEY = '9c1e8a8b'
client = omdb.OMDBClient(apikey=API_KEY)


def get_new_movie(parameters):
	print(parameters)
	# print('dshgddhajk')
	movie_title = parameters.get('movie_title')
	year = parameters.get('year')
	# language = parameters.get('language')
	news = dict(client.get(title=movie_title, year=year, tomatoes=True))
	if(news != {}):
		print("inside if")
		type1 = news['type']
		poster_url = news['poster']
		str1 = f"\n\nPlot:\n{news['plot']}\n\nThis {type1} has its release in " \
		f"{news['year']} directed by {news['director']} with actors {news['actors']}" \
		f" and got {news['awards']} It has a imdb rating of {news['imdb_rating']}."
		# print(type1, poster_url, str1)
import omdb
from keys import *
# init
client = omdb.OMDBClient(apikey=movie_key)

search_keywords = ['Canada','University','Moncton','Halifax','Toronto','Vancouver''Alberta','Niagara']
movie_title = []

# # Reference taken from http://www.omdbapi.com/
for search_word in search_keywords:
    # Can iterate to 100 pages but limited API calls per day
    for pageCount in range(1,2):
        movies = client.search(search_word, page=pageCount)
        if movies == []:
            continue
        else:
            movie_title.append(movies)
            pass

movie_details = []
# Reference taken from http://www.omdbapi.com/
for movie in movie_title:
    for obj in movie:
        # invoked get api call for every movie title
        movie_details.append(client.get(title=obj["title"]))
print(movie_details)
Beispiel #21
0
        fileMenu.addAction(exitAction)

        self.toolbar = self.addToolBar('Exit')
        self.toolbar.addAction(exitAction)

        self.central = UI_Widget()

        self.setCentralWidget(self.central)
        self.setWindowTitle('Statusbar')
        self.show()

        return


if __name__ == "__main__":
    print("OMDB Example Code")
    omdb_api_key = os.environ['OMDB_API_KEY']
    print(omdb_api_key)
    client = omdb.OMDBClient(apikey=omdb_api_key)
    avatar = client.get(title='Avatar')
    print(avatar)
    avatar_post_url = avatar['poster']
    r = requests.get(avatar_post_url)
    # https://www.codementor.io/aviaryan/downloading-files-from-urls-in-python-77q3bs0un
    open('avatar_poster.jpg', 'wb').write(r.content)

    app = PyQt5.QtWidgets.QApplication(sys.argv)
    gui = UI()
    gui.show()
    app.exec_()
Beispiel #22
0
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework import status
from django.conf import settings

from .models import Movie, Comment
from .serializers import (
    TitleSerializer,
    MovieSerializer,
    CommentSerializer,
    GetTopQuerySerializer,
    TopResponseSerializer,
)

OMDB_CLIENT = omdb.OMDBClient(apikey=settings.OMDBAPI_KEY)


@api_view(["GET", "POST"])
def get_post_movies(request):
    if request.method == "GET":
        movies = Movie.objects.all()
        serializer = MovieSerializer(movies, many=True)
        return Response(serializer.data)
    elif request.method == "POST":
        title_serializer = TitleSerializer(data=request.data)
        if not title_serializer.is_valid():
            return Response(title_serializer.errors,
                            status=status.HTTP_400_BAD_REQUEST)
        title = title_serializer.data.get("title")
        # if movie already in db return error msg
Beispiel #23
0
import omdb
from .secretfile import omdbapikey  #this is my own api for omdb
#will not work outside django

client = omdb.OMDBClient(apikey=omdbapikey)


def by_imdb_id(imdb_id):
    movie_info = client.imdbid(imdb_id)
    tmpdict = dict()
    if 'ratings' in movie_info.keys():
        for item in movie_info['ratings']:
            tmpdict[item['source']] = item[
                'value']  #That simplifies ratings, will be easier to render in django template
        movie_info['ratings'] = tmpdict
    return movie_info


def main():
    print(by_imdb_id("tt1226837"))


if __name__ == '__main__':
    main()
Beispiel #24
0
def search(request):
    movie_name = request.POST['movie']
    client = omdb.OMDBClient(apikey=omdb_APIKEY)
    #try:
    movie_data = client.title(movie_name)
    if movie_data != {}:
        if mediaDatabase.objects.filter(title=movie_data['title']).exists():
            print('movie already exists')
        else:
            data = mediaDatabase()

            data.title = movie_data['title']
            data.year = movie_data['year']
            data.release_date = datetime.datetime.strptime(
                movie_data['released'], "%d %b %Y")
            data.rated = movie_data['rated']

            runtime = int(movie_data['runtime'].split(' ')[0])
            data.runtime = datetime.timedelta(days=0,
                                              hours=runtime // 60,
                                              minutes=runtime % 60)

            data.genre = movie_data['genre']
            data.director = movie_data['director']
            data.writers = movie_data['writer']
            data.cast = movie_data['actors']
            data.plot = movie_data['plot']

            movie_poster_url = movie_data['poster']
            print(movie_poster_url)
            #movie_backdrop_url       = movie_data['backdrop']
            #print(movie_data['imdb_id'])

            data.poster = get_movie_poster(movie_poster_url,
                                           movie_data['title'])
            data.backdrop = get_tmdb_movie_backdrop(movie_data['imdb_id'],
                                                    movie_data['title'])

            metascore = int(movie_data['metascore'])
            data.ratings_metacritic = metascore

            imdb_value = float(movie_data['imdb_rating'])
            data.ratings_imdb = imdb_value

            rt_value = movie_data['ratings'][1]
            rt_value = int(rt_value['value'].split('%')[0])
            data.ratings_rotten = rt_value

            data.ratings_average = int(
                (metascore + rt_value + (imdb_value * 10)) / 3)

            if request.FILES:
                uploaded_file = request.FILES['movie_file']

                uploaded_file_name = fs.save(uploaded_file.name, uploaded_file)
                print(uploaded_file_name)
                data.movie_path = os.path.join(MOVIE_STORAGE_ROOT,
                                               uploaded_file_name)

            data.save()

        #except:
        #    print('Check your internet connection')

    return redirect('/')