三日はてブ移植

前、C#

三日間分の被ブクマをチェックするアプリ

No.1206 やりたいこと – ダメシ添加大戦

みたいなものを作っていたのでpythonで同じ事をしようと思った。

うーん、実はエラー出る。どっかでエンコードしないといけないみたいだけどよくわからないからとりあえず公開してみようw
検索できるのは半角英数のみかなぁ? この辺もなんかすれば何とかなりそうだけど、飽きてきたのでとりあえず出力されるしーという言い訳で放出。
もうちょっと勉強したら直すかも。
あ、記事タイトルのナンバリングはやめました(爆)ダイアリとブログで重複してる記事もあるしなぁ。

アドバイスとかあれば是非是非ー(;´Д`)
滅茶遅いし、エラー出るしなのでもっとどうにかしないといけない。

myStr="https://elve.hatenadiary.jp/"
myId = "elve"

ここをご自分のサイトのurlとIDに変えて実行していただくと
三日はてブ.html
ってファイルを作成します
f:id:elve:20180331003406p:plain
一番左は自分がスター(黄色)付けたかどうかの表示です。

# -*- 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")

どのくらい面白かった?

星を押して送信してね

平均 0 / 5. Vote count: 0

是非フォローしてください

最新の情報をお伝えします

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です