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

Commit

Permalink
Improve hatenablog
Browse files Browse the repository at this point in the history
  • Loading branch information
lambdalisue committed Oct 14, 2014
1 parent d3c5820 commit 3776168
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 1 deletion.
21 changes: 21 additions & 0 deletions src/kawaz/apps/activities/contrib/hatenablog/activity.py
@@ -0,0 +1,21 @@
# coding=utf-8
"""
"""
__author__ = 'Alisue <lambdalisue@hashnote.net>'
from django.contrib.contenttypes.models import ContentType
from kawaz.core.personas.models import Persona
from kawaz.apps.activities.models import Activity
from kawaz.apps.activities.mediator import ActivityMediator


class HatenablogEntryActivityMediator(ActivityMediator):

def alter(self, instance, activity, **kwargs):
if activity and activity.status == 'updated':
# 通知が必要な状態の変更を詳細に記録する
if activity.previous is not None:
previous = activity.previous.snapshot
if previous.md5 == instance.md5:
# Nothing have changed
return
return activity
@@ -0,0 +1,30 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models, migrations


class Migration(migrations.Migration):

dependencies = [
('hatenablog', '0001_initial'),
]

operations = [
migrations.AddField(
model_name='hatenablogentry',
name='md5',
field=models.CharField(default='', max_length=32),
preserve_default=False,
),
migrations.AlterField(
model_name='hatenablogentry',
name='created_at',
field=models.DateTimeField(verbose_name='Created at'),
),
migrations.AlterField(
model_name='hatenablogentry',
name='title',
field=models.CharField(verbose_name='Title', max_length=128),
),
]
9 changes: 9 additions & 0 deletions src/kawaz/apps/activities/contrib/hatenablog/models.py
Expand Up @@ -19,6 +19,7 @@ def _get_upload_path(self, filename):
thumbnail = models.ImageField(_('Image'),
upload_to=_get_upload_path,
default='')
md5 = models.CharField(max_length=32)
created_at = models.DateTimeField(_('Created at'))

def __str__(self):
Expand All @@ -28,3 +29,11 @@ class Meta:
ordering = ('-created_at',)
verbose_name = _('Hatenablog entry')
verbose_name_plural = _('Hatenablog entries')

def get_absolute_url(self):
return self.url

from .activity import HatenablogEntryActivityMediator
from kawaz.apps.activities.registry import registry
registry.register(HatenablogEntry,
HatenablogEntryActivityMediator())
6 changes: 5 additions & 1 deletion src/kawaz/apps/activities/contrib/hatenablog/scraper.py
Expand Up @@ -2,6 +2,7 @@
"""
"""
__author__ = 'Alisue <lambdalisue@hashnote.net>'
import hashlib
import datetime
import requests
from bs4 import BeautifulSoup
Expand Down Expand Up @@ -30,6 +31,7 @@ def fetch(self):
for i, entry in enumerate(entries):
url = entry.link.string
title = entry.title.string
m = hashlib.md5(entry.description.string.encode('utf-8')).digest()

if self.verbose:
print("- Fetching entry '{}'... ({}/{})".format(
Expand All @@ -45,7 +47,9 @@ def fetch(self):
defaults=dict(
title=title,
created_at=created_at,
thumbnail=thumbnail),
thumbnail=thumbnail,
md5=str(m),
),
)
if created:
ncreated += 1
Expand Down

0 comments on commit 3776168

Please sign in to comment.