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
93
// DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
// Version 2, December 2004
//
// Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
//
// Everyone is permitted to copy and distribute verbatim or modified
// copies of this license document, and changing it is allowed as long
// as the name is changed.
//
// DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
// TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
//
// 0. You just DO WHAT THE FUCK YOU WANT TO.
//
// Author: zadig <thomas chr(0x40) bailleux.me>
//! A simple parser and reader for Thumbs.db files.
//!
//! This uses the crate `ole` for parsing Thumbs.db files.
//! Then, it extracts the thumbnails.
//!
//! ## Example
//!
//! ```
//!
//! use thumbsdb::ThumbsDb;
//!
//! // Reads a Thumbs.db file
//! let thumbsdb = ThumbsDb::from_path("assets/Thumbs.db").unwrap();
//!
//! // Iterates through all thumbnails inside the Thumbs.db
//! for thumbnail in thumbsdb.iterate() {
//! let mut buf = std::vec::Vec::<u8>::new();
//!
//! // Extracts the thumbnail and saves it into a file
//! match thumbsdb.extract_thumbnail(thumbnail, &mut buf) {
//! Ok(()) => {
//! use std::io::Write;
//! let mut output_file
//! = std::fs::File::create(format!("assets/streams/{}",
//! thumbnail.name())).unwrap();
//! output_file.write_all(&buf);
//! },
//! Err(e) => eprintln!("error: {}", e)
//! };
//! }
//!
//! ```
//!
//! ## Compatibility
//!
//! This crate works fine for rust 1.9 or greater.
extern crate ole;
pub use ThumbsDb;
pub use Error;
pub use Thumbnail;
pub use ThumbnailIterator;