File size: 1,532 Bytes
db57e6a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70d1d84
 
 
 
 
 
 
 
db57e6a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70d1d84
 
db57e6a
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
<?php
// analyze_receipt.php — Accept pre-extracted receipt (no video upload needed)
// Video stays local. Only the receipt JSON is sent to the HF Space.

require_once __DIR__ . '/config.php';
ensure_dirs();

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    fail_json('POST required', 405);
}

$raw = file_get_contents('php://input');
$data = json_decode($raw, true);

if (!$data) {
    fail_json('Invalid JSON body');
}

$receipt = $data['receipt'] ?? null;
$format = $data['format'] ?? 'arcade';
$hfToken = $data['hf_token'] ?? '';

// Save token if provided (for local mode — token stays on Space only)
if ($hfToken && !getenv('HF_TOKEN')) {
    file_put_contents(APP_ROOT . '/.hf_token', $hfToken);
    putenv("HF_TOKEN=$hfToken");
}

if (!$receipt) {
    fail_json('No receipt provided');
}

$id = $receipt['videoId'] ?? safe_id();
$receipt['videoId'] = $id;

// Save receipt
$outDir = RECEIPT_DIR . "/$id";
if (!is_dir($outDir)) {
    mkdir($outDir, 0775, true);
}
write_json_file("$outDir/receipt.json", $receipt);

// Save job
$job = [
    'id' => $id,
    'original_name' => $receipt['videoName'] ?? 'local_video',
    'upload_path' => 'LOCAL — not uploaded',
    'extension' => 'local',
    'status' => 'receipt_received',
    'created_at' => time(),
    'source_video_exposed' => false
];
write_json_file(RECEIPT_DIR . "/$id.job.json", $job);

json_response([
    'ok' => true,
    'id' => $id,
    'message' => 'Receipt received. Video stayed local.',
    'token_set' => !empty($hfToken) || getenv('HF_TOKEN')
]);