vitunes 0.4.6 → 0.4.7
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.
- data/.gitignore +1 -0
- data/README.markdown +14 -4
- data/Rakefile +1 -1
- data/coverage.markdown +1 -0
- data/lib/vitunes-tool-objc +0 -0
- data/lib/vitunes.vim +12 -14
- data/lib/vitunes/version.rb +1 -1
- data/vitunes/main.m +9 -8
- metadata +2 -2
data/.gitignore
CHANGED
data/README.markdown
CHANGED
@@ -11,7 +11,7 @@ Benefits:
|
|
11
11
|
* Zen-minimalist textual UI works better on small screens than iTunes' complicated, multi-paned GUI
|
12
12
|
* Control iTunes from another computer over ssh, across the room or across the world
|
13
13
|
* Let multiple people control one instance of iTunes over ssh ([how][multi])
|
14
|
-
* Control iTunes from GNU/Linux
|
14
|
+
* Control iTunes from a GNU/Linux client computer over ssh
|
15
15
|
|
16
16
|
[multi]:https://github.com/danchoi/vitunes/wiki
|
17
17
|
|
@@ -118,9 +118,10 @@ query), iTunes will stop playing after that track ends.
|
|
118
118
|
If you want to use ViTunes to find and queue a bunch of tracks and have them play
|
119
119
|
in automatic succession, use the next feature...
|
120
120
|
|
121
|
-
### Copying tracks
|
121
|
+
### Copying and deleting tracks
|
122
122
|
|
123
123
|
* `,c` copy track(s) to a playlist
|
124
|
+
* `BACKSPACE` deletes track(s) from the playlist
|
124
125
|
|
125
126
|
To copy tracks, put the cursor on a track or select a range of tracks,
|
126
127
|
and then hit `,c` to select a playlist to copy them to. The tracks will be
|
@@ -129,6 +130,11 @@ added to the end of the playlist.
|
|
129
130
|
If this target playlist is already playing, you can keep queuing tracks to it
|
130
131
|
and let the mix play out automatically.
|
131
132
|
|
133
|
+
To delete tracks from the currently displayed playlist, put the cursor on a
|
134
|
+
track or select a range of tracks, and then hit `BACKSPACE` (the Apple delete
|
135
|
+
key) to remove them from the playlist that you are looking at.
|
136
|
+
|
137
|
+
|
132
138
|
### Managing playlists
|
133
139
|
|
134
140
|
* `,P` goes to the current playlist, if there is one
|
@@ -137,17 +143,21 @@ and let the mix play out automatically.
|
|
137
143
|
### Tips
|
138
144
|
|
139
145
|
If you want to see your entire library in a Vim buffer, load the `Library`
|
140
|
-
playlist.
|
146
|
+
playlist. It may take a few seconds to load your entire iTunes library. But
|
141
147
|
once it's loaded you'll be able to page through it at blazing speed and play
|
142
148
|
any tracks you want. The list will be sorted by artist.
|
143
149
|
|
150
|
+
If you have cheap Linux netbooks, they make good ViTunes controllers. I
|
151
|
+
control the iTunes on my Mac Mini from two Linux Asus 1015PEM netbooks that I
|
152
|
+
move around the apartment.
|
153
|
+
|
144
154
|
|
145
155
|
### Buy more music, support the ViTunes project
|
146
156
|
|
147
157
|
* `,z` opens Amazon's MP3 Store in your web browser
|
148
158
|
|
149
159
|
At no additional cost to you, Amazon will give the ViTunes developer a small
|
150
|
-
referral bonus (around 6%) when you buy MP3s via `,z`.
|
160
|
+
referral bonus (around 6%) when you buy MP3s via `,z`. Thank you for your support!
|
151
161
|
|
152
162
|
|
153
163
|
## Bug reports and feature requests
|
data/Rakefile
CHANGED
@@ -20,7 +20,7 @@ task :bump do
|
|
20
20
|
puts "Bumping version: #{oldver} => #{newver}"
|
21
21
|
newfile = file.gsub("VERSION = '#{oldver}'", "VERSION = '#{newver}'")
|
22
22
|
File.open(basefile, 'w') {|f| f.write newfile}
|
23
|
-
|
23
|
+
#`git commit -am 'Bump'`
|
24
24
|
end
|
25
25
|
|
26
26
|
desc "build and push website"
|
data/coverage.markdown
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
* [Hacker News](http://news.ycombinator.com/item?id=2836883)
|
1
2
|
* [Macworld](http://www.macworld.com/article/160936/2011/07/vitunes.html)
|
2
3
|
* [OSXDaily](http://osxdaily.com/2011/07/05/command-line-tunes-player-vitunes/)
|
3
4
|
* [One Thing Well](http://onethingwell.org/post/7341797630/vitunes)
|
data/lib/vitunes-tool-objc
CHANGED
Binary file
|
data/lib/vitunes.vim
CHANGED
@@ -8,7 +8,7 @@ if exists("g:vitunes_tool")
|
|
8
8
|
let s:vitunes_tool = g:vitunes_tool
|
9
9
|
else
|
10
10
|
" This is the development version (specific to D Choi's setup)
|
11
|
-
let s:vitunes_tool = '/
|
11
|
+
let s:vitunes_tool = 'dev/vitunes '
|
12
12
|
" Maybe I should make this a relative path
|
13
13
|
endif
|
14
14
|
if !exists("g:mapleader")
|
@@ -73,6 +73,7 @@ function! ViTunes()
|
|
73
73
|
noremap <buffer> <Leader>g :call <SID>openGenreDropdown()<cr>
|
74
74
|
noremap <buffer> <Leader>A :call <SID>openAlbumDropdown()<cr>
|
75
75
|
noremap <buffer> <Leader>c :call <SID>openAddToPlaylistDropDown()<cr>
|
76
|
+
noremap <buffer> <BS> :call <SID>deleteTracksFromPlaylist()<CR> "
|
76
77
|
noremap <buffer> <Leader>P :call <SID>gotoCurrentPlaylist()<cr>
|
77
78
|
|
78
79
|
noremap <buffer> > :call <SID>nextTrack()<cr>
|
@@ -87,8 +88,6 @@ function! ViTunes()
|
|
87
88
|
noremap <buffer> + :call <SID>changeVolume("volumeUp")<cr>
|
88
89
|
noremap <buffer> = :call <SID>changeVolume("volumeUp")<cr>
|
89
90
|
|
90
|
-
" Not working yet
|
91
|
-
" noremap <buffer> <BS> :call <SID>deleteTracksFromPlaylist()<CR> "
|
92
91
|
noremap <buffer> <Leader>i :close<CR>
|
93
92
|
noremap <buffer> <Leader>? :call <SID>help()<CR>
|
94
93
|
noremap <buffer> <Leader>z :call <SID>musicStore()<CR>
|
@@ -334,20 +333,19 @@ function! s:submitQueryOrSelection(command)
|
|
334
333
|
endif
|
335
334
|
endfunction
|
336
335
|
|
337
|
-
|
338
|
-
function! s:deleteTracksFromPlaylist() range
|
339
|
-
if (s:currentPlaylist == '')
|
340
|
-
echom "You can't delete tracks unless you're in a playlist"
|
341
|
-
return
|
342
|
-
endif
|
336
|
+
function! s:deleteTracksFromPlaylist() range
|
343
337
|
let s:selectedTrackIds = s:collectTrackIds(a:firstline, a:lastline)
|
344
338
|
let trackIds = join(s:selectedTrackIds, ',')
|
345
|
-
let
|
339
|
+
let playlist = s:lastPlaylist
|
340
|
+
let bcommand = s:vitunes_tool."deleteTracksFromPlaylist ".trackIds." ".shellescape(playlist)
|
341
|
+
let res = s:runCommand(bcommand)
|
342
|
+
setlocal modifiable
|
343
|
+
exec "silent! ".a:firstline.",".a:lastline."delete"
|
344
|
+
redraw
|
345
|
+
setlocal nomodifiable
|
346
346
|
echom bcommand
|
347
|
-
|
348
|
-
|
349
|
-
echom res
|
350
|
-
endfunction
|
347
|
+
return
|
348
|
+
endfunc
|
351
349
|
|
352
350
|
function! s:newPlaylist(name)
|
353
351
|
let command = s:vitunes_tool.'newPlaylist '.shellescape(a:name)
|
data/lib/vitunes/version.rb
CHANGED
data/vitunes/main.m
CHANGED
@@ -119,19 +119,17 @@ void addTracksToPlaylistName(NSString *trackIds, NSString *playlistName) {
|
|
119
119
|
}
|
120
120
|
}
|
121
121
|
|
122
|
-
|
123
|
-
void rmTracksFromPlaylistName(NSString *trackIds, NSString *playlistName) {
|
122
|
+
void deleteTracksFromPlaylistName(NSString *trackIds, NSString *playlistName) {
|
124
123
|
iTunesPlaylist *playlist = [[library playlists] objectWithName:playlistName];
|
125
|
-
|
126
124
|
for (NSString *trackID in [trackIds componentsSeparatedByString:@","]) {
|
127
|
-
|
125
|
+
NSNumber *databaseId = convertNSStringToNumber(trackID);
|
126
|
+
NSArray *xs = [[playlist tracks] filteredArrayUsingPredicate: [NSPredicate predicateWithFormat:@"databaseID == %@", databaseId]];
|
127
|
+
iTunesTrack* t = [xs objectAtIndex:0];
|
128
128
|
NSLog(@"Removing track: %@ from playlist: %@", [t name], [playlist name]);
|
129
|
-
[
|
129
|
+
[t delete];
|
130
130
|
}
|
131
|
-
|
132
131
|
}
|
133
132
|
|
134
|
-
|
135
133
|
void groupTracksBy(NSString *property) {
|
136
134
|
// gets list of all e.g. artists, genres
|
137
135
|
// NOTE year won't work yet
|
@@ -275,8 +273,11 @@ int main (int argc, const char * argv[]) {
|
|
275
273
|
} else if ([action isEqual: @"playPlaylist"]) {
|
276
274
|
playPlaylist([args objectAtIndex:0]);
|
277
275
|
} else if ([action isEqual: @"addTracksToPlaylist"]) {
|
278
|
-
// make sure to quote
|
276
|
+
// make sure to quote first arg
|
279
277
|
addTracksToPlaylistName([args objectAtIndex:0], [args objectAtIndex:1]);
|
278
|
+
} else if ([action isEqual: @"deleteTracksFromPlaylist"]) {
|
279
|
+
// make sure to quote first arg
|
280
|
+
deleteTracksFromPlaylistName([args objectAtIndex:0], [args objectAtIndex:1]);
|
280
281
|
} else if ([action isEqual: @"volumeUp"]) {
|
281
282
|
turnVolume(@"up");
|
282
283
|
} else if ([action isEqual: @"volumeDown"]) {
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vitunes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-08-
|
12
|
+
date: 2011-08-03 00:00:00.000000000Z
|
13
13
|
dependencies: []
|
14
14
|
description: Control iTunes with Vim
|
15
15
|
email:
|