ฉันเป็นผู้เขียนสคริปต์ที่ลิงก์ในคำตอบของ @ oneqeightyfour ดังนั้นแม้ว่าฉันจะสายไปงานเลี้ยงเล็กน้อย แต่นี่เป็นสคริปต์ที่ได้รับการแก้ไขซึ่งคุณสามารถใช้ได้
ฉันพบไซต์คลิกเดียวที่อ้างว่าทำเช่นนี้ แต่ฉันไม่สามารถใช้งานได้ คุณอาจต้องการลองก่อน
ขั้นตอนที่ 1: รับคีย์ Tumblr API
การใช้ API นั้นง่ายกว่ามากจากมุมมองการเขียนโปรแกรมแทนที่จะพยายามขูดไซต์ นอกจากนี้ T & C Tumblr ขมวดคิ้วเมื่อคุณเข้าถึงข้อมูลจำนวนมากโดยไม่ต้องผ่าน API
วิธีรับรหัส API:
- ตรวจสอบให้แน่ใจว่าคุณลงชื่อเข้าใช้ Tumblr
- ของพวกเขาไปที่หน้าลงทะเบียน OAuth
เลือก "ลงทะเบียนแอปพลิเคชัน" และใช้รายละเอียดต่อไปนี้:
- ชื่อแอปพลิเคชัน:ค้นหาโพสต์ต้นฉบับของฉันทั้งหมด
- คำอธิบายการใช้งาน:ค้นหาโพสต์ต้นฉบับทั้งหมดบนเว็บไซต์; นั่นคือโพสต์ที่ไม่ใช่เว็บบล็อก
- URL โทรกลับเริ่มต้น: /
สิ่งนี้จะนำคุณกลับไปที่หน้าแรก คุณจะได้แสดงให้เห็นถึงผู้บริโภคที่สำคัญ OAuth คัดลอกสิ่งนี้ - เราจะใช้ในไม่ช้า
ขั้นตอนที่ 2: ตั้งค่าสคริปต์
นี่เป็นสคริปต์ของฉันที่ได้รับการแก้ไขเล็กน้อย คัดลอกและวางลงในโปรแกรมแก้ไขข้อความ (เช่น TextEdit หรือ Notepad) originals.py
และบันทึกเป็น
คุณควรแทนที่HOSTNAME
ตัวแปรด้วย URL ของบล็อกของคุณและAPI_KEY
ตัวแปรด้วยรหัสผู้ใช้ OAuth ที่คุณดึงมาในขั้นตอนที่ 1
#!/usr/bin/env python
import json
try:
from urllib.request import urlopen
except ImportError:
from urllib2 import urlopen
HOSTNAME = "alexwlchan.tumblr.com"
API_KEY = "abcdefg"
BASE_URL = (
"http://api.tumblr.com/v2/blog/{hostname}/"
"posts?api_key={key}&reblog_info=true"
) .format(hostname=HOSTNAME,key=API_KEY)
def api_response(url):
req = urlopen(url)
return json.loads(req.read())
jsonresponse = api_response(BASE_URL)
post_count = jsonresponse["response"]["total_posts"]
for count in range(0, post_count, 20):
jsonresponse = api_response("{url}&offset={count}".format(
url=BASE_URL,
count=count))
for post in jsonresponse["response"]["posts"]:
if "reblogged_from_name" not in post:
print(post["post_url"])
print("All finished!")
ขั้นตอนที่ 3: เรียกใช้สคริปต์
นี่เป็นสคริปต์ Python เหมาะสำหรับ Python 2 หรือ 3 หากคุณใช้ Google คุณควรจะสามารถค้นหาคำแนะนำในการใช้งานสคริปต์ Python สำหรับระบบปฏิบัติการที่คุณเลือก
สคริปต์จะพิมพ์รายการ URL ที่ไม่ได้รับข้อมูลการบันทึกใหม่จาก Tumblr API ในการทดสอบของฉัน (สั้นมาก) ดูเหมือนว่าจะหยิบ URL ที่หยิบขึ้นมาใหม่จำนวนหนึ่ง - ฉันไม่ได้ทำการขุดใด ๆ เพื่อค้นหาสาเหตุที่เป็นเช่นนั้น
มีความสุข! :-)