Basic Usage
Core Functionality
Authenticate
The first step is to initialize the SDK client with the credentials that have been provided to you:
# AUTHENTICATE CLIENT
client = pex.PrivateSearchClient("CLIENT_ID", "CLIENT_SECRET")// AUTHENTICATE CLIENT
client, err := pex.NewPrivateSearchClient("clientID", "clientSecret")
if err != nil {
panic(err)
}
defer client.Close()// AUTHENTICATE CLIENT
$client = new Pex\PrivateSearchClient(CLIENT_ID, CLIENT_SECRET);// AUTHENTICATE CLIENT
let client = new pex.PrivateSearchClient(CLIENT_ID, CLIENT_SECRET)
await client.connect()Generate Fingerprint
First, generate a fingerprint from the media file you. You can either generate a fingerprint to ingest into your custom database or you can generate a fingerprint to initiate a search with.
# CREATE AUDIO FINGERPRINT FROM MEDIA FILE
ft = client.fingerprint_file("/path/to/file.mp3", pex.FingerprintType.AUDIO)
# CREATE MELODY FINGERPRINT FROM MEDIA FILE
ft = client.fingerprint_file("/path/to/file.mp3", pex.FingerprintType.MELODY)
# CREATE VIDEO FINGERPRINT FROM MEDIA FILE
ft = client.fingerprint_file("/path/to/file.mp3", pex.FingerprintType.VIDEO)
# CREATE AUDIO FINGERPRINT FROM BYTE BUFFER HOLDING A MEDIA FILE
ft = client.fingerprint_buffer([]byte, pex.FingerprintType.AUDIO)
# CREATE MELODY FINGERPRINT FROM BYTE BUFFER HOLDING A MEDIA FILE
ft = client.fingerprint_buffer([]byte, pex.FingerprintType.MELODY)
# CREATE VIDEO FINGERPRINT FROM BYTE BUFFER HOLDING A MEDIA FILE
ft = client.fingerprint_buffer([]byte, pex.FingerprintType.VIDEO)// CREATE AUDIO FINGERPRINT FROM MEDIA FILE
ft, err := client.FingerprintFile(inputFile, pex.FingerprintTypeAudio)
if err != nil {
panic(err)
}
// CREATE MELODY FINGERPRINT FROM MEDIA FILE
ft, err := client.FingerprintFile(inputFile, pex.FingerprintTypeMelody)
if err != nil {
panic(err)
}
// CREATE VIDEO FINGERPRINT FROM MEDIA FILE
ft, err := client.FingerprintFile(inputFile, pex.FingerprintTypeVideo)
if err != nil {
panic(err)
}
// CREATE AUDIO FINGERPRINT FROM BYTE BUFFER HOLDING A MEDIA FILE
ft, err := client.FingerprintBuffer([]byte, pex.FingerprintTypeAudio)
if err != nil {
panic(err)
}
// CREATE MELODY FINGERPRINT FROM BYTE BUFFER HOLDING A MEDIA FILE
ft, err := client.FingerprintBuffer([]byte, pex.FingerprintTypeMelody)
if err != nil {
panic(err)
}
// CREATE VIDEO FINGERPRINT FROM BYTE BUFFER HOLDING A MEDIA FILE
ft, err := client.FingerprintBuffer([]byte, pex.FingerprintTypeVideo)
if err != nil {
panic(err)
}// CREATE AUDIO FINGERPRINT FROM MEDIA FILE
$ft = $client->fingerprintFile(INPUT_FILE, [Pex\FingerprintType::Audio]);
// CREATE MELODY FINGERPRINT FROM MEDIA FILE
$ft = $client->fingerprintFile(INPUT_FILE, [Pex\FingerprintType::Melody]);
// CREATE VIDEO FINGERPRINT FROM MEDIA FILE
$ft = $client->fingerprintFile(INPUT_FILE, [Pex\FingerprintType::Video]);
// CREATE AUDIO FINGERPRINT FROM BYTE BUFFER HOLDING A MEDIA FILE
$ft = $client->fingerprintBuffer([]byte, [Pex\FingerprintType::Audio]);
// CREATE MELODY FINGERPRINT FROM BYTE BUFFER HOLDING A MEDIA FILE
$ft = $client->fingerprintBuffer([]byte, [Pex\FingerprintType::Melody]);
// CREATE VIDEO FINGERPRINT FROM BYTE BUFFER HOLDING A MEDIA FILE
$ft = $client->fingerprintBuffer([]byte, [Pex\FingerprintType::Video]);// CREATE AUDIO FINGERPRINT FROM MEDIA FILE
let ft = await client.fingerprintFile("video.mp4", [pex.AUDIO])
// CREATE MELODY FINGERPRINT
let ft = await client.fingerprintFile("video.mp4", [pex.MELODY])
// CREATE VIDEO FINGERPRINT
let ft = await client.fingerprintFile("video.mp4", [pex.VIDEO])
// CREATE AUDIO FINGERPRINT FROM BYTE BUFFER HOLDING A MEDIA FILE
let ft = await client.fingerprintBuffer([]byte, [pex.AUDIO])
// CREATE MELODY FINGERPRINT FROM BYTE BUFFER HOLDING A MEDIA FILE
let ft = await client.fingerprintBuffer([]byte, [pex.MELODY])
// CREATE MELODY FINGERPRINT FROM BYTE BUFFER HOLDING A MEDIA FILE
let ft = await client.fingerprintBuffer([]byte, [pex.VIDEO])Searching Functionality
Initiate Search
Once the fingerprint has been generated, you are ready to initiate a search:
# BUILD CUSTOM DATABASE SEARCH REQUEST
req = pex.PrivateSearchRequest(fingerprint=ft)
# START SEARCH
future = client.start_search(req)// BUILD CUSTOM DATABASE SEARCH REQUEST
req := &pex.PrivateSearchRequest{
Fingerprint: ft,
}
// START SEARCH
fut, err := client.StartSearch(req)
if err != nil {
panic(err)
}// BUILD CUSTOM DATABASE SEARCH REQUEST
$req = new \Pex\PrivateSearchRequest($ft);
// START SEARCH
$fut = $client->startSearch($req);// START CUSTOM DATABASE SEARCH REQUEST
let result = await client.startSearch({
"fingerprint": ft
})Retrieve Search Results
Once a search is complete, you can retrieve the results of the search:
# RETRIEVE SEARCH RESULTS
result = future.get()// RETRIEVE SEARCH RESULTS
res, err := fut.Get()
if err != nil {
panic(err)
}// RETRIEVE SEARCH RESULTS
$res = $fut->get();// THE STARTSEARCH FUNCTION DESCRIBED IN THE PREVIOUS SECTION WILL AUTOMATICALLY RETRIEVE THE RESULTS WHEN THE SEARCH IS COMPLETEDInterpret Search Results
To view details on what's contained in a search response, please see the following section: Search Response
Catalog Management
Add Fingerprint to Custom Database
Now that the fingerprint has been generated, you can add that fingerprint file to your custom database. You can associate a "custom_id" string of your choosing for each fingerprint (to help you uniquely identify each fingerprint that is in your database):
# ADD FINGERPRINT CUSTOM DATABASE
client.ingest("custom_id", ft)# ADD FINGERPRINT CUSTOM DATABASE
if err := client.Ingest("custom_id", ft); err != nil {
panic(err)
}// ADD FINGERPRINT CUSTOM DATABASE
$client->ingest("custom_id", $ft);// ADD FINGERPRINT CUSTOM DATABASE
await client.ingest("my-provided-id", ft)Archive Fingerprint from your Custom Database
If you would like to remove an asset from your Custom Database so that it can no longer be matched against, you can do so with this command:
# ARCHIVE FINGERPRINT
client.archive("custom_id")# ARCHIVE FINGERPRINT
if err := client.Archive("custom_id"); err != nil {
panic(err)
}// ARCHIVE FINGERPRINT
$client->archive("custom_id");// ARCHIVE FINGERPRINT
await client.ingest("my-provided-id")Lists Assets in your Custom Database
If you would like to view what assets are currently in your Custom Database, you can do so with the Lister functionality:
lister = client.list_entries(pex.ListEntriesRequest())
// To limit the number of entries:
// lister = client.list_entries(pex.ListEntriesRequest(limit=5))
while lister.has_next_page:
entries = lister.list()
for entry in entries:
print(entry)
lister := client.ListEntries(&pex.ListEntriesRequest{})
// To limit the number of entries:
// lister := client.ListEntries(&pex.ListEntriesRequest{
// Limit: 5,
// })
for lister.HasNextPage {
entries := lister.List()
for _, entry := range entries {
fmt.Println(entry)
}
}$lister = $client->listEntries(new Pex\ListEntriesRequest());
// To limit the number of entries:
// $lister = $client->listEntries(new Pex\ListEntriesRequest(limit: 5));
while ($lister->hasNextPage()) {
$entries = $lister->list();
foreach ($entries as $entry) {
echo json_encode($entry, JSON_PRETTY_PRINT) . PHP_EOL;
}
}let lister = client.listEntries({});
// To limit the number of entries:
// let lister = client.listEntries({limit: 5});
while (lister.hasNextPage()) {
let entries = await lister.list();
for (const entry of entries) {
console.log(entry);
}
}Last updated