Wikimedia Commons API metadata: manifest license và tác giả
Wikimedia Commons API metadata là cách lấy thông tin của tệp trên Commons qua prop=imageinfo, gồm URL gốc, kích thước, băm và khối extmetadata chứa giấy phép, tác giả, yêu cầu ghi nguồn. Bài này viết cho người cần dùng ảnh Commons trong tài liệu hay sản phẩm và phải chứng minh quyền dùng từng tệp. ProxyVN gọi API thật ngày 05/11/2026 trên ba nhóm tệp, dựng manifest và ghi lại những tệp không có giấy phép đọc được bằng máy.
Wikimedia Commons API metadata: mục tiêu và phạm vi không lặp
Phần này chốt bài toán, đầu ra và ranh giới với các bài gần chủ đề.
Bài toán cần giải
Một nhóm làm tài liệu muốn dùng vài chục ảnh về món phở từ Commons. Có người nghĩ ảnh trên Commons là ảnh tự do, cứ tải về là dùng. Thực tế mỗi tệp có giấy phép riêng, nhiều giấy phép bắt buộc ghi tên tác giả và giấy phép đi kèm. Một số tệp còn không có giấy phép đọc được bằng máy.
Đầu ra nghiệm thu
Đầu ra là manifest CSV, mỗi dòng một tệp. Mỗi dòng có tên tệp, URL gốc, trang mô tả, MIME, kích thước và sha1. Phần quyền gồm mã giấy phép, tên ngắn, URL giấy phép, cờ yêu cầu ghi nguồn, cờ bản quyền và tác giả đã làm sạch HTML. Hai cột cuối ghi trường còn thiếu và trạng thái dùng.
Ranh giới với bài Wikidata và bài cào ảnh
Bài Wikidata SPARQL bằng Python truy vấn thực thể và có thể trả tên tệp ảnh qua thuộc tính hình ảnh. Bài này bắt đầu từ chỗ đã có tên tệp, và chỉ làm một việc: lấy bằng chứng quyền dùng cho từng tệp qua API. Bài không cào ảnh từ HTML của trang bài viết.
Giới hạn của lab
Lab gọi API thật, không đăng nhập, mỗi nhóm một lời gọi, nghỉ 1,5 giây. Ba nhóm tệp lấy từ ba thể loại: Category:Phở, Category:Files with no machine-readable license, Category:Files with no machine-readable author, cộng thêm Category:PD-Vietnam. Lab không tải ảnh. Kết quả là ảnh chụp metadata ngày 05/11/2026.
Ai nên đọc
Người làm nội dung, thiết kế, đào tạo cần ảnh minh họa có quyền dùng rõ. Kỹ sư dữ liệu xây bộ ảnh huấn luyện hay bộ ảnh minh họa cho sản phẩm. Người phụ trách pháp lý cần một bảng giải trình nguồn ảnh.
Những gì bài không làm
Bài không tư vấn pháp lý về giấy phép Creative Commons hay quyền phạm vi công cộng ở từng nước. Bài không hướng dẫn tải lên Commons, không nói về Structured Data on Commons. Phạm vi là đọc metadata giấy phép qua imageinfo và ghi lại đúng những gì API trả.
Thuật ngữ dùng trong bài
Imageinfo là module của action=query trả thông tin tệp. Extmetadata là khối siêu dữ liệu mở rộng trong imageinfo, gom từ trang mô tả tệp và dữ liệu nhúng trong tệp. Mỗi trường extmetadata có value và source. Attribution là yêu cầu ghi tên tác giả hoặc dòng ghi nguồn khi dùng lại.
Vì sao không đọc giấy phép từ HTML trang mô tả
Trang mô tả tệp hiển thị giấy phép bằng bản mẫu, mỗi bản mẫu một kiểu HTML. Cào HTML để đoán giấy phép dễ vỡ và dễ sai. Extmetadata đã gom các bản mẫu chuẩn thành trường có tên cố định. Khi extmetadata không có giấy phép, đó cũng là một thông tin: bản mẫu không chuẩn, cần người đọc.
Commons và Wikipedia khác nhau
Ảnh hiện trên bài Wikipedia thường nằm ở Commons, nhưng một số wiki cho phép tải ảnh cục bộ theo quy tắc sử dụng hợp lý. Ảnh cục bộ đó không có trên Commons và thường không được dùng lại ngoài wiki. Manifest chỉ nhận tệp có descriptionurl trên commons.wikimedia.org.
Lấy metadata file Commons cùng license/author bằng imageinfo với Wikimedia Commons API metadata
Phần này đi qua lời gọi và cấu trúc response đã chạy.
Nguồn tài liệu đã đọc
Trang API:Imageinfo trên MediaWiki mô tả các giá trị iiprop như url, size, mime, sha1, timestamp, user, extmetadata và các tham số iiextmetadatafilter, iiextmetadatalanguage. Lab đối chiếu tài liệu với response thật của commons.wikimedia.org.
Endpoint và tham số
Lab gọi https://commons.wikimedia.org/w/api.php với action=query, format=json, formatversion=2, maxlag=5. Danh sách tệp lấy bằng generator=categorymembers, gcmtype=file, gcmlimit=25. Prop là imageinfo với iiprop là url, size, mime, sha1, extmetadata, timestamp, user.
Lọc trường extmetadata
Extmetadata đầy đủ có hàng chục trường. Lab truyền iiextmetadatafilter gồm LicenseShortName, LicenseUrl, UsageTerms, AttributionRequired, Artist, Credit, Copyrighted, Restrictions, License, ImageDescription, DateTimeOriginal, Attribution. Lọc làm response nhẹ hơn và chỉ giữ thứ cần cho manifest.
Ví dụ request bằng Python
import requests, time
s = requests.Session()
s.headers["User-Agent"] = "ProxyVN-docs-lab/1.0 (https://proxy.vn/; low-volume documentation test) python-requests"
API = "https://commons.wikimedia.org/w/api.php"
F = ("LicenseShortName|LicenseUrl|UsageTerms|AttributionRequired|Artist|Credit|"
"Copyrighted|Restrictions|License|ImageDescription|DateTimeOriginal|Attribution")
p = dict(action="query", format="json", formatversion="2", maxlag="5",
generator="categorymembers", gcmtitle="Category:Phở", gcmtype="file", gcmlimit="25",
prop="imageinfo", iiprop="url|size|mime|sha1|extmetadata|timestamp|user",
iiextmetadatafilter=F, iiextmetadatalanguage="en")
d = s.get(API, params=p, timeout=30).json()
time.sleep(1.5)
print(len(d["query"]["pages"]), d.get("continue"))
Kết quả lời gọi đầu
API trả HTTP 200 với 25 tệp và khối continue có gcmcontinue. Thể loại Phở có nhiều hơn 25 tệp, lấy tiếp thì gửi lại khối continue như mọi truy vấn action API. Mỗi trang có title, imageinfo là mảng một phần tử chứa url, descriptionurl, mime, size, sha1 và extmetadata.
User-Agent theo chính sách
Wikimedia yêu cầu User-Agent có tên công cụ và thông tin liên hệ. Lab dùng tên client chung của dự án kèm website, không dùng email cá nhân. Không giả User-Agent trình duyệt.
Giới hạn số tệp mỗi lời gọi
Gcmlimit 25 cho 25 tệp mỗi lượt. Với extmetadata, mỗi tệp tốn thêm thời gian xử lý phía máy chủ, nên đừng đẩy lên mức tối đa khi không cần. Nếu đã có danh sách tên tệp, dùng titles với nhiều tên ngăn bằng dấu sổ đứng thay cho generator.
Ngôn ngữ của extmetadata
Lab đặt iiextmetadatalanguage là en. Một số trường như ImageDescription có nhiều ngôn ngữ, API chọn theo tham số này. LicenseShortName cũng có thể đổi theo ngôn ngữ. Giữ cố định một ngôn ngữ cho toàn bộ manifest để so sánh được giữa các lần chạy.
Value và source
Mỗi trường extmetadata là object có value và source. Source có thể là commons-desc-page, tức lấy từ trang mô tả tệp, hoặc từ dữ liệu nhúng trong tệp. Lab giữ source của trường Artist để biết thông tin tác giả đến từ đâu.
Lấy imageinfo và extmetadata cho tên file đã chọn trong Wikimedia Commons API metadata
Phần này đọc từng nhóm trường và cho thấy phân bố thật của 25 tệp.
Phân bố giấy phép

Năm giấy phép một thể loại
Trong 25 tệp của Category:Phở, có 17 tệp CC BY-SA 4.0, 5 tệp CC BY 2.0, 1 tệp CC BY-SA 2.0, 1 tệp CC BY-SA 3.0 và 1 tệp CC0. Không tệp nào thiếu LicenseShortName. Cùng một thể loại, cùng chủ đề, nhưng có năm giấy phép khác nhau.
AttributionRequired
24 tệp có AttributionRequired là chuỗi true. Tệp CC0 duy nhất có giá trị false. Giá trị là chuỗi, không phải boolean. So sánh với True của Python sẽ luôn sai. Lab so với chuỗi "true".
Copyrighted
Mọi tệp trong thể loại Phở có Copyrighted là chuỗi True, kể cả tệp CC0. Copyrighted nói tệp có tình trạng bản quyền, không nói tệp có bị cấm dùng. Tệp phạm vi công cộng trong nhóm PD-Vietnam có Copyrighted là False.
License và LicenseShortName
License là mã ngắn như cc-by-sa-4.0, cc-by-2.0, cc0, pd. LicenseShortName là tên hiển thị như CC BY-SA 4.0. Manifest giữ cả hai: mã để lập trình quy tắc, tên để in vào dòng ghi nguồn.
Phiên bản giấy phép quan trọng
CC BY 2.0 và CC BY 4.0 khác nhau ở cách ghi nguồn và một số điều khoản. Năm tệp CC BY 2.0 trong thể loại Phở đều đến từ Flickr, nơi nhiều ảnh cũ dùng phiên bản 2.0. Manifest giữ mã có số phiên bản, không rút gọn thành CC BY.
LicenseUrl
Tệp Creative Commons có LicenseUrl trỏ tới trang giấy phép. Tệp phạm vi công cộng trong nhóm PD-Vietnam không có LicenseUrl. Thiếu URL giấy phép không có nghĩa là thiếu giấy phép. Cột thieu phải tách hai trường hợp này.
Bảng trường đã đọc
Trường extmetadata |
Ví dụ giá trị |
Dùng cho |
|---|---|---|
LicenseShortName |
CC BY-SA 4.0 |
In trong dòng ghi nguồn |
License |
cc-by-sa-4.0 |
Quy tắc lọc bằng mã |
LicenseUrl |
URL trang giấy phép |
Dẫn link giấy phép |
AttributionRequired |
"true" hoặc "false" |
Có bắt buộc ghi tên |
Copyrighted |
"True" hoặc "False" |
Phân biệt phạm vi công cộng |
Artist |
HTML có link |
Tên tác giả sau khi làm sạch |
UsageTerms |
Creative Commons Attribution 4.0 |
Mô tả điều khoản |
Credit và Attribution
Credit thường ghi nguồn gốc ảnh như Own work hay một trang Flickr. Attribution là dòng ghi nguồn mà tác giả yêu cầu, nếu có. Trong 25 tệp của thể loại Phở, lab giữ 80 ký tự đầu của Credit đã làm sạch. Khi Attribution có giá trị, dòng ghi nguồn phải dùng đúng chuỗi đó.
UsageTerms
UsageTerms là câu mô tả điều khoản, ví dụ Creative Commons Attribution 4.0 với tệp CC BY 4.0, hay Public domain với tệp phạm vi công cộng. Trường này hữu ích khi in cho người đọc, nhưng quy tắc lập trình nên dùng mã License.
Trường Restrictions
Restrictions dùng để ghi hạn chế ngoài bản quyền, như quyền nhân thân hay nhãn hiệu. Cả 25 tệp của thể loại Phở có Restrictions rỗng. Manifest vẫn giữ cột này, vì một tệp có hạn chế cần người duyệt dù giấy phép là CC.
Chuẩn hóa URL gốc, author và trường license trong Wikimedia Commons API metadata
Dữ liệu thô chưa dùng ngay được, nhất là trường tác giả.
Artist là HTML

Làm sạch Artist HTML
24 trên 25 tệp có Artist chứa thẻ HTML. Ví dụ một tệp có Artist là thẻ a rel nofollow trỏ tới trang Flickr của người chụp, nội dung Jael, kèm chữ from Ho Chi Minh City. Đưa thẳng chuỗi này vào dòng ghi nguồn sẽ in cả thẻ HTML ra tài liệu.
Làm sạch bằng lxml
import re
from lxml import html as LH
def txt(v):
if not v:
return ""
return re.sub(r"\s+", " ", LH.fromstring(f"<div>{v}</div>").text_content()).strip()
artist_raw = em.get("Artist", {}).get("value") or ""
artist_text = txt(artist_raw)
artist_has_html = "<" in artist_raw
Giữ cả bản thô
Manifest giữ artist_text đã làm sạch và cờ artist_has_html. Bản thô nằm trong JSON gốc. Khi cần dẫn link tới trang tác giả, đọc thẻ a từ bản thô. Làm sạch rồi bỏ bản thô thì mất link mà một số giấy phép khuyến khích giữ.
URL gốc và trang mô tả
Imageinfo trả url là đường dẫn tới tệp gốc trên upload.wikimedia.org và descriptionurl là trang mô tả tệp trên Commons. Dòng ghi nguồn nên dẫn tới descriptionurl, nơi có đủ thông tin giấy phép. URL gốc chỉ dùng để tải.
Sha1 và kích thước
Mỗi tệp có sha1 và size. Sau khi tải, băm lại tệp để chắc tệp trên đĩa đúng là bản đã ghi trong manifest. Commons có thể có nhiều phiên bản của cùng một tên tệp. Imageinfo mặc định trả phiên bản hiện tại, kèm timestamp của phiên bản đó.
Người tải lên không phải tác giả
Iiprop user trả tên tài khoản đã tải tệp lên. Người tải lên có thể không phải tác giả, nhất là với ảnh chuyển từ Flickr. Ví dụ các tệp CC BY 2.0 trong thể loại Phở đến từ Flickr, Artist là tên người chụp, user là tài khoản đã chuyển ảnh. Dòng ghi nguồn dùng Artist, không dùng user.
Tên tệp có ký tự đặc biệt
Nhiều tệp có tên tiếng Việt dài, có dấu phẩy, dấu ngoặc, chữ Hán. Khi lưu tệp về máy, đặt tên theo sha1 hoặc theo một ID nội bộ, lưu tên gốc trong manifest. Cách này tránh lỗi đường dẫn trên Windows và tránh trùng tên.
Tên tác giả lặp
Nhiều tệp trong thể loại Phở của cùng một người tải lên, Artist sau khi làm sạch là cùng một tên. Đây là điều bình thường. Manifest vẫn giữ một dòng mỗi tệp, không gộp theo tác giả, vì mỗi tệp có thể có giấy phép khác.
Mã giấy phép thống nhất
Lab giữ nguyên mã License từ API. Nếu dự án có danh sách giấy phép cho phép, so với mã này. Không so với LicenseShortName vì tên hiển thị có thể đổi theo ngôn ngữ đặt trong iiextmetadatalanguage.
Kiểm trường attribution có HTML hoặc thiếu dữ liệu trong Wikimedia Commons API metadata
Phần này đi vào các tệp có vấn đề, lấy từ các thể loại bảo trì của Commons.
Tệp không có giấy phép đọc được bằng máy

Tệp thiếu giấy phép
Sáu tệp đầu của Category:Files with no machine-readable license đều có LicenseShortName, LicenseUrl, License, AttributionRequired và Copyrighted là None. API không trả các trường đó. Một số tệp vẫn có Artist, ví dụ NASA/JPL-Caltech. Các tệp còn lại không có cả Artist.
Thiếu giấy phép bằng máy không có nghĩa là tự do
Trang mô tả của các tệp đó có thể ghi giấy phép bằng chữ mà không dùng bản mẫu chuẩn, nên API không đọc ra. Có tệp NASA mà nhiều người nghĩ là phạm vi công cộng. Manifest không được đoán. Trạng thái của các tệp này là can_duyet, người duyệt phải mở trang mô tả và đọc.
Tệp không có tác giả đọc được bằng máy
Sáu tệp đầu của Category:Files with no machine-readable author có giấy phép rõ, ví dụ CC BY 4.0 với AttributionRequired true, nhưng Artist rỗng. Đây là ca khó nhất: giấy phép yêu cầu ghi tên, nhưng API không có tên để ghi. Manifest đánh dấu thiếu artist_text và chuyển sang duyệt.
Tệp phạm vi công cộng không có tác giả
Trong cùng thể loại có các tệp Public domain với AttributionRequired false và Copyrighted False, Artist rỗng. Với các tệp này, thiếu tác giả không chặn việc dùng. Quy tắc phải xét AttributionRequired trước khi coi thiếu Artist là lỗi.
Nhóm PD-Vietnam
Sáu tệp đầu của Category:PD-Vietnam đều có LicenseShortName Public domain, License pd, AttributionRequired false, Copyrighted False, LicenseUrl None. Artist có giá trị như Léon Busy hay See sources. Một số tệp ghi tác giả, một số chỉ ghi xem nguồn.
Phạm vi công cộng phụ thuộc quốc gia
Bản mẫu PD-Vietnam nói tệp thuộc phạm vi công cộng theo luật Việt Nam. Ở nước khác, thời hạn bảo hộ có thể khác. Commons thường đòi tệp phải tự do ở cả nước xuất xứ và Hoa Kỳ. Người dùng ở nơi khác vẫn nên đọc trang mô tả nếu ảnh quan trọng.
See sources không phải tên tác giả
Một số tệp PD-Vietnam có Artist là See sources hoặc Various authors. Làm sạch HTML vẫn giữ nguyên chuỗi đó. Dòng ghi nguồn tự sinh sẽ in See sources như thể đó là tên người. Nên đánh dấu các giá trị này để người viết dòng ghi nguồn sửa tay.
Tệp phạm vi công cộng vẫn nên ghi nguồn
Dù không bắt buộc, ghi tác giả và dẫn trang mô tả là cách làm tốt. Người đọc tài liệu biết ảnh đến từ đâu, và nếu sau này có tranh chấp, dòng ghi nguồn là bằng chứng mình đã dùng theo thông tin Commons công bố.
Thể loại bảo trì là công cụ kiểm
Các thể loại như Files with no machine-readable license được Commons tự động gắn khi bản mẫu thiếu. Lab dùng chúng để có ca thật cho bộ quy tắc. Với bộ ảnh của dự án, có thể kiểm ngược: tệp nào trong manifest nằm trong các thể loại này thì đáng nghi.
Bảng các nhóm tệp
Nhóm |
Giấy phép |
AttributionRequired |
Artist |
Trạng thái |
|---|---|---|---|---|
Phở, 24 tệp CC BY/BY-SA |
Có |
true |
Có, HTML |
Dùng được có ghi nguồn |
Phở, 1 tệp CC0 |
Có |
false |
Có |
Dùng được |
Không giấy phép bằng máy |
None |
None |
Có hoặc rỗng |
Cần duyệt |
Không tác giả, CC BY 4.0 |
Có |
true |
Rỗng |
Cần duyệt |
Không tác giả, Public domain |
Có |
false |
Rỗng |
Dùng được |
PD-Vietnam |
Public domain |
false |
Có hoặc See sources |
Dùng được |
Xuất manifest sử dụng ảnh có bằng chứng quyền theo từng file bằng Wikimedia Commons API metadata
Manifest là tài sản chính, nên quy tắc trạng thái phải viết rõ.
Quy tắc trạng thái
Thiếu License hoặc LicenseShortName thì can_duyet. AttributionRequired true mà thiếu Artist thì can_duyet. AttributionRequired true và có đủ thì dung_duoc_co_ghi_nguon. Copyrighted False hoặc AttributionRequired false thì dung_duoc. Restrictions không rỗng thì can_duyet bất kể giấy phép.
Mã gán trạng thái
def status(row):
if not row["license_code"] or not row["license_short"]:
return "can_duyet"
if row["restrictions"]:
return "can_duyet"
if row["attribution_required"] == "true":
return "dung_duoc_co_ghi_nguon" if row["artist_text"] else "can_duyet"
return "dung_duoc"
Kết quả với thể loại Phở
24 tệp được gán dung_duoc_co_ghi_nguon, 1 tệp CC0 được gán dung_duoc. Không tệp nào cần duyệt. Nhóm không giấy phép bằng máy và nhóm không tác giả có giấy phép CC sẽ ra can_duyet nếu chạy cùng quy tắc.
Dòng ghi nguồn tự sinh
Với tệp dung_duoc_co_ghi_nguon, dòng ghi nguồn có dạng: tác giả, tên tệp hoặc tiêu đề, giấy phép kèm link, nguồn Wikimedia Commons kèm link trang mô tả. Dòng này sinh được từ artist_text, LicenseShortName, LicenseUrl và descriptionurl đã có trong manifest.
Giấy phép share-alike
17 tệp là CC BY-SA 4.0. Share-alike đặt điều kiện cho sản phẩm phái sinh. Manifest ghi đúng mã, nhưng quyết định dùng trong sản phẩm nào thuộc về người phụ trách pháp lý. Lab không coi BY-SA ngang với BY.
Ghi ngày duyệt
Với tệp can_duyet, người duyệt ghi quyết định, lý do và ngày vào hai cột riêng. Tệp được chấp nhận sau khi đọc trang mô tả vẫn giữ trạng thái gốc là can_duyet, cột quyết định ghi dùng được. Cách này giữ dấu vết cho thấy quyết định do người, không do máy.
Tách manifest theo dự án
Một ảnh có thể dùng trong nhiều tài liệu. Manifest chung giữ metadata, bảng phụ ghi ảnh nào dùng ở tài liệu nào. Khi một tệp đổi trạng thái, bảng phụ cho biết những tài liệu cần sửa.
Lưu JSON gốc
Lab lưu raw.json cho thể loại Phở và ba tệp raw cho ba thể loại bảo trì. Khi cần kiểm lại một dòng manifest, mở JSON gốc theo title. Nên lưu kèm ngày gọi, vì người tải lên có thể sửa trang mô tả sau đó.
Danh sách giấy phép chấp nhận
Mỗi dự án nên có danh sách mã giấy phép chấp nhận tự động, ví dụ cc0, pd, cc-by-2.0, cc-by-4.0. Mã share-alike và mã có điều kiện phi thương mại đi qua người duyệt. Danh sách này nằm trong tệp cấu hình, không viết cứng trong hàm gán trạng thái.
Không tải ảnh trước khi duyệt
Manifest được dựng chỉ từ metadata. Chỉ tệp có trạng thái dùng được mới vào danh sách tải. Tệp cần duyệt chờ quyết định. Cách này tránh việc ảnh chưa rõ quyền nằm sẵn trong thư mục dự án và bị dùng nhầm.
Đầu ra nghiệm thu: Manifest file URL license attribution và ghi nhận trường license thiếu của Wikimedia Commons API metadata
Phần này liệt kê điều kiện để coi manifest là xong.
Tệp manifest.csv
Mỗi tệp một dòng với các cột title, url, descriptionurl, mime, size, sha1, license_short, license_url, license_code, attribution_required, copyrighted, restrictions, artist_text, artist_has_html, credit_text, attribution_field, thieu, trang_thai.
Kiểm cột thiếu
Cột thieu liệt kê trường bắt buộc vắng mặt. Tệp nhóm không giấy phép bằng máy phải có license_short trong cột thieu. Tệp phạm vi công cộng thiếu LicenseUrl không bị tính là thiếu nếu có License là pd.
Kiểm trạng thái
Không tệp nào có giấy phép rỗng mà trạng thái là dùng được. Không tệp nào yêu cầu ghi nguồn mà thiếu tác giả lại được dùng tự động. Lab kiểm hai điều kiện này trên cả bốn thể loại.
Kiểm khóa duy nhất
Mỗi title chỉ xuất hiện một lần trong manifest. Khi gom từ nhiều thể loại, một tệp có thể thuộc hai thể loại và bị đọc hai lần. Gom theo title trước khi ghi, giữ một dòng.
Kiểm làm sạch HTML
Không dòng nào có artist_text chứa ký tự nhỏ hơn hay lớn hơn. Lab kiểm trên 25 tệp của thể loại Phở, artist_has_html bật ở 24 dòng, artist_text sạch ở cả 25.
Bảng nghiệm thu của lab

Nghiệm thu manifest ảnh
Hạng mục |
Kết quả 05/11/2026 |
|---|---|
Tệp Category:Phở |
25, có continue |
Số loại giấy phép |
5 |
Artist có HTML |
24/25 |
AttributionRequired kiểu |
Chuỗi "true"/"false" |
Nhóm không giấy phép bằng máy |
6/6 trường license None |
Nhóm không tác giả CC BY 4.0 |
Artist rỗng, cần duyệt |
PD-Vietnam |
pd, không LicenseUrl |
Những gì lab chưa chạy
Lab chưa lấy hết thể loại Phở qua continuation, chưa thử iiextmetadatalanguage là vi, chưa thử phiên bản cũ của tệp, chưa đọc Structured Data on Commons. Lab cũng chưa tải ảnh để kiểm sha1.
Vận hành Wikimedia Commons API metadata trong quy trình dùng ảnh
Manifest có giá trị khi nó đi cùng ảnh trong suốt vòng đời tài liệu.
Khi nào gọi lại
Gọi lại metadata trước mỗi lần xuất bản tài liệu dùng ảnh. Trang mô tả có thể được sửa, giấy phép có thể được làm rõ, tệp có thể bị xóa vì vi phạm. So manifest mới với cũ, tệp đổi trạng thái thì báo người phụ trách.
Tệp bị xóa
Nếu một tệp không còn trên Commons, API trả missing. Tài liệu đang dùng ảnh đó nên được xem lại. Tệp bị xóa vì vi phạm bản quyền là tín hiệu mạnh rằng mình cũng không nên dùng tiếp.
Nhịp gọi
Một lời gọi với gcmlimit 25 hoặc danh sách titles lấy được metadata của nhiều tệp. Với vài trăm tệp, chỉ cần vài chục lời gọi, nghỉ 1 tới 2 giây mỗi lời gọi. Không cần song song.
Tải ảnh có kiểm
Khi đã duyệt, tải ảnh từ url với User-Agent như khi gọi API, tuần tự, nghỉ giữa các tệp. Sau khi tải, băm sha1 và so với manifest. Lệch thì xóa tệp đã tải và ghi lỗi, có thể tệp vừa được tải lên phiên bản mới.
Ảnh thu nhỏ thay cho ảnh gốc
Tài liệu web thường không cần ảnh gốc vài chục megapixel. Imageinfo hỗ trợ iiurlwidth để lấy URL ảnh thu nhỏ. Lab chưa chạy tham số này. Dùng ảnh thu nhỏ giảm băng thông cho cả hai bên, giấy phép vẫn là giấy phép của tệp gốc.
Proxy ở tầng mạng
API Commons công khai, gọi thẳng là cách nên dùng. Proxy chỉ cần khi mạng nội bộ bắt buộc, và không thay đổi giấy phép hay dữ liệu trả về. Cách ghi chuỗi proxy có ở bài định dạng proxy, vai trò proxy trong thu thập có ở bài Web Scraping proxy là gì. Khi cần IP Việt Nam cho tác vụ khác, anh em có thể mua proxy tại trang chủ ProxyVN.
Ảnh dùng trong huấn luyện mô hình
Khi gom ảnh để huấn luyện mô hình, điều kiện ghi nguồn và share-alike vẫn áp dụng theo cách mà người phụ trách pháp lý của dự án diễn giải. Manifest giúp trả lời câu hỏi ảnh nào, giấy phép gì, tác giả là ai, cho từng mẫu trong bộ dữ liệu.
Báo cáo thay đổi giấy phép
Mỗi lần gọi lại, so license_code, attribution_required và artist_text với lần trước. Thay đổi nào cũng ghi vào báo cáo. Một tệp đổi từ CC BY sang CC BY-NC hiếm khi xảy ra, nhưng nếu có, tài liệu thương mại phải xem lại ngay.
Khóa phiên bản
Lab chạy Python 3.12.10, requests 2.34.2, lxml 6.1.3. Tên trường extmetadata ổn định nhiều năm nhưng không có cam kết. Giữ bộ test đọc JSON đã lưu.
Ảnh công khai trên Commons không có nghĩa là dùng tự do không ghi nguồn. Mỗi tệp một giấy phép, mỗi dòng manifest một bằng chứng.
Wikimedia Commons API metadata: câu hỏi thường gặp
Các câu dưới đây gom những điểm hay bị hỏi.
Ảnh trên Commons có dùng tự do được không?
Tùy từng tệp. Phần lớn yêu cầu ghi tên tác giả và giấy phép. Một số share-alike đặt điều kiện cho sản phẩm phái sinh.
Vì sao AttributionRequired so với True bị sai?
Giá trị là chuỗi "true" hoặc "false". So với chuỗi, không so với boolean.
Artist có thẻ HTML thì làm sao?
Làm sạch bằng trình đọc HTML để lấy chữ, giữ bản thô để lấy link tác giả khi cần.
Tệp không có giấy phép bằng máy có được dùng không?
Không dùng tự động. Mở trang mô tả và đọc. Nếu vẫn không rõ, đừng dùng.
Tệp NASA có phải luôn phạm vi công cộng?
Không nên giả định. Lab thấy tệp NASA trong nhóm không có giấy phép bằng máy. Đọc trang mô tả của từng tệp.
Có cần tải ảnh để lấy metadata không?
Không. Imageinfo trả đủ thông tin quyền và kích thước. Chỉ tải tệp đã qua duyệt.
Có dùng được user làm tác giả không?
Không nên. User là người tải lên, có thể khác người chụp. Dùng Artist.
Lấy tiếp các tệp sau 25 tệp đầu thế nào?
Gửi lại khối continue có gcmcontinue mà API trả, cho tới khi không còn khối continue.
Đổi ngôn ngữ extmetadata có đổi giấy phép không?
Không đổi giấy phép, chỉ đổi cách hiển thị một số trường. Mã License giữ nguyên.
Manifest có thay được trang mô tả không?
Không thay được. Manifest là bản tóm tắt có cấu trúc lấy từ API tại một ngày. Khi có tranh chấp hay câu hỏi khó, trang mô tả tệp trên Commons vẫn là nơi xem đầy đủ nhất, nên dòng ghi nguồn luôn dẫn tới đó.
Wikimedia Commons API metadata và những điều cần nhớ
Wikimedia Commons API metadata cho đủ bằng chứng quyền dùng từng tệp khi đọc imageinfo với extmetadata, làm sạch Artist HTML, so AttributionRequired như chuỗi và tách rõ tệp thiếu giấy phép bằng máy. Manifest giữ một dòng mỗi tệp, gán trạng thái theo quy tắc viết rõ, và chỉ tải ảnh đã qua duyệt. Proxy.vn - Nhà cung cấp dịch vụ proxy chất lượng hàng đầu Việt Nam khuyên anh em giữ manifest đi cùng ảnh trong mọi tài liệu dùng Wikimedia Commons API metadata.