スナックelve 本店

バツイチ40代女の日記です

被はてブのリスト出力

以前作ってた三日はてブの動く版w
絵文字は消える。文字コード昔仕事で使ったのによくわからんw
スター付けたかどうかのところは今のところとれなくなってる。
よって「はてなID」は何入れても同じ罠w

日付でソートしようと思ったらドはまりしそうなので、ひとまずここで上げておく

# -*- coding:utf-8 -*-
import urllib
import codecs
import requests
import json
from lxml import etree
import datetime as dt

 
def HtmlOutput(bmInfos):
    #ファイルを開く
    f = open('被はてブlist.html', 'wt')
    #最低限のタグ書き込み
    f.write('<html><body><table border="1" style="border-collapse: collapse">')
    #ヘッダ
    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>')
        try:
            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>')
        except:
            #絵文字があったらどうにかする(消える)
            s = '<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>'
            b = s.encode('cp932', "ignore")
            f.write(b.decode('cp932'))
            
            
            
        f.write('</tr>\n')

    #後処理
    f.write('</table></body></html>')
    f.close()

#####死んどる#####
def  GetImgIndex(time, eid, user):
    #URL作成
    url = "http://b.hatena.ne.jp/entry/" + str(eid) + "/comment/"
    url = url + user
    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
##########################################
#検索したいurl: 
myStr="https://elve.hatenadiary.jp/"
#あなたのはてなID
myId = "elve"

#大元のURL読み込み(はてブをURLで検索した結果)rss表示
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")

#データ空に
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')

                #スターなし(現在機能していない)|ブクマページURL|ユーザー名|日付|コメント
                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)
        except:
            #不穏な動き
            print("ERR!!")
            break
#データをHTMLに出力
HtmlOutput(bmInfos)
print("END")

出力

f:id:elve:20200301155204p:plain