move_media 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 96324a9faf26f71f34af9eeb59a72d440ab4c9c10cb0f30f2a1749b3c56c43b2
4
- data.tar.gz: f75f768d3a3bdea408c1c0dffd31e8df0a1d7b06e02b2647724d14e0e9f2f740
3
+ metadata.gz: bbc3c34febc7c3534bf751850226feae655c2df7e6ed70227b78def5f50f59a0
4
+ data.tar.gz: a118e19ea6c2cd5bf8419ee28c94a373e34589b30fd35cf3348eaffbfb7a1dbb
5
5
  SHA512:
6
- metadata.gz: 8f4195c166973d455e113afbe8712371c0ff5c8c00aafc35d08db4ff96b0bcbff5042bd872c5b07b28fafc1f39181a01f430f59debdf2dad900bb8bb5cc3c0db
7
- data.tar.gz: fdcbb6978f8773bbc4bd1d5f30a27fe8c6780515387de85e79a4e74cce1e04cf99a17847127e87125ec4e1bfdc834da7f3ed08cc2344247f9feaeb0de1b066e6
6
+ metadata.gz: fff1c59518241eb0f1654c5e1ddeb70453a18123130ba67b1709636aab9e5ca15c51a644a52eebae77e8c63619010f1408391393b5cc25b23e8d3659b8bc5106
7
+ data.tar.gz: bceca00354765e350da95f24f25bc7a898215796d2a5f8e604201df1819712100793974a7fbbb8fce70daa727622f43bd95ca86ae22b0a3e8d8bc40f6d8fb44a
data/CHANGELOG.md CHANGED
@@ -1,2 +1,5 @@
1
+ ## 0.1.1 / 2022-08-20
2
+ * Fixed lots of bugs
3
+
1
4
  ## 0.1.0 / 2022-08-20
2
5
  * Initial version, described at https://www.mslinn.com/av_studio/210-sony-a7iii.html
data/README.md CHANGED
@@ -4,19 +4,14 @@
4
4
 
5
5
  `move_media` moves files from Sony Camera memory cards to permanent storage.
6
6
 
7
- ## Usage
8
-
9
- ```
10
- move_media
11
- ```
12
-
13
7
 
14
8
  ## Installation
15
9
 
16
10
  Modify the following and save as $HOME/.move_media:
17
11
 
18
12
  ```yaml
19
- destination: /mnt/e/media/staging
13
+ destination_images: /mnt/e/media/staging/THMBNL
14
+ destination_video: /mnt/e/media/staging/CLIP
20
15
  drive: 'h:'
21
16
  topic: sony
22
17
  ```
@@ -26,6 +21,21 @@ Install like this:
26
21
  $ gem install move_media
27
22
  ```
28
23
 
24
+
25
+ ## Usage
26
+ Check out this project, then run
27
+ ```
28
+ $ bin/move_media
29
+ Moving 7.97 GB video from /mnt/h/PRIVATE/M4ROOT/CLIP/C0002.MP4 to /mnt/e/media/staging/CLIP/sony_2022-08-20_0000002.mp4
30
+ Moving thumbnail from /mnt/h/PRIVATE/M4ROOT/THMBNL/C0002T01.JPG to /mnt/e/media/staging/THMBNL/C0002.jpg
31
+ Moving 2.37 GB video from /mnt/h/PRIVATE/M4ROOT/CLIP/C0003.MP4 to /mnt/e/media/staging/CLIP/sony_2022-08-20_0000003.mp4
32
+ Moving thumbnail from /mnt/h/PRIVATE/M4ROOT/THMBNL/C0003T01.JPG to /mnt/e/media/staging/THMBNL/C0003.jpg
33
+ Moving 1.23 GB video from /mnt/h/PRIVATE/M4ROOT/CLIP/C0004.MP4 to /mnt/e/media/staging/CLIP/sony_2022-08-20_0000004.mp4
34
+ Moving thumbnail from /mnt/h/PRIVATE/M4ROOT/THMBNL/C0004T01.JPG to /mnt/e/media/staging/THMBNL/C0004.jpg
35
+ Moving 1.48 GB video from /mnt/h/PRIVATE/M4ROOT/CLIP/C0005.MP4 to /mnt/e/media/staging/CLIP/sony_2022-08-20_0000005.mp4
36
+ ```
37
+
38
+
29
39
  ## Additional Information
30
40
  More information is available on
31
41
  [Mike Slinn’s website](https://www.mslinn.com/av_studio/210-sony-a7iii.html).
data/bin/move_media ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # frozen_string_literal: true
4
+
5
+ require_relative '../lib/move_media'
6
+
7
+ mm = MoveMedia.new
8
+ mm.main
data/lib/mm_util.rb CHANGED
@@ -14,8 +14,8 @@ class String
14
14
  end
15
15
  end
16
16
 
17
- def delete_mp4s(source)
18
- Dir[source]
17
+ def delete_xml_files(source)
18
+ Dir["#{source}/**/*.XML"].each { |file| File.delete(file) }
19
19
  end
20
20
 
21
21
  # @param mount_path [String] contains the mount path to be verified.
@@ -44,7 +44,10 @@ end
44
44
 
45
45
  # @param old_path [String] file to be moved; raises exception if not present
46
46
  def move_and_rename(old_path, new_path)
47
- File.rename(old_path, new_path)
47
+ raise "Error: #{new_path} already exists." if File.file?(new_path)
48
+
49
+ FileUtils.cp(old_path, new_path)
50
+ File.delete(old_path)
48
51
  end
49
52
 
50
53
  # @param source [String] Directory containing videos.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MoveMediaVersion
4
- VERSION = '0.1.0'
4
+ VERSION = '0.1.1'
5
5
  end
data/lib/move_media.rb CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  CONFIGURATION_FILE = "#{Dir.home}/.move_media"
4
4
 
5
+ require 'bytesize'
5
6
  require 'date'
6
7
  require_relative 'mm_util'
7
8
 
@@ -16,7 +17,11 @@ class MoveMedia
16
17
  @seq = 1
17
18
  end
18
19
 
19
- def make_video_name(fn_fq)
20
+ def human_file_size(filename)
21
+ ByteSize.new(File.size(filename)).to_s
22
+ end
23
+
24
+ def make_name(fn_fq)
20
25
  date = File.ctime(fn_fq).to_date
21
26
  seq = @seq.to_s.rjust(SIGNIFICANT_DIGITS, '0')
22
27
  "#{@topic}_#{date}_#{seq}"
@@ -24,18 +29,24 @@ class MoveMedia
24
29
 
25
30
  # Move Sony camera thumbnail for video_filename from source to destination
26
31
  # @return new path for thumbnail
27
- def move_thumbnail(video_filename_stem)
32
+ def process_thumbnail(fn_fq)
33
+ video_filename_stem = File.basename(fn_fq, '.*')
28
34
  old_path = sony_thumbnail(@source, video_filename_stem)
29
- old_name = File.basename(old_path, '.*')
30
- new_path = "#{@destination_images}/#{old_name}.jpg"
35
+ return nil if old_path.nil?
36
+
37
+ new_thumbnail_name = make_name(fn_fq)
38
+ new_path = "#{@destination_images}/#{new_thumbnail_name}.jpg"
39
+ puts "Moving thumbnail from #{old_path} to #{new_path}"
31
40
  move_and_rename(old_path, new_path)
32
41
  new_path
33
42
  end
34
43
 
35
44
  # Destination files are yyyy-mm-dd_topic_0001234.{mp4,jpg}
36
45
  def process_video(fn_fq)
37
- new_name = make_video_name(fn_fq)
46
+ new_name = make_name(fn_fq)
38
47
  new_name_fq = "#{@destination_video}/#{new_name}.mp4"
48
+
49
+ puts "Moving #{human_file_size(fn_fq)} video from #{fn_fq} to #{new_name_fq}"
39
50
  move_and_rename(fn_fq, new_name_fq)
40
51
  @seq += 1
41
52
  new_name_fq
@@ -72,9 +83,9 @@ class MoveMedia
72
83
  scan_for_next_seq(@destination_video)
73
84
  video_filenames(@source).each do |fn_fq|
74
85
  process_video(fn_fq)
75
- video_filename_stem = File.basename(fn_fq, '.*')
76
- move_thumbnail(video_filename_stem)
86
+ process_thumbnail(fn_fq)
77
87
  end
88
+ delete_xml_files(@source)
78
89
  unmount_memory_card(@source) unless already_mounted
79
90
  end
80
91
  end
data/move_media.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.description = <<~END_OF_DESC
11
11
  Moves files from Sony Camera memory cards to permanent storage.
12
12
  END_OF_DESC
13
- spec.bindir = 'exe'
13
+ # spec.bindir = 'exe'
14
14
  spec.email = ['mslinn@mslinn.com']
15
15
  spec.files = Dir['.rubocop.yml', 'LICENSE.*', 'Rakefile', '{lib,spec}/**/*', '*.gemspec', '*.md']
16
16
  spec.executables = 'move_media'
@@ -73,10 +73,10 @@ RSpec.describe(MoveMedia) do # rubocop:disable Metrics/BlockLength
73
73
  copy_videos_to_destination
74
74
  mm.scan_for_next_seq(destination_video)
75
75
  file_date = File.ctime(file_to_copy).to_date
76
- expect(mm.make_video_name(file_to_copy)).to eq("sony_#{file_date}_0000042")
76
+ expect(mm.make_name(file_to_copy)).to eq("sony_#{file_date}_0000042")
77
77
 
78
78
  mm.seq = 666
79
- expect(mm.make_video_name(file_to_copy)).to eq("sony_#{file_date}_0000666")
79
+ expect(mm.make_name(file_to_copy)).to eq("sony_#{file_date}_0000666")
80
80
  end
81
81
 
82
82
  it 'processes a video' do
metadata CHANGED
@@ -1,12 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: move_media
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Slinn
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
11
  date: 2022-08-23 00:00:00.000000000 Z
12
12
  dependencies: []
@@ -25,7 +25,7 @@ files:
25
25
  - LICENSE.txt
26
26
  - README.md
27
27
  - Rakefile
28
- - exe/move_media
28
+ - bin/move_media
29
29
  - lib/mm_util.rb
30
30
  - lib/move_media.rb
31
31
  - lib/move_media/version.rb
@@ -37,7 +37,6 @@ files:
37
37
  - spec/fixtures/source/PRIVATE/M4ROOT/THMBNL/C0001T04.JPG
38
38
  - spec/move_media_spec.rb
39
39
  - spec/spec_helper.rb
40
- - spec/status_persistence.txt
41
40
  homepage: https://www.mslinn.com/av_studio/210-sony-a7iii.html
42
41
  licenses:
43
42
  - MIT
@@ -77,5 +76,4 @@ test_files:
77
76
  - spec/fixtures/source/PRIVATE/M4ROOT/THMBNL/C0001T04.JPG
78
77
  - spec/move_media_spec.rb
79
78
  - spec/spec_helper.rb
80
- - spec/status_persistence.txt
81
79
  ...
data/exe/move_media DELETED
@@ -1,27 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- #
5
- # This file was generated by Bundler.
6
- #
7
- # The application 'move_media' is installed as part of a gem, and
8
- # this file is here to facilitate running it.
9
- #
10
-
11
- ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__)
12
-
13
- bundle_binstub = File.expand_path("bundle", __dir__)
14
-
15
- if File.file?(bundle_binstub)
16
- if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
17
- load(bundle_binstub)
18
- else
19
- abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
20
- Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
21
- end
22
- end
23
-
24
- require "rubygems"
25
- require "bundler/setup"
26
-
27
- load Gem.bin_path("move_media", "move_media")
@@ -1,12 +0,0 @@
1
- example_id | status | run_time |
2
- ------------------------------- | ------ | --------------- |
3
- ./spec/move_media_spec.rb[1:1] | passed | 0.00074 seconds |
4
- ./spec/move_media_spec.rb[1:2] | passed | 0.00008 seconds |
5
- ./spec/move_media_spec.rb[1:3] | passed | 0.0214 seconds |
6
- ./spec/move_media_spec.rb[1:4] | passed | 0.00024 seconds |
7
- ./spec/move_media_spec.rb[1:5] | passed | 0.00009 seconds |
8
- ./spec/move_media_spec.rb[1:6] | passed | 0.00054 seconds |
9
- ./spec/move_media_spec.rb[1:7] | passed | 0.00155 seconds |
10
- ./spec/move_media_spec.rb[1:8] | passed | 0.00093 seconds |
11
- ./spec/move_media_spec.rb[1:9] | passed | 0.00036 seconds |
12
- ./spec/move_media_spec.rb[1:10] | passed | 0.03275 seconds |