item(項目)
透過 eagle.item API 可以方便的查詢當前資源庫內容或新增新的內容到資源庫中。
eagle.onPluginCreate(async (plugin) => {
// 取得 Eagle 應用當前被選中的檔案
let items = await eagle.item.getSelected();
let item = items[0];
// 修改屬性
item.name = 'New Name';
item.tags = ['tag1', 'tag2'];
// 儲存修改
await item.save();
});🦄 最佳實踐: 為了確保數據安全性,請使用 item API 提供的 save() 方法進行數據的存取與修改,應避免直接修改 Eagle 資源庫底下的 metadata.json 或任意檔案。
方法
get(options)
萬用搜尋方法,可獲取指定條件的檔案。
optionsObject - 查詢條件idstring (可選) - 檔案 ididsstring[] (可選) - 檔案 id 數組isSelectedboolean (可選) - 正在被選中的檔案isUntaggedboolean (可選) - 尚未標籤isUnfiledboolean (可選) - 尚未分類keywordsstring[] (可選) - 包含關鍵字tagsstring[] (可選) - 包含標籤foldersstring[] (可選) - 包含資料夾extstring (可選) - 格式annotationstring (可選) - 註解ratingInterger (可選) - 評分,0 ~ 5urlstring (可選) - 來源連結shapestring (可選) - 形狀,square、portrait、panoramic-portrait、landscape、panoramic-landscapefieldsstring[] (可選) - 指定返回的欄位,僅返回需要的資料以提升效能
返回
Promise<items: Item[]>-items查詢結果
let items = await eagle.item.get({
ids: [],
isSelected: true,
isUnfiled: true,
isUntagged: true,
keywords: [""],
ext: "",
tags: [],
folders: [],
shape: "square",
rating: 5,
annotation: "",
url: ""
});
let selected = await eagle.item.get({
isSelected: true
});
let jpgs = await eagle.item.get({
ext: "jpg"
});
// 僅獲取特定欄位以提升效能
let itemsWithFields = await eagle.item.get({
tags: ["Design"],
fields: ["id", "name", "tags", "modifiedAt"]
});getAll()
返回所有檔案
返回
Promise<items: Item[]>-items所有檔案
let items = await eagle.item.getAll();
console.log(items);🦄 最佳實踐: 如果資源庫檔案數量非常多(例:20W+),避免無限制的呼叫此方法,避免造成應用效能的降低。
getById(itemId)
返回指定 ID 之檔案
itemIdstring返回
Promise<item: Item>-item對應 ID 的檔案
let item = await eagle.item.getById('item_id');
console.log(item);getByIds(itemIds)
返回指定 IDs 之檔案
itemIdsstring[]返回
Promise<items: Item[]>-items對應 IDs 的檔案
let items = await eagle.item.getByIds(['item_id_1', 'item_id_2']);
console.log(items);getIdsWithModifiedAt()
快速獲取所有檔案的 ID 和最後修改時間
返回
Promise<items: Object[]>-items包含id和modifiedAt的物件陣列
let items = await eagle.item.getIdsWithModifiedAt();
console.log(items);
// 輸出:[{id: "item_id_1", modifiedAt: 1234567890}, ...]getSelected()
返回應用當前選中的檔案
返回
Promise<items: Item[]>-items選中之檔案
let selected = await eagle.item.getSelected();
console.log(selected);count(options)
計算符合條件的檔案數量,支援與 get() 方法相同的查詢條件。
optionsObject - 查詢條件(與get()方法相同)idstring (可選) - 檔案 ididsstring[] (可選) - 檔案 id 陣列isSelectedboolean (可選) - 正在被選中的檔案isUntaggedboolean (可選) - 尚未標籤isUnfiledboolean (可選) - 尚未分類keywordsstring[] (可選) - 包含關鍵字tagsstring[] (可選) - 包含標籤foldersstring[] (可選) - 包含資料夾extstring (可選) - 格式annotationstring (可選) - 註解ratingInterger (可選) - 評分,0 ~ 5urlstring (可選) - 來源連結shapestring (可選) - 形狀,square、portrait、panoramic-portrait、landscape、panoramic-landscape
返回
Promise<count: number>-count符合條件的檔案數量
// 計算 JPG 格式檔案數量
let jpgCount = await eagle.item.count({
ext: "jpg"
});
// 計算帶有特定標籤的檔案數量
let taggedCount = await eagle.item.count({
tags: ["Design", "Illustration"]
});
// 計算未分類檔案數量
let unfiledCount = await eagle.item.count({
isUnfiled: true
});countAll()
快速返回資源庫中所有檔案的總數
返回
Promise<count: number>-count所有檔案數量
let totalCount = await eagle.item.countAll();
console.log(`資源庫共有 ${totalCount} 個檔案`);countSelected()
返回應用當前選中的檔案數量
返回
Promise<count: number>-count選中的檔案數量
let selectedCount = await eagle.item.countSelected();
console.log(`當前選中了 ${selectedCount} 個檔案`);select(itemIds)
選中指定的檔案
itemIdsstring[] - 要選中的檔案 ID 陣列返回
Promise<result: boolean>-result是否選中成功
// 選中單個檔案
await eagle.item.select(['ITEM_ID_1']);
// 選中多個檔案
await eagle.item.select(['ITEM_ID_1', 'ITEM_ID_2', 'ITEM_ID_3']);
// 清空選中
await eagle.item.select([]);addFromURL(url, options)
將圖片連結新增至 Eagle
urlstring - 欲新增圖片連結,支援http、https、base64optionsObjectnamestring (可選) - 檔案名websitestring (可選) - 來源網址tagsstring[] (可選) - 標籤foldersstring[] (可選) - 所屬資料夾 IDsannotationstring (可選) - 註解
返回
Promise<itemId: string>-itemId成功新增的項目 ID
const imgURL = 'https://cdn.dribbble.com/userupload/3885520/file/original-ee68b80a6e10edab6f192e1e542da6ed.jpg';
const itemId = await eagle.item.addFromURL(imgURL, {
name: 'Camping',
website: 'https://dribbble.com/shots/19744134-Camping-2',
tags: ["Dribbble", "Illustration"],
folders: [],
annotation: 'add from eagle api',
});addFromBase64(base64, options)
新增 base64 圖片至 Eagle
base64string - base64 格式圖片optionsObjectnamestring (可選) - 檔案名websitestring (可選) - 來源網址tagsstring[] (可選) - 標籤foldersstring[] (可選) - 所屬資料夾 IDsannotationstring (可選) - 註解
返回
Promise<itemId: string>-itemId成功新增的項目 ID
const base64 = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNDAgMjM0IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNDAgMjM0Ij48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZmlsbD0iIzI2MTMwMCIgZD0iTTEwIDEwaDIyMHYyMTMuOTk5aC0yMjB6Ii8+PHBhdGggZD0iTTAgMHYyMzRoMjQwLjAwMXYtMjM0aC0yNDAuMDAxem0xMCAxMGgyMjAuMDAxdjIxNGgtMjIwLjAwMXYtMjE0em03My4yNTIgMTIyLjUwMWwtNy45MiAyOS45ODJjLS4xNjUuODI0LS40OTUgMS4wMTgtMS40ODUgMS4wMThoLTE0LjY4N2MtLjk4OCAwLTEuMTUyLS4zMy0uOTg4LTEuNDg1bDI4LjM4LTk5LjQ0OGMuNDk1LTEuODE1LjgyNS0zLjM3Ny45OS04LjMyOCAwLS42Ni4zMy0uOTkuODI1LS45OWgyMC45NTVjLjY2IDAgLjk5LjE2NSAxLjE1NS45OWwzMS44NDUgMTA3Ljk0Yy4xNjUuODI0IDAgMS4zMi0uODI1IDEuMzJoLTE2LjVjLS44MjQgMC0xLjMxOS0uMTkzLTEuNDg0LS44NTRsLTguMjUtMzAuMTQ2aC0zMi4wMTF6bTI3Ljg4NS0xNi4yNWMtMi44MDUtMTEuMDU2LTkuNDA1LTM1LjI4Ni0xMS44OC00N2gtLjE2NWMtMi4xNDYgMTEuNzE1LTcuNDI1IDMxLjQ5LTExLjU1IDQ3aDIzLjU5NXptNDQuOTkzLTU1LjU3OGMwLTYuNDM1IDQuNDU1LTEwLjIzIDEwLjIzLTEwLjIzIDYuMTA1IDAgMTAuMjMgNC4xMjUgMTAuMjMgMTAuMjMgMCA2LjYtNC4yOSAxMC4yMy0xMC4zOTUgMTAuMjMtNS45NCAwLTEwLjA2NS0zLjYzLTEwLjA2NS0xMC4yM3ptMS4xMiAyMi43MzJjMC0uODI1LjMzLTEuMTU1IDEuMTU1LTEuMTU1aDE1LjY4OWMuODI1IDAgMS4xNTUuMzMgMS4xNTUgMS4xNTV2NzguOTM5YzAgLjgyNi0uMTY1IDEuMTU2LTEuMTU1IDEuMTU2aC0xNS41MjRjLS45OSAwLTEuMzItLjQ5Ni0xLjMyLTEuMzJ2LTc4Ljc3NXoiIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBmaWxsPSIjRkY3QzAwIi8+PC9zdmc+';
const itemId = await eagle.item.addFromBase64(base64, {
name: 'Illustation Logo',
website: 'https://www.eagle.cool/',
tags: ["Adobe", "Logo"],
folders: [],
annotation: 'ai logo form api',
});addFromPath(path, options)
從本機檔案路徑新增檔案至 Eagle
pathstring - 欲新增檔案路徑optionsObjectnamestring (可選) - 檔案名websitestring (可選) - 來源網址tagsstring[] (可選) - 標籤foldersstring[] (可選) - 所屬資料夾 IDsannotationstring (可選) - 註解
返回
Promise<itemId: string>-itemId成功新增的項目 ID
const filePath = 'C:\\Users\\User\\Downloads\\ai.svg';
const itemId = await eagle.item.addFromPath(filePath, {
name: 'Illustation Logo',
website: 'https://www.eagle.cool/',
tags: ["Adobe", "Logo"],
folders: [],
annotation: 'ai logo form api',
});addBookmark(url, options)
新增書籤連結至 Eagle
urlstring - 欲新增書籤連結optionsObjectnamestring (可選) - 書籤名base64string (可選) - 自訂縮圖 base64 格式tagsstring[] (可選) - 標籤foldersstring[] (可選) - 所屬資料夾 IDsannotationstring (可選) - 註解
返回
Promise<itemId: string>-itemId成功新增的項目 ID
const bookmarkURL = 'https://www.google.com/';
const itemId = await eagle.item.addBookmark(bookmarkURL, {
name: 'Eagle',
tags: ["Eagle", "Site"],
folders: [],
annotation: 'bookmark form api',
});const bookmarkURL = 'https://www.google.com/';
const base64 = 'data:image/png;base64,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';
const itemId = await eagle.item.addBookmark(bookmarkURL, {
name: 'Eagle',
base64: base64,
tags: ["Eagle", "Site"],
folders: [],
annotation: 'bookmark form api',
});open(itemId, options)
在全部列表顯示 itemId 對應的檔案
itemIdstring - 欲顯示檔案 IDoptionsObject (可選) - 開啟選項windowboolean (可選) - 是否在新視窗中開啟檔案,預設為false
返回
Promise<result: boolean>
// 在當前視窗開啟
await eagle.item.open("item_id");
// 在新視窗開啟
await eagle.item.open("item_id", { window: true });類:Item
由 Eagle API get返回的 Object 類型,提供修改、儲存功能。
🦄 最佳實踐: 為了確保數據安全性,請使用 Item 實例提供的 save() 方法進行數據的存取與修改,應避免直接修改 Eagle 資源庫底下的 metadata.json 或任意檔案。
實例方法
save()
儲存所有修改
返回
Promise<result: boolean>-result是否修改成功
let item = await eagle.item.getById('item_id');
item.name = 'New Name';
item.tags = ['tag_1', 'tag_2'];
// 儲存修改
await item.save();moveToTrash()
將檔案丟到垃圾桶
返回
Promise<result: boolean>-result是否成功刪除
await item.moveToTrash();replaceFile(filePath)
使用指定檔案替換原檔案,將自動重新整理縮圖,無須再次呼叫 refreshThumbnail()。
🦄 最佳實踐: 直接對要更改的檔案進行操作是具有風險的,若過程中出現錯誤或異常,都有可能造成檔案損毀且無法復原。因此,先將新版本檔案儲存在電腦其它路徑,確定無誤後,再使用 replaceFile()方法來替換是更穩健的作法。
filePathstring - 欲替換檔案之路徑返回
Promise<result: boolean>-result是否替換成功
let item = await eagle.item.getById('item_id');
let result = await item.replaceFile('new_file_path');
console.log(result);refreshThumbnail()
重新重新整理檔案縮圖,同時也會重新獲取檔案大小、顏色分析、尺寸等屬性。
返回
Promise<result: boolean>-result是否成功
let item = await eagle.item.getById('item_id');
let result = await item.refreshThumbnail();
console.log(result);setCustomThumbnail(thumbnailPath)
為檔案設定自定縮圖。
thumbnailPathstring - 欲設定縮圖的路徑返回
Promise<result: boolean>-result是否替換成功
let item = await eagle.item.getById('item_id');
let result = await item.setCustomThumbnail('thumbnail_path');
console.log(result);open(options)
在全部列表顯示此檔案
optionsObject (可選) - 開啟選項windowboolean (可選) - 是否在新視窗中開啟檔案,預設為false
返回
Promise<void>
let item = await eagle.item.getById('item_id');
// 在當前視窗開啟
await item.open();
// 在新視窗開啟
await item.open({ window: true });
// 等價於
await eagle.item.open('item_id');
await eagle.item.open('item_id', { window: true });select()
選中此檔案
返回
Promise<result: boolean>-result是否選中成功
let item = await eagle.item.getById('item_id');
await item.select();
// 等價於
await eagle.item.select([item.id]);實例屬性
id string
id string唯讀,檔案 ID。
name string
name string檔案名。
ext string
ext string唯讀,檔案副檔名。
width Interger
width Interger圖片寬度。
height Interger
height Interger圖片高度。
url string
url string來源連結。
isDeleted boolean
isDeleted boolean唯讀,檔案是否在垃圾桶。
annotation string
annotation string檔案註解。
tags string[]
tags string[]檔案標籤。
folders string[]
folders string[]所屬資料夾 ids。
palettes Object[]
palettes Object[]唯讀,色票資訊。
size Interger
size Interger唯讀,檔案大小。
star Interger
star Interger評分資訊,0 ~ 5。
importedAt Interger
importedAt Interger唯讀,新增時間。
let date = new Date(item.importedAt);modifiedAt Interger
modifiedAt Interger唯讀,最後修改時間。
let modifiedDate = new Date(item.modifiedAt);noThumbnail boolean
noThumbnail boolean唯讀,檔案是否有縮圖,無縮圖檔案將以原始檔案進行預覽。
noPreview boolean
noPreview boolean唯讀,檔案是否支援雙擊預覽。
filePath string
filePath string唯讀,返回檔案所在路徑。
fileURL string
fileURL string唯讀,返回檔案所在路徑之連結(file:///)。
thumbnailPath string
thumbnailPath string唯讀,返回縮圖路徑。
thumbnailURL string
thumbnailURL string唯讀,返回縮圖連結(file:///),如需在 HTML 顯示該檔案,可以使用這個屬性。
metadataFilePathstring
metadataFilePathstring唯讀,該檔案 metadata.json 所在位置。
🦄 最佳實踐: 為了確保數據安全性,請使用 item API 提供的 save() 方法進行數據的存取與修改,應避免直接 metadata.json。
Last updated