lib/ayadn/action.rb in ayadn-1.0.13 vs lib/ayadn/action.rb in ayadn-1.1.0
- old
+ new
@@ -92,11 +92,11 @@
doing(options)
stream = @api.get_conversations(options)
(no_new_posts unless Databases.has_new?(stream, 'explore:replies')) if options[:new]
Databases.save_max_id(stream)
render_view(stream, options)
- Scroll.new(@api, @view).conversations(options) if options[:scroll]
+ Scroll.new(@api, @view).replies(options) if options[:scroll]
rescue => e
Errors.global_error("action/conversations", options, e)
ensure
Databases.close_all
end
@@ -162,11 +162,16 @@
missing_username if username.empty?
username = Workers.add_arobase_if_missing(username)
doing(options)
stream = @api.get_whatstarred(username, options)
user_404(username) if meta_404(stream)
- stream['data'].empty? ? no_data('whatstarred') : render_view(stream, options)
+ no_data('whatstarred') if stream['data'].empty?
+ if options[:extract]
+ view_all_stars_links(stream)
+ else
+ render_view(stream, options)
+ end
rescue => e
Errors.global_error("action/whatstarred", [username, options], e)
ensure
Databases.close_all
end
@@ -243,10 +248,26 @@
ensure
Databases.close_all
end
end
+ def delete_m(args)
+ begin
+ missing_message_id unless args.length == 2
+ message_id = args[1]
+ missing_message_id unless message_id.is_integer?
+ channel_id = get_channel_id_from_alias(args[0])
+ print Status.deleting_message(message_id)
+ resp = @api.delete_message(channel_id, message_id)
+ check_message_has_been_deleted(message_id, resp)
+ rescue => e
+ Errors.global_error("action/delete message", message_id, e)
+ ensure
+ Databases.close_all
+ end
+ end
+
def unfollow(username)
begin
missing_username if username.empty?
username = Workers.add_arobase_if_missing(username)
puts Status.unfollowing(username)
@@ -386,11 +407,15 @@
def hashtag(hashtag, options)
begin
doing(options)
stream = @api.get_hashtag(hashtag)
no_data('hashtag') if stream['data'].empty?
- render_view(stream, options)
+ if options[:extract]
+ view_all_hashtag_links(stream, hashtag)
+ else
+ render_view(stream, options)
+ end
rescue => e
Errors.global_error("action/hashtag", [hashtag, options], e)
ensure
Databases.close_all
end
@@ -399,11 +424,15 @@
def search(words, options)
begin
doing(options)
stream = @api.get_search(words, options)
no_data('search') if stream['data'].empty?
- render_view(stream, options)
+ if options[:extract]
+ view_all_search_links(stream, words)
+ else
+ render_view(stream, options)
+ end
rescue => e
Errors.global_error("action/search", [words, options], e)
ensure
Databases.close_all
end
@@ -486,16 +515,20 @@
ensure
Databases.close_all
end
end
- def view_settings
+ def view_settings(options)
begin
- @view.clear_screen
- @view.show_settings
+ if options[:raw]
+ puts Settings.options.to_json
+ else
+ @view.clear_screen
+ @view.show_settings
+ end
rescue => e
- Errors.global_error("action/settings", nil, e)
+ Errors.global_error("action/settings", options, e)
ensure
Databases.close_all
end
end
@@ -696,10 +729,11 @@
end
def write
begin
writer = Post.new
+ puts Status.writing
puts Status.post
lines_array = writer.compose
writer.check_post_length(lines_array)
@view.clear_screen
puts Status.posting
@@ -719,10 +753,11 @@
begin
missing_username if username.empty?
temp = Workers.add_arobase_if_missing(username)
username = [temp]
messenger = Post.new
+ puts Status.message_from(username)
puts Status.message
lines_array = messenger.compose
messenger.check_message_length(lines_array)
@view.clear_screen
puts Status.posting
@@ -740,10 +775,11 @@
def send_to_channel(channel_id)
begin
channel_id = get_channel_id_from_alias(channel_id)
messenger = Post.new
+ puts Status.writing
puts Status.post
lines_array = messenger.compose
messenger.check_message_length(lines_array)
@view.clear_screen
puts Status.posting
@@ -771,10 +807,11 @@
replied_to = @api.get_details(post_id)
post_404(post_id) if meta_404(replied_to)
end
end
poster = Post.new
+ puts Status.writing
puts Status.reply
lines_array = poster.compose
poster.check_post_length(lines_array)
@view.clear_screen
reply = poster.reply(lines_array.join("\n"), Workers.new.build_posts([replied_to['data']]))
@@ -800,10 +837,11 @@
abort(Status.empty_fields) if el.length == 0
end
@view.clear_screen
#text_to_post = "#nowplaying '#{itunes.track}' from '#{itunes.album}' by #{itunes.artist}"
text_to_post = "#nowplaying\nTitle: ‘#{itunes.track}’\nArtist: #{itunes.artist}\nfrom ‘#{itunes.album}’"
+ puts Status.writing
show_nowplaying(text_to_post)
unless STDIN.getch == ("y" || "Y")
puts "\nCanceled.\n\n".color(:red)
exit
end
@@ -931,10 +969,19 @@
else
whine(Status.not_deleted(post_id), resp)
end
end
+ def check_message_has_been_deleted(message_id, resp)
+ if resp['meta']['code'] == 200
+ puts Status.deleted_m(message_id)
+ Logs.rec.info "Deleted message #{message_id}."
+ else
+ whine(Status.not_deleted(message_id), resp)
+ end
+ end
+
def check_has_been_unblocked(username, resp)
if resp['meta']['code'] == 200
puts Status.unblocked(username)
Logs.rec.info "Unblocked #{username}."
else
@@ -1109,10 +1156,15 @@
def missing_post_id
puts Status.error_missing_post_id
exit
end
+ def missing_message_id
+ puts Status.error_missing_message_id
+ exit
+ end
+
def auto_save_followings(list)
FileOps.save_followings_list(list) if Settings.options[:backup][:auto_save_lists]
end
def auto_save_followers(list)
FileOps.save_followers_list(list) if Settings.options[:backup][:auto_save_lists]
@@ -1142,9 +1194,45 @@
def countdown(wait)
wait.downto(1) do |i|
print "\r#{sprintf("%02d", i)} sec... QUIT WITH [CTRL+C]".color(:cyan)
sleep 1
end
+ end
+
+ def links_from_posts(stream)
+ links = []
+ worker = Workers.new
+ stream['data'].each do |post|
+ from = worker.extract_links(post)
+ from.each {|l| links << l}
+ end
+ links.uniq!
+ links
+ end
+
+ def show_links(links)
+ links.each {|l| puts "#{l}\n".color(Settings.options[:colors][:link])}
+ end
+
+ def view_all_hashtag_links(stream, hashtag)
+ links = links_from_posts(stream)
+ @view.clear_screen
+ puts "Links from posts containing hashtag '##{hashtag}': \n".color(:cyan)
+ show_links(links)
+ end
+
+ def view_all_search_links(stream, words)
+ links = links_from_posts(stream)
+ @view.clear_screen
+ puts "Links from posts containing word(s) '#{words}': \n".color(:cyan)
+ show_links(links)
+ end
+
+ def view_all_stars_links(stream)
+ links = links_from_posts(stream)
+ @view.clear_screen
+ puts "Links from your starred posts: \n".color(:cyan)
+ show_links(links)
end
end
end