Dynamic Links

คุณลักษณะลิงก์แบบไดนามิกของ Google หนังสือจะช่วยให้คุณสามารถสร้างลิงก์ที่ปรับแต่งได้และน่าเชื่อถือยิ่งขึ้นไปยัง Google หนังสือจากเว็บไซต์ของคุณ ตัวอย่างเช่น เครื่องมือนี้จะช่วยให้คุณสามารถสร้างลิงก์ที่ "อัจฉริยะ" ซึ่งจะปรากฏขึ้นเฉพาะเมื่อหนังสืออยู่ในดัชนีของเรา หรือแสดงลิงก์ที่บอกผู้ใช้ว่าจะสามารถดูตัวอย่างหนังสือบน Google หนังสือได้หรือไม่ คุณลักษณะลิงก์แบบไดนามิกยังช่วยให้คุณรวมภาพขนาดย่อไว้ในลิงก์ไปที่ Google หนังสือได้ด้วย เอกสารนี้มีไว้เพื่อช่วยให้คุณเพิ่มฟังก์ชันนี้ในเว็บไซต์ได้อย่างรวดเร็ว

หมายเหตุ: ฟีเจอร์นี้มีชื่อเดิมว่า Book Viewability API

วิซาร์ดการแสดงตัวอย่างเป็นเครื่องมือที่สร้างมาที่ด้านบนของลิงก์แบบไดนามิก ซึ่งช่วยให้คุณลิงก์ไปยังตัวอย่างหนังสือจากเว็บไซต์ได้ง่ายขึ้นเพียงคัดลอกโค้ดเพียงไม่กี่บรรทัด เอกสารนี้มีไว้สำหรับนักพัฒนาซอฟต์แวร์ขั้นสูงที่ต้องการปรับแต่งวิธีการลิงก์กับ Book Search

เนื้อหา

  1. ผู้ชม
  2. คำศัพท์เกี่ยวกับการค้นหาหนังสือ
  3. บทนำ
  4. หลักเกณฑ์การใช้แบรนด์
  5. API ฝั่งไคลเอ็นต์
    1. รูปแบบ URL ของคำขอ
    2. รูปแบบผลลัพธ์ JSON
  6. โหมดซิงโครนัสและโหมดอะซิงโครนัส
  7. คำถามที่พบบ่อย
  8. ตัวอย่างโค้ด

ผู้ชม

เอกสารประกอบเกี่ยวกับลิงก์แบบไดนามิกมีไว้สำหรับนักเขียนโปรแกรมที่ต้องการเขียนเว็บแอปพลิเคชันที่ลิงก์ไปยังหนังสือภายใน Google หนังสือ เอกสารนี้จะถือว่าคุณคุ้นเคยกับโปรโตคอล HTTP และ JavaScript พื้นฐาน

คำศัพท์เกี่ยวกับการค้นหาหนังสือ

Google หนังสือเคารพในข้อจำกัดด้านลิขสิทธิ์ในท้องถิ่นของผู้ใช้ ดังนั้น หน้าตัวอย่างหรือการดูทั้งเล่มของหนังสือบางเล่มไม่สามารถให้บริการได้ในบางพื้นที่ การมองเห็นโฆษณามีคลัสเตอร์อยู่ในคลาสต่อไปนี้

มุมมองแบบเต็ม
ดูหนังสือได้ทั้งเล่ม หนังสือเหล่านี้อาจเป็นสาธารณสมบัติ
การดูที่จำกัด
ดูส่วนหนึ่งของหนังสือได้ หนังสือเล่มนี้อยู่ภายใต้ลิขสิทธิ์และ Google หนังสือได้รับอนุญาตให้กำหนดให้ผู้ใช้สามารถเข้าถึงหน้าเหล่านี้ได้ หนังสือเหล่านี้แตกต่างจากหนังสือแบบมุมมองตัวอย่างตรงที่ผู้ใช้อาจดูทั้งหน้าได้
ดูตัวอย่างและไม่มีการแสดงตัวอย่าง
ผู้ใช้จะเห็นเฉพาะหน้า "เกี่ยวกับหนังสือ" โดยส่วนใหญ่แล้วจะมีเพียงข้อความสั้นๆ ที่ตัดตอนมาจากหนังสือเท่านั้น หนังสือเล่มนี้ยังไม่ได้รับการสแกนหรืออยู่ภายใต้ลิขสิทธิ์ และ Google หนังสือไม่ได้รับสิทธิ์ให้แสดง "ตัวอย่างข้อมูล" มากกว่า 2-3 รายการที่เกี่ยวข้องกับข้อความค้นหาของผู้ใช้

บทนำ

เอกสารเกี่ยวกับลิงก์แบบคงที่จะอธิบายวิธีการที่ง่ายมากในการสร้าง URL ไปยังหน้าของหนังสือใดเล่มหนึ่งบน Google หนังสือ อย่างไรก็ตาม มีบางกรณีที่หนังสือเล่มใดเล่มหนึ่งไม่ได้อยู่ในดัชนีของ Google หนังสือ หรือผู้ใช้สามารถดูตัวอย่างในสถานที่ตั้งทางภูมิศาสตร์หนึ่งๆ ไม่ได้ เนื่องจากลิงก์แบบคงที่เป็นแบบ "ตาบอด" บางครั้งลิงก์จึงไม่มีการทำงานได้อย่างที่ควรจะเป็น

ลิงก์แบบไดนามิกเป็นอีกทางเลือกหนึ่งแบบเป็นโปรแกรมของฝั่งไคลเอ็นต์ในการค้นหาการมองเห็นโฆษณาของหนังสือโดยใช้ JavaScript ซึ่งจะช่วยให้คุณสามารถรวมลิงก์ที่เชื่อถือได้และคาดเดาได้มากยิ่งขึ้นไปยัง Book Search ซึ่งจะนำไปสู่ประสบการณ์ที่สอดคล้องกันมากขึ้นสำหรับผู้ใช้ของคุณ เนื่องจากความสามารถในการแสดงตัวโฆษณาแตกต่างกันไปตามตำแหน่งของผู้ใช้ปลายทาง อินเทอร์เฟซลิงก์แบบไดนามิกจึงไม่ได้ออกแบบมาเพื่อข้อความค้นหาฝั่งเซิร์ฟเวอร์หรือออฟไลน์

หากต้องการทราบว่าลิงก์แบบไดนามิกทำอะไรได้บ้าง ให้ข้ามไปที่ตัวอย่างโค้ดที่ท้ายเอกสารนี้

หลักเกณฑ์การใช้แบรนด์

เมื่อแสดงผลลิงก์แบบไดนามิก คุณต้องปฏิบัติตามหลักเกณฑ์การใช้แบรนด์ที่มีผลบังคับใช้กับกลุ่ม Google Books API โดยเฉพาะอย่างยิ่ง

  • คุณต้องแสดงที่มาและลิงก์ไปยัง Google หนังสือ
  • คุณต้องใช้ปุ่มแสดงตัวอย่างของ Google ที่ได้รับอนุมัติเท่านั้นเมื่อลิงก์กับการแสดงตัวอย่างใน Google Books
  • ลิงก์ข้อความ ปุ่ม เอกสารประกอบ หรือข้อความอธิบายควรเป็นไปตามแบบแผนการตั้งชื่อที่ได้รับอนุมัติ ตัวอย่างเช่น คุณไม่ควรใช้คำกริยา "ดาวน์โหลด" หรือ "อ่าน" เมื่อลิงก์ไปยังการแสดงตัวอย่างของ Google หนังสือ เนื่องจากเฉพาะผลงานที่เป็นสาธารณสมบัติเท่านั้นที่สามารถดาวน์โหลดได้ทั้งหมด

ตัวอย่างการสร้างแบรนด์

Freakonomics: Rogue Economist สำรวจทุกแง่มุมที่ซ่อนอยู่
โดย Steven Levitt และ Stephen Dubner

ส่วนตัวอย่างที่ตอนท้ายของเอกสารนี้มีตัวอย่างเพิ่มเติมซึ่งเป็นไปตามหลักเกณฑ์การใช้แบรนด์ปัจจุบัน

API ฝั่งไคลเอ็นต์

หัวใจสำคัญของลิงก์แบบไดนามิกฝั่งไคลเอ็นต์คือรูปแบบ URL ที่ช่วยให้นักพัฒนาซอฟต์แวร์สร้าง URL ที่ขอข้อมูลในหนังสืออย่างน้อย 1 เล่มและส่งคำขอไปยัง Google Books โดยใช้แท็ก <script>

ตัวอย่างไวยากรณ์
<script src="https://books.google.com/books?bibkeys=ISBN:0451526538&jscmd=viewapi&callback=mycallback"></script>

รูปแบบคำขอ

รูปแบบของ URL คล้ายกับไวยากรณ์ของ URL ที่ใช้เพื่อลิงก์ไปยังหนังสือ แต่ช่องรหัสหนังสืออาจมีรหัสหนังสือที่คั่นด้วยคอมมาหลายรายการ และมีพารามิเตอร์ "jscmd" และ "callback" เพิ่มเติม อาจมีอาร์กิวเมนต์เพิ่มเติมเพื่อควบคุมตัวกรองการมองเห็นโฆษณาก็ได้

ลิงก์แบบไดนามิกรองรับวิธีการระบุหนังสือหลายวิธี ได้แก่ ISBN, หมายเลข OCLC และแป้น LCCN API อนุญาตให้มีการค้นหาแบบกลุ่มที่มีขนาดไม่เกินขนาดสูงสุดของคำขอ GET

ISBN
&bibkeys=ISBN:0451526538 (API รองรับทั้ง ISBN 10 และ 13)
ศูนย์หอสมุดคอมพิวเตอร์ออนไลน์
&bibkeys=OCLC:36792831
LCCN
&bibkeys=LCCN:96072233

รูปแบบผลการค้นหา JSON

การตอบกลับจากการเรียกครั้งนี้จะเป็นข้อมูลเกี่ยวกับหนังสือที่ขอซึ่งแสดงผลเป็นออบเจ็กต์ JSON อย่างน้อย 1 รายการ ออบเจ็กต์ JSON ใช้โครงสร้างต่อไปนี้

JsonSearchResult {
    string bib_key;
    string info_url;
    string preview_url;
    string thumbnail_url;
    string preview;
};

ช่องเหล่านี้จะมีข้อมูลต่อไปนี้

bib_key
ตัวระบุที่ใช้ค้นหาหนังสือเล่มนี้
info_url
URL ไปยังหน้าภายใน Google Books ที่มีข้อมูลในหนังสือ (หน้าเกี่ยวกับหนังสือเล่มนี้)
preview_url
URL ไปยังตัวอย่างหนังสือ ซึ่งจะนำผู้ใช้ไปยังหน้าปกของหนังสือโดยตรง หากมีเฉพาะหนังสือที่อยู่ในมุมมองแบบประโยคตัวอย่างหรือหนังสือที่ไม่มีการแสดงตัวอย่างตามคำขอ ระบบจะไม่แสดงผล URL ตัวอย่าง
thumbnail_url
URL ไปยังภาพขนาดย่อของปกหนังสือ
พรีวิว
ค่าที่ระบุสถานะความสามารถในการแสดงตัวโฆษณาของหนังสือ ซึ่งได้แก่ full (สำหรับหนังสือทั้งเล่ม), partial (สำหรับหนังสือที่มีตัวอย่างแบบจำกัด) หรือ noview (สำหรับหนังสือตัวอย่างหรือหนังสือที่ไม่มีตัวอย่าง)
แบบฝังได้
บูลีนนี้คือ true หากสามารถฝังหนังสือลงในหน้าของบุคคลที่สามโดยใช้โปรแกรมดูที่ฝังของการค้นหาหนังสือ

การตอบกลับเป็นออบเจ็กต์ JSON ที่มี 2 ช่อง ซึ่งก็คือ "books" ซึ่งมีค่าของแมปออบเจ็กต์หนังสือ และ "options" ที่มีรายการตัวเลือกที่เปิดใช้สำหรับคำขอนั้น หากไม่ได้ระบุตัวเลือก อาจละช่อง "ตัวเลือก" ในการตอบกลับได้ เช่น

Request:
https://books.google.com/books?jscmd=viewapi&bibkeys=0596000278,00-invalid-isbn,ISBN0765304368,0439554934&callback=ProcessGBSBookInfo

Response:
ProcessGBSBookInfo({
    "0596000278":{
        "bib_key":"0596000278",
        "info_url":"https://books.google.com/books?id=ezqe1hh91q4C&source=gbs_ViewAPI",
        "preview_url":"https://books.google.com/books?id=ezqe1hh91q4C&printsec=frontcover&sig=zSQ5gwlX1NZl_24M86KS8Rbj33Q&source=gbs_ViewAPI",
        "thumbnail_url":"https://books.google.com/books?id=ezqe1hh91q4C&pg=PR3&img=1&zoom=5&sig=bBmzIAIiCtMcM7Ii7TUHycqqEWg",
        "preview":"partial"
    },
    "ISBN0765304368":{
        "bib_key":"ISBN0765304368",
        "info_url":"https://books.google.com/books?id=gfg13CM_kU8C&source=gbs_ViewAPI",
        "preview_url":"https://books.google.com/books?id=gfg13CM_kU8C&printsec=frontcover&sig=jIrSb_SkcQRhy_VvtnKbTXjmvos&source=gbs_ViewAPI",
        "thumbnail_url":"https://books.google.com/books?id=gfg13CM_kU8C&pg=PP1&img=1&zoom=5&sig=LsTwGVAsy_qWYMPM6HVDTPAMokg",
        "preview":"full"
    },
    "0439554934":{
        "bib_key":"0439554934",
        "info_url":"https://books.google.com/books?id=iwiYGwAACAAJ&source=gbs_ViewAPI",
        "preview_url":"https://books.google.com/books?id=iwiYGwAACAAJ&source=gbs_ViewAPI",
        "thumbnail_url":"https://books.google.com/books?id=iwiYGwAACAAJ&printsec=frontcover&img=1&zoom=5&sig=_L6ySKDAs-8gNK28c3NyFdO22ZM",
        "preview":"noview"}
});

จากนั้นนักพัฒนาซอฟต์แวร์อาจเปลี่ยนแปลงเนื้อหาและลักษณะของหน้าเว็บของตนโดยอิงตามผลลัพธ์ JSON ที่ดึงมาจากเซิร์ฟเวอร์ GBS ในขณะนี้ GBS ไม่มีไลบรารีสำหรับการแก้ไข DOM เพื่อทำเช่นนี้

พารามิเตอร์และช่องเพิ่มเติม

jscmd
คำขอไปยัง Google Books
Callback
ชื่อฟังก์ชัน JavaScript ที่เราส่งกลับไปยัง

โหมดซิงโครนัสกับโหมดอะซิงโครนัส

โหมดอะซิงโครนัส

ในโหมดอะซิงโครนัส นักพัฒนาซอฟต์แวร์จะวางแท็ก <script> ใน <head> ของเอกสาร และสร้าง URL ที่มีตัวระบุทั้งหมดที่จำเป็นสำหรับการแสดงผลหน้าเว็บ รับข้อมูลจากการเรียกในตัวแปร วิธีนี้จะช่วยให้ข้อมูลของหนังสือพร้อมใช้งานกับส่วนที่เหลือของเอกสาร และสามารถเข้าถึงได้ทันทีใน HTML และ JavaScript

โหมดซิงโครนัส

ในโหมดซิงโครนัส นักพัฒนาซอฟต์แวร์จะใช้ URL ที่อยู่ตรงกลางของ HTML <body> ซึ่งการตอบสนองจะจัดการโดยใช้ JavaScript Callback

คำถามที่พบบ่อย

ถาม: ฉันต้องมีคีย์ API หรือสิทธิ์อื่นๆ เพื่อใช้ลิงก์แบบไดนามิกไหม
ตอบ: ไม่จำเป็นต้องมีคีย์ API หรือการให้สิทธิ์อื่นๆ เพื่อใช้ลิงก์แบบไดนามิก เริ่มต้นด้วยการคัดลอกและวางตัวอย่าง 1 ตัวอย่างของเราและเริ่มปรับแต่ง
ถาม: แล้วเบราว์เซอร์ที่ไม่รองรับ JavaScript หรือปิดใช้ JavaScript แล้วล่ะ
ตอบ: ไม่มีวิธีทดสอบว่า Google Books มีหนังสือหรือไม่เมื่อเบราว์เซอร์ของผู้ใช้ไม่ได้เปิดใช้ JavaScript เราขอแนะนำให้ใช้โครงสร้างลิงก์แบบคงที่ของ Google Books สำหรับเบราว์เซอร์ที่ไม่มี JavaScript แต่โปรดทราบว่าคุณไม่ทราบล่วงหน้าว่า Google Books มีหนังสือที่คุณลิงก์หรือไม่
ถาม: ฉันสามารถค้นหาหนังสือได้กี่เล่มในครั้งเดียว
ตอบ: จำนวนหนังสือที่คุณสามารถค้นหาได้นั้นถูกจำกัดด้วยความยาวของคำขอ GET เท่านั้น ใน Microsoft Internet Explorer ความยาว URL สูงสุด (2,083 อักขระ) จะจำกัดความยาวของคำขอ GET
ถาม: Google Books แสดงผลการค้นหาสำหรับหนังสือเมื่อสักครู่นี้ เหตุใดจึงไม่มีการแสดงผลลัพธ์ตอนนี้
คำตอบ: เนื่องจากนักพัฒนาซอฟต์แวร์มักจะส่งคำขอเป็นจำนวนมาก คุณจึงอาจต้องให้เคล็ดลับเพื่อความปลอดภัยที่มีอยู่ใน Google Books โดยไม่ตั้งใจ หากต้องการตรวจสอบว่าเกิดปัญหานี้ขึ้นหรือไม่ ให้ดูว่า API แสดงผลอะไรบ้าง หากเป็นคำขอที่จะกรอก CAPTCHA แสดงว่าคุณออกข้อความค้นหามากเกินไป เราขอแนะนำให้เข้าสู่ระบบ Google หนังสือแล้วลองอีกครั้ง
คำถาม: แล้วความเป็นส่วนตัวล่ะ
คำตอบ: Google จะได้รับข้อมูลบันทึกของเซิร์ฟเวอร์ที่ระบุตัวบุคคลไม่ได้ในการตอบคำถามเกี่ยวกับการมองเห็นโฆษณาของหนังสือ เราให้ความสำคัญกับความเป็นส่วนตัวของผู้ใช้อย่างจริงจังและจัดการข้อมูลดังกล่าวตามที่อธิบายไว้ในนโยบายความเป็นส่วนตัวของเรา หากคุณให้บริการที่มีความสามารถในการแสดงหนังสือแก่ผู้ใช้ คุณอาจต้องแจ้งให้ผู้ใช้ทราบว่าบริการดังกล่าวจะส่งการค้นหาไปยัง Google ผ่านลิงก์แบบไดนามิกด้วย

ตัวอย่างโค้ด

ส่วนนี้จะแสดงตัวอย่างที่แสดงให้เห็นวิธีต่างๆ ในการใช้ลิงก์แบบไดนามิก คุณคลิกตัวอย่างใดก็ได้เพื่อดูการทำงาน หากต้องการดูโค้ดที่สำคัญ ให้ "ดูแหล่งที่มา" จากเบราว์เซอร์

  • ปุ่มแสดงตัวอย่างสำหรับหน้าหนังสือ
    หากคุณต้องการใช้ลิงก์แบบไดนามิกเพื่อเพิ่มปุ่ม "แสดงตัวอย่าง" ให้กับหน้าหนังสือแต่ละหน้าในเว็บไซต์ จะแสดงตัวอย่างให้คุณด้านล่างนี้ การปรับใช้งานนี้ใช้การเรียกพร้อมกันไปยัง Google Books
  • เรื่องรออ่านในหลักสูตร
    ตัวอย่างนี้แสดงรายการหนังสือทั่วไปสำหรับหลักสูตรวิชาการ เราใช้การเรียกแบบพร้อมกันครั้งเดียวเพื่อลิงก์หน้าหนังสือใน Google Books เพิ่มภาพหน้าปก และระบุหน้าตัวอย่างที่พร้อมให้บริการ
  • รายการหนังสือสำรอง
    คล้ายกับตัวอย่างก่อนหน้านี้ โดยเป็นการเพิ่มลิงก์ไปยัง Book Search โดยใช้ Callback ของ API แบบอะซิงโครนัส
  • AJAX แบบอินเทอร์แอกทีฟ
    คุณอาจสนใจใช้ลิงก์แบบไดนามิกในแอปพลิเคชัน AJAX แบบอินเทอร์แอกทีฟสูง ตัวอย่างนี้แสดงวิธีโทรออกหลายรายการโดยไม่ต้องรีเฟรชหน้า