A clean camera research CSV can still contain unanswered questions

Read structural findings separately from the evidence behind a setup answer.


A clean camera research CSV can still contain unanswered questions

A camera setup note often mixes two different problems: a file that is hard to share and a question that nobody has answered. Checking the file can help with the first problem. It cannot settle the second.

The Camera source log checker is a small, local Python utility for this distinction. It checks the structure of a research CSV without contacting a camera, fetching its manual or making network requests. The source, example file and tests are available under the MIT license. Python 3.9 or later is required; there are no additional packages to install.

Give each question an evidence state

The log has six columns: model, question, answer, source_url, checked_on and status. Use the exact model label rather than a product-family name when recording a real device.

The three status values have different requirements:

Status What the row records Required completion fields
documented An answer associated with a source Answer, date and source URL
observed A result you recorded yourself Answer and date
unconfirmed A question still awaiting evidence Model and question; completion fields may be blank

A placeholder row can preserve an open question without suggesting a successful test:

model,question,answer,source_url,checked_on,status
Example Camera,Which viewing device will I use?,,,,unconfirmed

Replace the placeholder with your own model and question. Leaving an answer blank is more useful than supplying a guess merely to complete the sheet.

Read a finding before changing the answer

Save the downloaded source as camera_source_log.py, then run:

python3 camera_source_log.py research.csv
python3 camera_source_log.py research.csv --json

The checker reports missing columns, blank model or question fields, repeated model/question pairs, unsupported status values and invalid dates. Dates must be real calendar dates written as YYYY-MM-DD. Duplicate comparisons ignore capitalization and surrounding spaces.

A documented answer needs an absolute HTTP or HTTPS source URL. URLs containing a username or password generate a finding, so remove embedded login details before sharing the notes. That check is limited: it does not find every secret that might appear in an answer, a query string or another part of the file.

The tool uses Python's CSV reader. Quoted cells matter when a question or answer contains a comma; the Python CSV documentation explains the format and reader behavior. Edit the file in a CSV-aware application rather than treating every comma as a column separator.

Keep the exit code separate from the conclusion

Exit code 0 means the checklist found no structural issues. Code 1 means findings were reported. Code 2 means the file could not be read.

None of these outcomes verifies a manufacturer's statement, checks compatibility or proves that a viewing setup works. A log containing only well-formed unanswered questions can pass. Read the source, record the observation and decide whether the answer is supported separately.

IP Camera Hub publishes documentation-led camera buying and setup references. This utility organizes the notes behind that work. The CameraViewer app remains in development, with physical-camera tests pending.