annotate go/imgtgz.go @ 14:c1dc1fcee7fe

print zoom.
author pyon@macmini
date Sun, 09 Dec 2018 14:38:15 +0900
parents d3b8cd5aeb70
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
1 /* imgtgz
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
2 [usage(1) archive images.]
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
3 $ mkdir 20170707
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
4 $ cd 20170707
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
5 $ ./imgtgz /mnt/nas/2017/20170702/xxxxx/0300012345
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
6
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
7 [usage(2) list directory.( for archive )]
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
8 $ cd /mnt/nas/2017/20170702
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
9 $ ./imgtgz -l
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
10 */
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
11 package main
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
12
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
13 import (
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
14 "archive/tar"
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
15 "compress/gzip"
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
16 "fmt"
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
17 "io"
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
18 "log"
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
19 "os"
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
20 "path/filepath"
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
21 "regexp"
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
22 "strings"
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
23 )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
24
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
25
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
26 func main() {
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
27 if len( os.Args ) == 1 {
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
28 help := `
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
29 [usage(1) archive images.]
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
30 $ mkdir 20170707
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
31 $ cd 20170707
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
32 $ ./imgtgz /mnt/nas/2017/20170702/xxxxx/0300012345
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
33
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
34 [usage(2) list directory.( for archive )]
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
35 $ cd /mnt/nas/2017/20170702
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
36 $ ./imgtgz -l
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
37 `
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
38 fmt.Fprintf( os.Stderr, help )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
39 os.Exit( 1 )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
40 }
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
41
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
42 if strings.Compare( os.Args[1], "-l" ) == 0 {
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
43 list_dir()
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
44 os.Exit( 0 )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
45 }
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
46
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
47 hdir := os.Args[1] //hdir := "Y:\\2014\\20141030\\角館2\\0100072890"
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
48 do_archive( hdir )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
49 }
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
50
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
51 func list_dir() {
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
52 r, err := regexp.Compile( "0[1238][0-9]{8}$" )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
53 if err != nil {
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
54 log.Fatal( err )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
55 }
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
56
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
57 filepath.Walk( ".", func( path string, info os.FileInfo, err error ) error {
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
58 if info.IsDir() && r.MatchString( path ) {
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
59 p, _ := filepath.Abs( "." )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
60 p = filepath.Join( p, path )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
61 p = filepath.FromSlash( p )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
62 fmt.Println( p )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
63 }
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
64 return nil
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
65 } )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
66 }
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
67
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
68 func do_archive( hdir string ) {
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
69 r, err := regexp.Compile( "0[1238][0-9]{8}$" )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
70 if err != nil {
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
71 log.Fatal( err )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
72 }
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
73 m := r.FindString( hdir )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
74 if len( m ) == 0 {
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
75 log.Fatal( err )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
76 }
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
77
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
78 var images []string
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
79
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
80 fi, _ := os.Stat( hdir )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
81 if fi.IsDir() {
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
82 filepath.Walk( hdir, func( path string, info os.FileInfo, err error ) error {
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
83 if !info.IsDir() && strings.HasSuffix( path, "jpg" ) {
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
84 images = append( images, path )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
85 }
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
86 return nil
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
87 } )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
88 } else {
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
89 fmt.Fprintf( os.Stderr, "%s: not directory\n", hdir )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
90 log.Fatal( err )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
91 }
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
92
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
93 tar_gzip( m + ".tgz", images )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
94 }
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
95
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
96 func tar_gzip( tgzfile string, images []string ) {
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
97
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
98 tgz, err := os.Create( tgzfile )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
99 if err != nil {
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
100 log.Fatal( err )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
101 }
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
102 defer tgz.Close()
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
103
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
104 gw := gzip.NewWriter( tgz )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
105 defer gw.Close()
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
106 tw := tar.NewWriter( gw )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
107 defer tw.Close()
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
108
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
109 for i, file := range images {
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
110 f, err := os.Open( file )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
111 if err != nil {
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
112 log.Fatal( err )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
113 }
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
114
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
115 stat, _ := f.Stat()
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
116 header := new( tar.Header )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
117 header.Name = fmt.Sprintf( "%d.jpg", i )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
118 header.Size = stat.Size()
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
119 header.Mode = int64( stat.Mode() )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
120 header.ModTime = stat.ModTime()
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
121
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
122 if err := tw.WriteHeader( header ); err != nil {
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
123 log.Fatal( err )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
124 }
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
125 if _, err := io.Copy( tw, f ); err != nil {
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
126 log.Fatal( err )
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
127 }
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
128 f.Close()
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
129 }
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
130 }
d3b8cd5aeb70 make repo.
pyon@macmini
parents:
diff changeset
131