Spaces:
Running
Running
File size: 2,425 Bytes
b98ad90 1f05f10 c313758 1f05f10 e0d4ec0 1f05f10 e0d4ec0 b98ad90 1f05f10 b98ad90 1f05f10 b98ad90 e0d4ec0 3dadf94 1f05f10 b98ad90 1f05f10 b98ad90 1f05f10 b98ad90 1f05f10 b98ad90 1f05f10 b98ad90 1f05f10 b98ad90 1f05f10 9d7e455 b98ad90 1f05f10 b98ad90 1f05f10 b98ad90 1f05f10 b98ad90 1f05f10 b2a43a2 b98ad90 1f05f10 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
import { createRepo, commit, CommitFile, whoAmI } from "@huggingface/hub";
const c = console;
const FILES_TO_UPLOAD = [
`${window.location.origin}/mobilenet/model.json`,
`${window.location.origin}/mobilenet/group1-shard1of2`,
`${window.location.origin}/mobilenet/group1-shard2of2`,
`${window.location.origin}/mobilenet/coffee.jpg`,
`${window.location.origin}/mobilenet/README.md`,
];
function filenameFromURL(url: string): string {
return url.substring(url.lastIndexOf("/") + 1);
}
window.document.addEventListener("DOMContentLoaded", () => {
const tokenEl = document.querySelector<HTMLInputElement>("#token")!;
const repoNameEl = document.querySelector<HTMLInputElement>("#repo_name")!;
const button = document.querySelector("#submit")!;
const output = document.querySelector("#logs")!;
const form = document.getElementsByTagName("form")[0];
const storedToken = window.localStorage.getItem("hf_token");
if (storedToken) {
tokenEl.value = storedToken;
/// ^to help in dev.
}
repoNameEl.value = `tfjs-mobilenet-${Date.now() % 1_000}`;
/// "random" repo name
form.addEventListener("submit", async (event) => {
event.preventDefault();
const token = tokenEl.value;
const repoName = repoNameEl.value;
if (!token || !repoName) {
alert("You need a token and a repo name");
return;
}
button.setAttribute("disabled", "disabled");
const credentials = {
accessToken: token,
};
try {
const { name: username } = await whoAmI({ credentials });
const name = `${username}/${repoName}`;
const { repoUrl } = await createRepo({
repo: {
type: "model",
name,
},
credentials,
});
const operations: CommitFile[] = await Promise.all(
FILES_TO_UPLOAD.map(async (file) => {
return {
operation: "addOrUpdate",
path: filenameFromURL(file),
// upload remote file
content: new URL(file),
};
})
);
const commitOutput = await commit({
repo: {
type: "model",
name,
},
credentials,
title: "upload model",
operations,
});
c.log(commitOutput);
button.insertAdjacentHTML(
"afterend",
`<div class="text-green-500 mb-6">🎉 Upload complete! Model page is <a target="_blank" class="text-bold underline" href="${repoUrl}">${repoUrl}</a></div>`
);
} catch (err) {
console.error(err);
output.append("\n" + err);
}
button.removeAttribute("disabled");
});
});
|