Skip to content
This repository has been archived by the owner on Jul 23, 2020. It is now read-only.

Commit

Permalink
Merge pull request #34 from sks444/random
Browse files Browse the repository at this point in the history
Import 100 best directors of all time
  • Loading branch information
Shrikrishna Singh committed Apr 16, 2018
2 parents b0d5e43 + 95250ca commit bf903ee
Show file tree
Hide file tree
Showing 10 changed files with 100 additions and 7 deletions.
1 change: 1 addition & 0 deletions awesome100/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,6 @@
url('api/', include('movies.urls')),
url('api/', include('singers.urls')),
url('api/', include('tv_shows.urls')),
url('api/', include('directors.urls')),

] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
4 changes: 4 additions & 0 deletions directors/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
from django.contrib import admin
from directors.models import Director

admin.site.register(Director)
34 changes: 34 additions & 0 deletions directors/get_directors.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
from requests_html import HTMLSession

from directors.models import Director

session = HTMLSession()
r = session.get('http://www.imdb.com/list/ls056848274/')
directors = r.html.find('.lister-item')


def import_data(i, director):
try:
rank = i
url = director.absolute_links.pop()
name = director.find('a')[1].text
best_movie = director.find('a')[2].text
summary = director.find('p')[1].text
image_url = director.find('img')[0].attrs.get('src')
except Exception as ex:
print(str(ex))
try:
c, created = Director.objects.get_or_create(
rank=rank,
url=url,
name=name,
best_movie=best_movie,
summary=summary,
image_url=image_url,
)
if created:
c.save()
print('\nDirector, {}, has been saved.'.format(c))
except Exception as ex:
print('\n\nSomething went wrong saving this director: {}\n{}'
.format(name, str(ex)))
16 changes: 16 additions & 0 deletions directors/management/commands/import_best_directors.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
from django.core.management.base import BaseCommand

from directors.get_directors import directors, import_data


class Command(BaseCommand):
help = 'Import Directors data'

DIRECTORS = staticmethod(directors)
IMPORT_DATA = staticmethod(import_data)

def handle(self, *args, **options):
i = 1
for director in self.DIRECTORS:
self.IMPORT_DATA(i, director)
i = i + 1
12 changes: 8 additions & 4 deletions directors/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
# Generated by Django 2.0.4 on 2018-04-12 19:22
# -*- coding: utf-8 -*-
# Generated by Django 1.11.12 on 2018-04-16 05:47
from __future__ import unicode_literals

from django.db import migrations, models

Expand All @@ -15,9 +17,11 @@ class Migration(migrations.Migration):
name='Director',
fields=[
('rank', models.IntegerField(primary_key=True, serialize=False)),
('name', models.CharField(max_length=300)),
('url', models.URLField()),
('summary', models.TextField()),
('name', models.CharField(max_length=300, null=True)),
('url', models.URLField(null=True)),
('image_url', models.URLField(null=True)),
('summary', models.TextField(null=True)),
('best_movie', models.CharField(max_length=500, null=True)),
],
),
]
8 changes: 5 additions & 3 deletions directors/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@

class Director(models.Model):
rank = models.IntegerField(primary_key=True)
name = models.CharField(max_length=300)
url = models.URLField()
summary = models.TextField()
name = models.CharField(max_length=300, null=True)
url = models.URLField(null=True)
image_url = models.URLField(null=True)
summary = models.TextField(null=True)
best_movie = models.CharField(max_length=500, null=True)

def __str__(self):
return self.name
8 changes: 8 additions & 0 deletions directors/serializers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
from rest_framework import serializers
from . import models


class DirectorSerializer(serializers.ModelSerializer):
class Meta:
model = models.Director
fields = '__all__'
8 changes: 8 additions & 0 deletions directors/urls.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
from django.conf.urls import url

from . import views

urlpatterns = [ # Ignore PycodestyleBear (W605)
url('^directors/$', views.ListDirector.as_view()),
url('^director/(?P<pk>\d+)/$', views.DetailDirector.as_view()),
]
15 changes: 15 additions & 0 deletions directors/views.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# todos/views.py
from rest_framework import generics

from . import models
from . import serializers


class ListDirector(generics.ListCreateAPIView):
queryset = models.Director.objects.all()
serializer_class = serializers.DirectorSerializer


class DetailDirector(generics.RetrieveUpdateDestroyAPIView):
queryset = models.Director.objects.all()
serializer_class = serializers.DirectorSerializer
1 change: 1 addition & 0 deletions templates/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ <h1>Welcome</h1>
<li><a href="/api/movies/">100 greatest movies of all time</a>
<li><a href="/api/singers/">100 greatest singers of all time</a>
<li><a href="/api/tv_shows/">100 greatest tv_shows of all time</a>
<li><a href="/api/directors/">100 greatest directors of all time</a>
</ul>
</body>
</html>

0 comments on commit bf903ee

Please sign in to comment.