move_media 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 |