pushshift.io Reddit API ได้รับการออกแบบและสร้างโดยทีมงาน mod /r/datasets เพื่อช่วยปรับปรุงฟังก์ชันการทำงานและความสามารถในการค้นหาสำหรับการค้นหาความคิดเห็นและการส่งของ Reddit หัวหน้าโครงการ /u/stuck_in_the_matrix เป็นผู้ดูแลความคิดเห็น Reddit และไฟล์เก็บถาวรการส่งที่อยู่ที่ https://files.pushshift.io
RESTful API นี้ให้ฟังก์ชันการทำงานเต็มรูปแบบสำหรับการค้นหาข้อมูล Reddit และยังรวมถึงความสามารถในการสร้างการรวมกลุ่มข้อมูลที่มีประสิทธิภาพอีกด้วย ด้วย API นี้ คุณสามารถค้นหาข้อมูลที่คุณสนใจและค้นหาความสัมพันธ์ที่น่าสนใจได้อย่างรวดเร็ว
มีสองวิธีหลักในการเข้าถึงฐานข้อมูลความคิดเห็นและการส่งของ Reddit วิธีหนึ่งคือการใช้ API โดยตรงผ่าน https://api.pushshift.io/ และอีกอย่างคือผ่านการเข้าถึงเครื่องมือค้นหา Elasticsearch แบ็กเอนด์ผ่าน https://elastic.pushshift.io/ เอกสารนี้จะอธิบายทั้งสองแนวทางและให้ ตัวอย่างวิธีใช้ API อย่างมีประสิทธิภาพ เอกสารนี้ยังจะสำรวจการใช้พารามิเตอร์ API เพื่อใช้การค้นหาที่เจาะจงมากขึ้น
มีจุดสิ้นสุดหลักสองจุดที่ใช้เพื่อค้นหาความคิดเห็นและการส่งที่เปิดเผยต่อสาธารณะทั้งหมดบน Reddit:
ในส่วนถัดไป เราจะสำรวจวิธีการค้นหาที่มีประสิทธิภาพมากขึ้นโดยใช้จุดสิ้นสุดการค้นหาความคิดเห็น
หากต้องการค้นหาความคิดเห็น ให้ใช้ตำแหน่งข้อมูล https://api.pushshift.io/reddit/search/comment/ เรามาเริ่มด้วยตัวอย่างเล็กๆ น้อยๆ แล้วอธิบายพารามิเตอร์ต่างๆ ที่พร้อมใช้งานเมื่อใช้ตำแหน่งข้อมูลนี้ หนึ่งในการค้นหาที่ง่ายที่สุดคือการใช้เพียงพารามิเตอร์ q พารามิเตอร์ q ใช้เพื่อค้นหาคำหรือวลีเฉพาะ นี่คือตัวอย่าง:
ค้นหาความคิดเห็นล่าสุดเกี่ยวกับคำว่า "วิทยาศาสตร์"
https://api.pushshift.io/reddit/search/comment/?q=science
วิธีนี้จะค้นหาความคิดเห็นล่าสุดด้วยคำว่า "วิทยาศาสตร์" ในเนื้อหาของความคิดเห็น การค้นหานี้ไม่คำนึงถึงขนาดตัวพิมพ์ ดังนั้นจะค้นหาคำว่า "วิทยาศาสตร์" ที่เกิดขึ้นโดยไม่คำนึงถึงการใช้อักษรตัวพิมพ์ใหญ่ API มีค่าเริ่มต้นในการจัดเรียงตามความคิดเห็นที่เพิ่งสร้างไว้ก่อน หลังจากดำเนินการค้นหานี้ ผลลัพธ์ 25 รายการจะถูกส่งกลับ นี่คือขนาดเริ่มต้นสำหรับการค้นหาและสามารถปรับได้โดยใช้พารามิเตอร์ขนาด ซึ่งจะกล่าวถึงรายละเอียดเพิ่มเติมในส่วนพารามิเตอร์ ข้อมูลจะถูกส่งกลับในรูปแบบ JSON และผลการค้นหาจริงจะรวมอยู่ในคีย์ "data" นอกจากนี้ยังมีคีย์ "ข้อมูลเมตา" ที่ให้ข้อมูลเพิ่มเติมเกี่ยวกับการค้นหา รวมถึงจำนวนผลลัพธ์ทั้งหมดที่พบ ระยะเวลาที่ใช้ในการประมวลผลการค้นหา ฯลฯ หากมีการร้องขอการรวม ข้อมูลการรวมทั้งหมดจะถูกส่งกลับภายใต้คีย์ aggs
มีพารามิเตอร์เพิ่มเติมมากมายที่สามารถนำมาใช้เมื่อดำเนินการค้นหาความคิดเห็น เรามาดูพวกเขาและยกตัวอย่างสำหรับแต่ละรายการกันดีกว่า
พารามิเตอร์ | คำอธิบาย | ค่าเริ่มต้น | ค่าที่ยอมรับ |
---|---|---|---|
ถาม | คำค้นหา. | ไม่มี | สตริง / สตริงที่ยกมาสำหรับวลี |
รหัส | รับความคิดเห็นที่เฉพาะเจาะจงผ่านรหัสของพวกเขา | ไม่มี | รหัส base36 ที่คั่นด้วยเครื่องหมายจุลภาค |
ขนาด | จำนวนผลลัพธ์ที่จะส่งคืน | 25 | จำนวนเต็ม <= 500 |
สาขา | หนึ่งช่องเฉพาะสำหรับการส่งคืน (คั่นด้วยเครื่องหมายจุลภาค) | ส่งคืนฟิลด์ทั้งหมดแล้ว | สตริงหรือสตริงที่คั่นด้วยเครื่องหมายจุลภาค |
เรียงลำดับ | เรียงลำดับผลลัพธ์ตามลำดับเฉพาะ | "รายละเอียด" | "ASC", "รายละเอียด" |
sort_type | จัดเรียงตามคุณลักษณะเฉพาะ | "created_utc" | "คะแนน", "num_comments", "created_utc" |
aggs | สรุปการรวมส่งคืน | ไม่มี | ["ผู้เขียน", "link_id", "created_utc", "subreddit"] |
ผู้เขียน | จำกัดเฉพาะผู้เขียนรายใดรายหนึ่ง | ไม่มี | สตริง |
subreddit | จำกัดเฉพาะ subreddit เฉพาะ | ไม่มี | สตริง |
หลังจาก | ส่งคืนผลลัพธ์หลังจากวันที่นี้ | ไม่มี | ค่ายุคหรือจำนวนเต็ม + "s,m,h,d" (เช่น 30d เป็นเวลา 30 วัน) |
ก่อน | ส่งคืนผลลัพธ์ก่อนวันที่นี้ | ไม่มี | ค่ายุคหรือจำนวนเต็ม + "s,m,h,d" (เช่น 30d เป็นเวลา 30 วัน) |
ความถี่ | ใช้กับพารามิเตอร์ aggs เมื่อตั้งค่าเป็น create_utc | ไม่มี | "วินาที", "นาที", "ชั่วโมง", "วัน" |
ข้อมูลเมตา | แสดงข้อมูลเมตาเกี่ยวกับการสืบค้น | เท็จ | "จริง", "เท็จ" |
คุณสามารถดึงความคิดเห็นได้โดยตรงโดยใช้พารามิเตอร์ ids หากต้องการรับชุดความคิดเห็นตาม ID ให้ใช้ตัวอย่างต่อไปนี้:
รับความคิดเห็นสามรายการโดยใช้ค่ารหัสฐาน 36
https://api.pushshift.io/reddit/comment/search?ids=dlrezc8,dlrawgw,dlrhbkq
มีพารามิเตอร์ค่อนข้างน้อยที่ต้องตรวจสอบ ดังนั้นเรามาเริ่มต้นด้วยการให้ตัวอย่างที่ซับซ้อนกว่านี้และวิธีใช้พารามิเตอร์ข้างต้นกัน เรามาต่อจากตัวอย่างก่อนหน้านี้ด้านบนและขยายการค้นหาด้วยคำหลัก "วิทยาศาสตร์" ของเรา จะเป็นอย่างไรหากเราต้องการค้นหาคำว่า "วิทยาศาสตร์" แต่จำกัดไว้เฉพาะ subreddit เฉพาะเจาะจงล่ะ ด้วยการใช้พารามิเตอร์ subreddit เราสามารถทำได้:
ค้นหาความคิดเห็นล่าสุดที่กล่าวถึงคำว่า "วิทยาศาสตร์" ภายใน subreddit /r/askscience
https://api.pushshift.io/reddit/search/comment/?q=science&subreddit=askscience
ซึ่งจะส่งคืนความคิดเห็น 25 รายการที่มีคำว่า "วิทยาศาสตร์" แต่มาจากย่อย /r/askscience เท่านั้น เนื่องจากเราไม่ได้ขอวิธีการเรียงลำดับแบบเจาะจง ความคิดเห็นล่าสุดจึงถูกส่งกลับ (พารามิเตอร์การเรียงลำดับมีค่าเริ่มต้นเป็น "desc") จะเป็นอย่างไรถ้าเราต้องการให้ความคิดเห็นแรกถึง /r/askscience ที่กล่าวถึงคำว่า "วิทยาศาสตร์"? เราสามารถใช้พารามิเตอร์การเรียงลำดับและขนาดเพื่อจัดการสิ่งนั้น
ค้นหาความคิดเห็นล่าสุดที่กล่าวถึงคำว่า "วิทยาศาสตร์" ภายใน subreddit /r/askscience
https://api.pushshift.io/reddit/search/comment/?q=science&subreddit=askscience&sort=asc&size=1
นี่คือผลลัพธ์:
{
"data": [
{
"author": "MockDeath",
"author_flair_css_class": null,
"author_flair_text": null,
"body": "Knowing more would definitely help. I guess all you can do is find out if they know the basics like you said then take it from there. That COu00b2 has the carbon turned to the isotope carbon14 in the upper atmosphere by cosmic radiation. This causes a specific percentage of carbon in the atmosphere to be carbon14.nnNow we are carbon based life forms and we have to get the carbon we are built out of from some where. We get it from eating plants, and the plants get it from absorbing COu00b2 from the air. So so long as we are alive, we uptake new carbon14. So this gives you a pretty good base line for dating.nnNow to fight arguments against carbon dating you could use the example of how we can see proton collisions in the LHC for sensitivity of our equipment. Nuclear decay is very accurate in how fast it happens, this is why atomic clocks work to a much higher degree of accuracy than other methods of time keeping. Also, you might want to make a general appeal for science. Science works, that is why we have TV's, robots, particle accelerators, satellites, computers, MRI and CAT scanners, nuclear power, etc etc. Scientists are not just willy nilly making shit up, or these kinds of things wouldn't work.",
"created_utc": 1270637661,
"id": "c0nn9iq",
"link_id": "t3_bne3u",
"parent_id": "t1_c0nn5ux",
"score": 2,
"subreddit": "askscience",
"subreddit_id": "t5_2qm4e"
}
],
"metadata": {
"execution_time_milliseconds": 30.52,
"results_returned": 1,
"shards": {
"failed": 0,
"successful": 36,
"total": 36
},
"size": 1,
"sort": "asc",
"sort_type": "created_utc",
"timed_out": false,
"total_results": 134785,
"version": "v3.0"
}
}
จากผลลัพธ์ที่ส่งคืน เราจะเห็นว่าความคิดเห็นแรกที่เคยแสดงกับ /r/askscience ที่กล่าวถึง "วิทยาศาสตร์" เกิดขึ้นในวันที่ยุค 1270637661 ซึ่งแปลเป็นวันพุธที่ 7 เมษายน 2010 เวลา 10:54:21 น. (GMT) มาดูส่วนข้อมูลเมตากันอย่างรวดเร็ว เราจะเห็นว่าเวลาดำเนินการสำหรับการค้นหานี้อยู่ที่ประมาณ 30 มิลลิวินาที มีการค้นหาชาร์ดทั้งหมด 36 ชิ้นและทั้งหมดประสบความสำเร็จ การค้นหาไม่หมดเวลา (พารามิเตอร์ timed_out) ซึ่งถือว่าดี นี่คือแอตทริบิวต์ที่คุณอาจต้องการตรวจสอบว่าคุณใช้ API โดยทางโปรแกรมหรือไม่ เนื่องจากการค้นหาบางอย่างที่ซับซ้อนกว่าอาจหมดเวลาในบางครั้ง ค่าผลรวมทั้งหมดคือ 134,785 สิ่งนี้บอกเราถึงจำนวนความคิดเห็นทั้งหมดใน /r/askscience ที่กล่าวถึงคำว่า science เนื่องจากเราไม่ได้ใช้พารามิเตอร์ก่อนหรือหลัง ตัวเลขนี้จึงแสดงถึงความคิดเห็นทั้งหมดที่มีต่อ /r/askscience
ดำเนินการต่อโดยใช้พารามิเตอร์เพิ่มเติมเพื่อเน้นประสิทธิภาพของ API การค้นหา พารามิเตอร์ก่อนและหลังช่วยให้คุณสามารถจำกัดกรอบเวลาสำหรับการค้นหาโดยให้การประทับเวลายุคสำหรับทั้งสอง อย่างไรก็ตาม API ยังเข้าใจค่าที่เหมือนกับมนุษย์มากขึ้นสำหรับพารามิเตอร์ก่อนและหลัง คุณสามารถใช้ตัวเลขตามด้วยอักขระ s,m,h,d (ซึ่งหมายถึงวินาที นาที ชั่วโมง และวัน) เพื่อจำกัดกรอบเวลาได้เช่นกัน มาดูตัวอย่างกัน
หากคุณต้องการค้นหา "Rome" ใน subreddit /r/askhistorians แต่จำกัดไว้เพียง 30 วันที่ผ่านมา คุณสามารถใช้พารามิเตอร์ after ที่มีค่า 30d (30 วัน)
ค้นหา subreddit /r/askhistorians เพื่อหาความคิดเห็นเกี่ยวกับกรุงโรมภายใน 30 วันที่ผ่านมา
https://api.pushshift.io/reddit/search/comment/?q=rome&subreddit=askhistorians&after=30d
จะเกิดอะไรขึ้นหากมีข่าวล่าสุดเมื่อสามวันก่อน แต่เราต้องการจำกัดหน้าต่างการค้นหาระหว่าง 4 วันที่แล้วถึง 2 วันที่แล้ว เราสามารถใช้ทั้งพารามิเตอร์ก่อนและหลังได้ ในตัวอย่างถัดไป เราจะค้นหาความคิดเห็นที่กล่าวถึงทรัมป์เมื่อ 4 ถึง 2 วันที่แล้ว และเรียงลำดับจากน้อยไปหามาก
ค้นหา subreddits ทั้งหมดสำหรับคำว่า "Trump" และแสดงความคิดเห็นที่เกิดขึ้นระหว่าง 2 ถึง 4 วันที่แล้ว
https://api.pushshift.io/reddit/search/comment/?q=trump&after=4d&before=2d&sort=asc
สมมติว่าคุณต้องการค้นหาความคิดเห็น 150 รายการล่าสุด แต่คุณต้องการเพียงฟิลด์ผู้เขียนและเนื้อหาที่ส่งคืนสำหรับแต่ละความคิดเห็น เมื่อใช้พารามิเตอร์ field คุณสามารถบอก API ว่าคุณต้องการกรองข้อมูลส่วนใด การดำเนินการนี้มีไว้เพื่อช่วยลดแบนด์วิดท์เป็นหลักหากคุณส่งคำขอจำนวนมากและต้องการส่งคืนเฉพาะฟิลด์ที่เจาะจงเท่านั้น
นี่คือตัวอย่างการใช้พารามิเตอร์ fields เพื่อค้นหาความคิดเห็น 150 รายการที่ผ่านมาที่กล่าวถึง "รัฐบาล" และส่งคืนเฉพาะฟิลด์ผู้เขียนและเนื้อหาเท่านั้น:
ค้นหา subreddits ทั้งหมดสำหรับคำว่า "รัฐบาล" และส่งคืนความคิดเห็นโดยมีเพียงเนื้อหาและคีย์ผู้แต่งเท่านั้น
https://api.pushshift.io/reddit/search/comment/?q=government&size=150&fields=body,ผู้เขียน
จากตัวอย่างด้านบนที่ค้นหาคำว่า "วิทยาศาสตร์" ที่ปรากฏครั้งแรกใน subreddit /r/askscience เราพบว่าผู้เขียนความคิดเห็นคือ "MockDeath" จะเป็นอย่างไรถ้าเราอยากได้ความคิดเห็น 100 แรกที่ "MockDeath" ทำกับ Reddit? เราสามารถใช้พารามิเตอร์ author พร้อมกับพารามิเตอร์การเรียงลำดับและขนาด
ค้นหา subreddits ทั้งหมดและรับ 100 ความคิดเห็นแรกที่เคยเขียนโดยผู้ใช้ /u/MockDeath
https://api.pushshift.io/reddit/search/comment/?author=MockDeath&sort=asc&size=100
การรวมเป็นวิธีการที่มีประสิทธิภาพในการให้ข้อมูลสรุปสำหรับการค้นหา เมื่อใช้พารามิเตอร์ aggs เราสามารถสร้างแง่มุมรอบๆ พารามิเตอร์เฉพาะได้อย่างรวดเร็ว และดูว่าข้อมูลเปลี่ยนแปลงไปอย่างไรเมื่อเวลาผ่านไป พารามิเตอร์ aggs สำหรับการค้นหาความคิดเห็นยอมรับค่าต่อไปนี้: author, subreddit, reated_utc และ link_id เราสามารถทำอะไรเจ๋งๆ ได้มากมายโดยใช้พารามิเตอร์นี้ ดังนั้นเรามาดูตัวอย่างกันดีกว่า
สมมติว่าเราต้องการดูความถี่ของการใช้คำว่า "ทรัมป์" เมื่อเวลาผ่านไป เราต้องการดูจำนวนความคิดเห็นที่ถูกโพสต์ต่อชั่วโมงในช่วง 7 วันที่ผ่านมาสำหรับคำนี้ การใช้การรวมกลุ่มและพารามิเตอร์ aggs ทำให้เราสามารถรับข้อมูลนั้นได้อย่างรวดเร็ว นี่คือตัวอย่างการใช้เกณฑ์นี้:
สร้างการรวมเวลาโดยใช้คำว่าทรัมป์เพื่อแสดงจำนวนความคิดเห็นที่กล่าวถึงทรัมป์ในแต่ละชั่วโมงในช่วง 7 วันที่ผ่านมา
https://api.pushshift.io/reddit/search/comment/?q=trump&after=7d&aggs=created_utc&frequency=hour&size=0
เราใช้พารามิเตอร์ความถี่ร่วมกับพารามิเตอร์ aggs เพื่อสร้างที่เก็บข้อมูลรายชั่วโมงเพื่อแสดงจำนวนความคิดเห็นทั้งหมดที่กล่าวถึงทรัมป์ในช่วง 7 วันที่ผ่านมา พารามิเตอร์ขนาดถูกตั้งค่าเป็น 0 เนื่องจากเราสนใจที่จะรับข้อมูลการรวมเท่านั้น ไม่ใช่ข้อมูลความคิดเห็น ข้อมูลการรวมจะถูกส่งกลับในการตอบกลับภายใต้คีย์ aggs -> create_utc นี่คือตัวอย่างส่วนแรกของการส่งคืน:
{
"aggs": {
"created_utc": [
{
"doc_count": 685,
"key": 1502406000
},
{
"doc_count": 1238,
"key": 1502409600
},
{
"doc_count": 1100,
"key": 1502413200
},
ค่า doc_count คือจำนวนความคิดเห็นทั้งหมดที่มีคำว่า "ทรัมป์" ค่าคีย์คือเวลายุคสำหรับที่เก็บข้อมูลนั้น ๆ ในตัวอย่างนี้ ที่เก็บข้อมูลแรกมีเวลายุค 1502406000 ซึ่งตรงกับวันพฤหัสบดีที่ 10 สิงหาคม 2017 เวลา 23:00:00 น. ค่าคีย์นี้คือเวลาเริ่มต้นของที่เก็บข้อมูล ดังนั้นในตัวอย่างนี้ ความคิดเห็น 685 รายการจึงมีคำว่า "ทรัมป์" ระหว่างเวลาวันพฤหัสบดีที่ 10 สิงหาคม 2017 เวลา 23:00:00 น. ถึงวันพฤหัสบดีที่ 10 สิงหาคม 2017 เวลา 12:00 น.: 00.00 น. พารามิเตอร์ความถี่ช่วยให้คุณสร้างบัคเก็ตต่อวินาที นาที ชั่วโมง วัน สัปดาห์ เดือน ปี เมื่อใช้การรวมกลุ่มนี้ คุณสามารถใช้ข้อมูลเพื่อสร้างแผนภูมิ (เช่น Highcharts) และสร้างกราฟกิจกรรมของความคิดเห็นสำหรับคำศัพท์เฉพาะ ผู้เขียน subreddits ฯลฯ นี่เป็นเครื่องมือวิเคราะห์ข้อมูลที่ทรงพลังอย่างยิ่ง
จะเป็นอย่างไรหากคุณไม่เพียงต้องการได้รับความถี่ของคำแสดงความคิดเห็นที่เฉพาะเจาะจงในช่วงเวลาหนึ่ง แต่ยังต้องการดูว่า subreddits ใดที่ได้รับความนิยมมากที่สุดสำหรับคำที่กำหนดในช่วงเวลานั้นด้วย ต่อไปนี้เป็นตัวอย่างการใช้พารามิเตอร์ aggs เพื่อแสดงว่า subreddits ใดมีกิจกรรมมากที่สุดสำหรับคำเฉพาะ
สร้างการรวม subreddit โดยใช้คำว่า ทรัมป์ เพื่อแสดง subreddits อันดับต้นๆ ที่กล่าวถึงทรัมป์ในช่วง 7 วันที่ผ่านมา
https://api.pushshift.io/reddit/search/comment/?q=trump&after=7d&aggs=subreddit&size=0
นี่คือตัวอย่างผลลัพธ์:
{
"aggs": {
"subreddit": [
{
"bg_count": 66,
"doc_count": 44,
"key": "lovetrumpshaters",
"score": 0.6666666666666666
},
{
"bg_count": 20,
"doc_count": 9,
"key": "Denmark_Uncensored",
"score": 0.45
},
{
"bg_count": 51,
"doc_count": 16,
"key": "WhoRedditHatesNow",
"score": 0.3137254901960784
},
การรวม subreddit จะส่งคืนจำนวนความคิดเห็นทั้งหมดใน subreddit นั้นที่กล่าวถึงคำค้นหา (doc_count) รวมถึงจำนวนความคิดเห็นทั้งหมดที่ทำกับ subreddit นั้นในช่วงเวลานั้น (bg_count) สิ่งนี้ไม่เพียงแต่จะแสดงให้คุณเห็นว่า subreddit ใดที่กล่าวถึง Trump บ่อยที่สุด แต่ยังให้ผลลัพธ์ที่เป็นมาตรฐานเพื่อให้คุณเห็นว่าความคิดเห็นของ subreddit นั้นมีข้อความค้นหากี่เปอร์เซ็นต์ หากคุณเพียงจัดอันดับ subreddits ที่ subreddits กล่าวถึงคำค้นหา "trump" บ่อยที่สุด ผลลัพธ์ที่ได้ก็จะมีอคติต่อ subreddits ที่มีกิจกรรมโดยทั่วไปมากที่สุดเช่นกัน เมื่อใช้วิธีการนี้ คุณจะเห็นทั้งจำนวนดิบและข้อมูลที่ทำให้เป็นมาตรฐาน
API ยังอนุญาตให้มีการรวมกลุ่มบน link_id ซึ่งเป็นอีกวิธีที่มีประสิทธิภาพมากในการดูว่าการส่งรายการใดได้รับความนิยมมากที่สุดโดยพิจารณาจากข้อความค้นหาเฉพาะ ดำเนินการต่อด้วยตัวอย่างข้างต้น เราจะให้สถานการณ์ที่เป็นประโยชน์อย่างยิ่ง ภายใน 24 ชั่วโมงที่ผ่านมา มีเรื่องราวสำคัญมากมายเกี่ยวกับโดนัลด์ ทรัมป์ หลุดออกมา คุณต้องการใช้ API เพื่อดูว่าการส่งใดบ้างที่เกี่ยวข้องกับทรัมป์ โดยพิจารณาจากจำนวนความคิดเห็นที่กล่าวถึงเขาในการส่ง เราสามารถใช้พารามิเตอร์ aggs ได้อีกครั้งและตั้งค่าเป็น link_id เพื่อรับข้อมูลนี้อย่างรวดเร็ว เรามาดำเนินการกับอีกตัวอย่างหนึ่ง:
แสดงการส่งที่ทำภายใน 24 ชั่วโมงที่ผ่านมาซึ่งพูดถึงทรัมป์บ่อยครั้งในความคิดเห็น
https://api.pushshift.io/reddit/search/comment/?q=trump&after=24h&aggs=link_id&size=0
สิ่งนี้จะกลับมาภายใต้คีย์ aggs -> link_id ซึ่งเป็นอาร์เรย์ของอ็อบเจ็กต์การส่ง doc_count จะแสดงจำนวนความคิดเห็นทั้งหมดสำหรับการส่งแต่ละครั้งที่กล่าวถึงคำค้นหา ("trump") และ bg_count จะแสดงจำนวนความคิดเห็นทั้งหมดที่มีให้กับการส่งนั้น นี่เป็นวิธีที่ดีเยี่ยมในการค้นหาการส่งที่ "ร้อนแรง" อย่างรวดเร็วโดยอิงตามคำค้นหาหรือวลีที่ต้องการ
API ยังช่วยให้คุณสร้างการรวมกลุ่มของผู้เขียน เพื่อให้คุณสามารถดูได้อย่างรวดเร็วว่าผู้เขียนคนใดแสดงความคิดเห็นมากที่สุดสำหรับคำค้นหาที่เฉพาะเจาะจง นี่คือตัวอย่างการใช้การรวมผู้เขียน:
แสดงผู้เขียนอันดับต้นๆ ที่พูดถึงคำว่า "ทรัมป์" ในช่วง 24 ชั่วโมงที่ผ่านมา
https://api.pushshift.io/reddit/search/comment/?q=trump&after=24h&aggs=author&size=0
{
"aggs": {
"author": [
{
"doc_count": 605,
"key": "grrrrreat"
},
{
"doc_count": 329,
"key": "AutoModerator"
},
{
"doc_count": 168,
"key": "autotldr"
},
{
"doc_count": 73,
"key": "SnapshillBot"
},
การรวมผู้เขียนจะแสดงให้คุณเห็นว่าผู้เขียนคนใดแสดงความคิดเห็นที่มีคำค้นหาเฉพาะเจาะจงมากที่สุด จากตัวอย่างข้างต้น ผู้เขียนชั้นนำหลายคนที่พูดถึงคำว่า "ทรัมป์" จริงๆ แล้วเป็นบอท
เมื่อใช้พารามิเตอร์ aggs คุณสามารถรวมการรวมหลายรายการและรับข้อมูลแง่มุมจำนวนมากสำหรับคำเฉพาะได้ จากตัวอย่างข้างต้น เราสามารถรวมการโทรทั้งหมดเข้าเป็นการโทรครั้งเดียว และแสดงการส่งสูงสุดในช่วง 24 ชั่วโมงที่ผ่านมา ความถี่ของการแสดงความคิดเห็นต่อชั่วโมงที่กล่าวถึง Trump ผู้เขียนอันดับต้น ๆ โพสต์เกี่ยวกับ Trump และ subreddits อันดับต้น ๆ ที่มีความคิดเห็น กล่าวถึงทรัมป์
แสดงการรวมกลุ่มของผู้แต่ง การส่งผลงาน subreddits และความถี่ของเวลาสำหรับคำว่า "ทรัมป์" ในช่วง 24 ชั่วโมงที่ผ่านมา
https://api.pushshift.io/reddit/search/comment/?q=trump&after=24h&aggs=author,link_id,subreddit,created_utc&frequency=hour&size=0
หากต้องการค้นหาการส่ง ให้ใช้ตำแหน่งข้อมูล https://api.pushshift.io/reddit/search/submission/ เรามาเริ่มด้วยตัวอย่างเล็กๆ น้อยๆ แล้วอธิบายพารามิเตอร์ต่างๆ ที่พร้อมใช้งานเมื่อใช้ตำแหน่งข้อมูลนี้ สำหรับการค้นหาแบบง่าย พารามิเตอร์ q ใช้เพื่อค้นหาคำหรือวลีเฉพาะ นี่คือตัวอย่าง:
ค้นหาผลงานล่าสุดที่กล่าวถึงคำว่า "วิทยาศาสตร์"
https://api.pushshift.io/reddit/search/submission/?q=science
การดำเนินการนี้จะค้นหาผลงานล่าสุดที่มีคำว่าวิทยาศาสตร์ในชื่อเรื่องหรือข้อความในตัว การค้นหาไม่คำนึงถึงขนาดตัวพิมพ์ ดังนั้นการค้นหาจะค้นหาสิ่งที่เกิดขึ้นทางวิทยาศาสตร์โดยไม่คำนึงถึงการใช้อักษรตัวพิมพ์ใหญ่ API มีค่าเริ่มต้นในการจัดเรียงตามการส่งล่าสุดก่อน หลังจากรันการค้นหานี้ ผลลัพธ์ 25 รายการจะถูกส่งกลับ นี่คือขนาดเริ่มต้นสำหรับการค้นหาและสามารถเปลี่ยนแปลงได้โดยใช้พารามิเตอร์ขนาด ซึ่งจะกล่าวถึงรายละเอียดเพิ่มเติมในส่วนพารามิเตอร์ ข้อมูลจะถูกส่งกลับในรูปแบบ JSON และผลลัพธ์จะรวมอยู่ในคีย์ "data"
มีพารามิเตอร์เพิ่มเติมมากมายที่สามารถนำมาใช้เมื่อดำเนินการค้นหาการส่ง ตอนนี้เรามาดูแต่ละข้อแล้วยกตัวอย่างสำหรับแต่ละรายการ
พารามิเตอร์ | คำอธิบาย | ค่าเริ่มต้น | ค่าที่ยอมรับ |
---|---|---|---|
รหัส | รับการส่งที่เฉพาะเจาะจงผ่านรหัสของพวกเขา | ไม่มี | รหัส base36 ที่คั่นด้วยเครื่องหมายจุลภาค |
ถาม | คำค้นหา. จะค้นหาทุกช่องที่เป็นไปได้ | ไม่มี | สตริง / สตริงที่ยกมาสำหรับวลี |
ถาม:ไม่ | ยกเว้นคำค้นหา จะยกเว้นข้อกำหนดเหล่านี้ | ไม่มี | สตริง / สตริงที่ยกมาสำหรับวลี |
ชื่อ | ค้นหาเฉพาะฟิลด์หัวเรื่องเท่านั้น | ไม่มี | สตริง / สตริงที่ยกมาสำหรับวลี |
หัวเรื่อง:ไม่ | ไม่รวมคำค้นหาจากชื่อเรื่อง จะยกเว้นข้อกำหนดเหล่านี้ | ไม่มี | สตริง / สตริงที่ยกมาสำหรับวลี |
ข้อความของตัวเอง | ค้นหาฟิลด์ selftext เท่านั้น | ไม่มี | สตริง / สตริงที่ยกมาสำหรับวลี |
ข้อความของตัวเอง:ไม่ | ไม่รวมข้อความค้นหาจากข้อความของตัวเอง จะยกเว้นข้อกำหนดเหล่านี้ | ไม่มี | สตริง / สตริงที่ยกมาสำหรับวลี |
ขนาด | จำนวนผลลัพธ์ที่จะส่งคืน | 25 | จำนวนเต็ม <= 500 |
สาขา | หนึ่งช่องเฉพาะสำหรับการส่งคืน (คั่นด้วยเครื่องหมายจุลภาค) | ทุกสาขา | สตริงหรือสตริงที่คั่นด้วยเครื่องหมายจุลภาค (อนุญาตให้มีหลายค่า) |
เรียงลำดับ | เรียงลำดับผลลัพธ์ตามลำดับเฉพาะ | "รายละเอียด" | "ASC", "รายละเอียด" |
sort_type | จัดเรียงตามคุณลักษณะเฉพาะ | "created_utc" | "คะแนน", "num_comments", "created_utc" |
aggs | สรุปการรวมส่งคืน | ไม่มี | ["ผู้เขียน", "link_id", "created_utc", "subreddit"] |
ผู้เขียน | จำกัดเฉพาะผู้เขียนรายใดรายหนึ่ง | ไม่มี | สตริงหรือสตริงที่คั่นด้วยเครื่องหมายจุลภาค (อนุญาตให้มีหลายค่า) |
subreddit | จำกัดเฉพาะ subreddit เฉพาะ | ไม่มี | สตริงหรือสตริงที่คั่นด้วยเครื่องหมายจุลภาค (อนุญาตให้มีหลายค่า) |
หลังจาก | ส่งคืนผลลัพธ์หลังจากวันที่นี้ | ไม่มี | ค่ายุคหรือจำนวนเต็ม + "s,m,h,d" (เช่น 30d เป็นเวลา 30 วัน) |
ก่อน | ส่งคืนผลลัพธ์ก่อนวันที่นี้ | ไม่มี | ค่ายุคหรือจำนวนเต็ม + "s,m,h,d" (เช่น 30d เป็นเวลา 30 วัน) |
คะแนน | จำกัดผลลัพธ์ตามคะแนน | ไม่มี | จำนวนเต็ม หรือ > x หรือ < x (เช่น คะแนน=>100 หรือคะแนน=<25) |
num_comments | จำกัดผลลัพธ์ตามจำนวนความคิดเห็น | ไม่มี | จำนวนเต็ม หรือ > x หรือ < x (เช่น num_comments=>100) |
เกิน_18 | จำกัดเฉพาะเนื้อหา nsfw หรือ sfw | อนุญาตทั้งสองอย่าง | "จริง" หรือ "เท็จ" |
is_video | จำกัดเฉพาะเนื้อหาวิดีโอ | อนุญาตทั้งสองอย่าง | "จริง" หรือ "เท็จ" |
ล็อค | ส่งคืนเธรดที่ถูกล็อคหรือปลดล็อคเท่านั้น | อนุญาตทั้งสองอย่าง | "จริง" หรือ "เท็จ" |
เหนียว | ส่งกลับเนื้อหาที่ติดหนึบหรือไม่ติดหนึบเท่านั้น | อนุญาตทั้งสองอย่าง | "จริง" หรือ "เท็จ" |
สปอยเลอร์ | ไม่รวมหรือรวมสปอยเลอร์เท่านั้น | อนุญาตทั้งสองอย่าง | "จริง" หรือ "เท็จ" |
การประกวด_โหมด | ไม่รวมหรือรวมการส่งโหมดเนื้อหา | อนุญาตทั้งสองอย่าง | "จริง" หรือ "เท็จ" |
ความถี่ | ใช้กับพารามิเตอร์ aggs เมื่อตั้งค่าเป็น create_utc | ไม่มี | "วินาที", "นาที", "ชั่วโมง", "วัน" |
ข้อมูลเมตา | แสดงข้อมูลเมตาเกี่ยวกับการสืบค้น | เท็จ | ["จริง", "เท็จ"] |
การโทรนี้มีประโยชน์มากเมื่อใช้ร่วมกับ API ของ Reddit เมื่อมีการส่งจำนวนมากซึ่งมีความคิดเห็นนับพัน มักจะเป็นเรื่องยากที่จะได้รับรหัสความคิดเห็นทั้งหมดสำหรับการส่ง การเรียกนี้จะส่งคืนอาร์เรย์ของรหัสความคิดเห็นเมื่อมีการส่งรหัสการส่งไปให้ จุดสิ้นสุดคือ: https://api.pushshift.io/reddit/submission/comment_ids/{รหัสการส่ง base36}
การโทรนี้จะส่งคืนคีย์ข้อมูลพร้อมอาร์เรย์รหัสความคิดเห็น จากนั้นคุณสามารถดึงข้อมูลความคิดเห็นจริงได้จาก API นี้หรือ Reddit API หากการส่งยังค่อนข้างใหม่ ควรใช้ Reddit API เพื่อรับคะแนนล่าสุดสำหรับความคิดเห็น
ดึงรหัสความคิดเห็นทั้งหมดสำหรับวัตถุการส่ง
https://api.pushshift.io/reddit/submission/comment_ids/6uey5x
จุดสิ้นสุด | คำอธิบาย | สถานะ |
---|---|---|
/reddit/ค้นหา/แสดงความคิดเห็น/ | ค้นหาความคิดเห็น Reddit | คล่องแคล่ว |
/reddit/ค้นหา/ส่ง/ | ค้นหาการส่ง Reddit | คล่องแคล่ว |
/reddit/submission/comment_ids/{base36-submission-id} | รับรหัสความคิดเห็นสำหรับวัตถุการส่ง | คล่องแคล่ว |
/reddit/analyze/user/{ชื่อผู้เขียน} | วิเคราะห์กิจกรรมของผู้ใช้ Reddit | ในการพัฒนา |
/reddit/term/ความถี่/{term} | วิเคราะห์คำศัพท์ตามกิจกรรม | ในการพัฒนา |
/reddit/ค้นหา/ทั้งหมด/ | ค้นหาทั้งความคิดเห็นและการส่ง | ในการพัฒนา |
/reddit/เทรนด์/คน | ค้นหาว่าใครกำลังมาแรงใน Reddit | ในการพัฒนา |
/reddit/search/links | ค้นหาลิงก์ที่เกี่ยวข้องที่แชร์บน Reddit | ในการพัฒนา |