前、C#で
三日間分の被ブクマをチェックするアプリ
No.1206 やりたいこと - ダメシ添加大戦
みたいなものを作っていたのでpythonで同じ事をしようと思った。
うーん、実はエラー出る。どっかでエンコードしないといけないみたいだけどよくわからないからとりあえず公開してみようw
検索できるのは半角英数のみかなぁ? この辺もなんかすれば何とかなりそうだけど、飽きてきたのでとりあえず出力されるしーという言い訳で放出。
もうちょっと勉強したら直すかも。
あ、記事タイトルのナンバリングはやめました(爆)ダイアリとブログで重複してる記事もあるしなぁ。
アドバイスとかあれば是非是非ー(;´Д`)
滅茶遅いし、エラー出るしなのでもっとどうにかしないといけない。
myStr="https://elve.hatenadiary.jp/" myId = "elve"
ここをご自分のサイトのurlとIDに変えて実行していただくと
三日はてブ.html
ってファイルを作成します
一番左は自分がスター(黄色)付けたかどうかの表示です。
# -*- coding:utf-8 -*- import urllib import requests import json from lxml import etree import datetime as dt def HtmlOutput (bmInfos): f = open('三日はてブ.html','wt') f.write('<html><body><table>') f.write('<tr><th>★</th><th>URL</th><th>ユーザー</th><th>日付</th><th>コメント</th>\n') for b in bmInfos: bUrl = b['url'].replace("http://", "") bUrl = b['url'].replace("https://", "s/") bUrl = urllib.parse.quote(bUrl) f.write('<tr>') f.write('<td>') if b['star']==1: f.write('★') f.write('</td>') f.write('<td><a href="http://b.hatena.ne.jp/entry/' + bUrl + '" target="_blank">' + b['url'] + '</a></td><td>' + \ b['user'] + '</td><td>' + b['date'].strftime("%Y/%m/%d") + '</td><td>' + b['comment'] + '</td>') f.write('</tr>\n') f.write('</table></body></html>') f.close() def GetImgIndex(time, eid, user): #URL作成 url = "http://b.hatena.ne.jp/" + user + "/" url = url + time.strftime("%Y%m%d") url = url + "#bookmark-" + str(eid) url = urllib.parse.quote(url) headers = {'User-Agent': 'Sample Header'} r = requests.get("http://s.hatena.com/entry.json?uri=" + url, headers=headers).json() for st in r['entries']: for st2 in st['stars']: if st2['name'] == myId: return 1 return 0 myStr="https://elve.hatenadiary.jp/" myId = "elve" #myStr = input("検索したいurl: ") #myId = input("あなたのはてなID: ") r = requests.get("http://b.hatena.ne.jp/search/text?safe=off&q=" + urllib.parse.quote(myStr) + "&users=1&mode=rss").text r = r.encode('utf-8') root = etree.fromstring(r) links = root.findall(".//{http://purl.org/rss/1.0/}link") #links = root.xpath('link', namespaces={'rss','{http://purl.org/rss/1.0/}'}) bmInfos=[] for link in links: if link != links[0]: headers = {'User-Agent': 'Sample Header'} json = requests.get("http://b.hatena.ne.jp/entry/jsonlite/?url=" + link.text, headers=headers).json() try: for bm in json['bookmarks']: tdatetime = dt.datetime.strptime(bm['timestamp'], '%Y/%m/%d %H:%M:%S') if tdatetime > (dt.datetime.now() - dt.timedelta(days = 3)): bmInfo={"star":0,"url":json['url'],"user":bm['user'], "date":tdatetime,"comment":bm['comment']} bmInfo["star"] = GetImgIndex(tdatetime, json['eid'], bm['user']) bmInfos.append(bmInfo) else: break except: print("ERR!!") break HtmlOutput(bmInfos) print("END")