in_our_time 0.6.0 → 0.7.0
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 +4 -4
 - data/VERSION +1 -1
 - data/lib/iot/iot.rb +130 -102
 - data/lib/iot/keyboard_events.rb +13 -13
 - metadata +1 -1
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 956e4e9773aad8f71897640c04d397bd566f512d
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 39f0098a0bb42d7f4a16d04fb518f68bfb2fb61a
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 62af2485c95313e901ac884a6eb111a8cc2d407aafa64a1feda55e27c48ac85c1c3183781d4cc0d8c5f672aeeddf11a6bffc693aaafbde34d957e21d04605d30
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: b6bb8e7f15b7f92ce50fe922fc04f418c7058506dbd78b09ce069bd1b8ad77b13a18064dbdf1dbc578df45e379c947f849ae1d294271e28bcd9f0acaa17980cd
         
     | 
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            0. 
     | 
| 
      
 1 
     | 
    
         
            +
            0.7.0
         
     | 
    
        data/lib/iot/iot.rb
    CHANGED
    
    | 
         @@ -74,13 +74,14 @@ class InOurTime 
     | 
|
| 
       74 
74 
     | 
    
         
             
              end
         
     | 
| 
       75 
75 
     | 
    
         | 
| 
       76 
76 
     | 
    
         
             
              def quit code = 0
         
     | 
| 
      
 77 
     | 
    
         
            +
                @key.kill if @key
         
     | 
| 
      
 78 
     | 
    
         
            +
                @tic.kill if @tic
         
     | 
| 
      
 79 
     | 
    
         
            +
                sleep 0.5
         
     | 
| 
       77 
80 
     | 
    
         
             
                STDIN.echo = true
         
     | 
| 
       78 
81 
     | 
    
         
             
                STDIN.cooked!
         
     | 
| 
       79 
     | 
    
         
            -
                 
     | 
| 
      
 82 
     | 
    
         
            +
                puts "\n\n#{@error_msg}" if @error_msg
         
     | 
| 
       80 
83 
     | 
    
         
             
                puts 'Quitting...'
         
     | 
| 
       81 
     | 
    
         
            -
                 
     | 
| 
       82 
     | 
    
         
            -
                @key.kill
         
     | 
| 
       83 
     | 
    
         
            -
                @tic.kill
         
     | 
| 
      
 84 
     | 
    
         
            +
                sleep 0.5
         
     | 
| 
       84 
85 
     | 
    
         
             
                exit code
         
     | 
| 
       85 
86 
     | 
    
         
             
              end
         
     | 
| 
       86 
87 
     | 
    
         | 
| 
         @@ -89,9 +90,15 @@ class InOurTime 
     | 
|
| 
       89 
90 
     | 
    
         
             
                do_events while Time.now - @start_time < 1.5
         
     | 
| 
       90 
91 
     | 
    
         
             
              end
         
     | 
| 
       91 
92 
     | 
    
         | 
| 
       92 
     | 
    
         
            -
              def iot_print x, col = @text_colour
         
     | 
| 
       93 
     | 
    
         
            -
                 
     | 
| 
       94 
     | 
    
         
            -
             
     | 
| 
      
 93 
     | 
    
         
            +
              def iot_print x, col = @text_colour, now = false
         
     | 
| 
      
 94 
     | 
    
         
            +
                content = ''
         
     | 
| 
      
 95 
     | 
    
         
            +
                  content << x.colorize(col) if @config[:colour]
         
     | 
| 
      
 96 
     | 
    
         
            +
                  content << x unless @config[:colour]
         
     | 
| 
      
 97 
     | 
    
         
            +
                  unless now
         
     | 
| 
      
 98 
     | 
    
         
            +
                    @content << content
         
     | 
| 
      
 99 
     | 
    
         
            +
                  else
         
     | 
| 
      
 100 
     | 
    
         
            +
                    $stdout << content
         
     | 
| 
      
 101 
     | 
    
         
            +
                  end
         
     | 
| 
       95 
102 
     | 
    
         
             
              end
         
     | 
| 
       96 
103 
     | 
    
         | 
| 
       97 
104 
     | 
    
         
             
              def iot_puts x = '', col = @text_colour
         
     | 
| 
         @@ -281,8 +288,9 @@ class InOurTime 
     | 
|
| 
       281 
288 
     | 
    
         
             
                case res
         
     | 
| 
       282 
289 
     | 
    
         
             
                when Net::HTTPOK
         
     | 
| 
       283 
290 
     | 
    
         
             
                  File.open(filename_from_title(program[:title]) , 'wb') do |f|
         
     | 
| 
       284 
     | 
    
         
            -
                     
     | 
| 
      
 291 
     | 
    
         
            +
                    iot_puts "writing #{File.basename(filename_from_title(program[:title]))}", @system_colour
         
     | 
| 
       285 
292 
     | 
    
         
             
                    render
         
     | 
| 
      
 293 
     | 
    
         
            +
                    sleep 0.2
         
     | 
| 
       286 
294 
     | 
    
         
             
                    f.print(res.body)
         
     | 
| 
       287 
295 
     | 
    
         
             
                    iot_puts " written.", @system_colour
         
     | 
| 
       288 
296 
     | 
    
         
             
                    render
         
     | 
| 
         @@ -306,10 +314,10 @@ class InOurTime 
     | 
|
| 
       306 
314 
     | 
    
         | 
| 
       307 
315 
     | 
    
         
             
              def update
         
     | 
| 
       308 
316 
     | 
    
         
             
                clear_content
         
     | 
| 
       309 
     | 
    
         
            -
                 
     | 
| 
      
 317 
     | 
    
         
            +
                clear
         
     | 
| 
      
 318 
     | 
    
         
            +
                iot_print "Checking rss feeds ", @system_colour, :now
         
     | 
| 
       310 
319 
     | 
    
         
             
                local_rss.length.times do |count|
         
     | 
| 
       311 
     | 
    
         
            -
                  iot_print '.', @system_colour
         
     | 
| 
       312 
     | 
    
         
            -
                  render
         
     | 
| 
      
 320 
     | 
    
         
            +
                  iot_print '.', @system_colour, :now
         
     | 
| 
       313 
321 
     | 
    
         
             
                  fetch_uri rss_addresses[count], rss_files[count]
         
     | 
| 
       314 
322 
     | 
    
         
             
                end
         
     | 
| 
       315 
323 
     | 
    
         
             
                @config[:last_update] = now
         
     | 
| 
         @@ -384,20 +392,28 @@ class InOurTime 
     | 
|
| 
       384 
392 
     | 
    
         
             
                @sorted_titles.sort_by!(&:downcase) unless @sort == :age
         
     | 
| 
       385 
393 
     | 
    
         
             
              end
         
     | 
| 
       386 
394 
     | 
    
         | 
| 
      
 395 
     | 
    
         
            +
              def get_line_count idx
         
     | 
| 
      
 396 
     | 
    
         
            +
                idx += 1
         
     | 
| 
      
 397 
     | 
    
         
            +
                while idx % @page_height != 0
         
     | 
| 
      
 398 
     | 
    
         
            +
                  idx += 1
         
     | 
| 
      
 399 
     | 
    
         
            +
                end
         
     | 
| 
      
 400 
     | 
    
         
            +
                idx
         
     | 
| 
      
 401 
     | 
    
         
            +
              end
         
     | 
| 
      
 402 
     | 
    
         
            +
             
     | 
| 
       387 
403 
     | 
    
         
             
              def sort_selected title
         
     | 
| 
       388 
     | 
    
         
            -
                @sorted_titles.each_with_index do |st,  
     | 
| 
      
 404 
     | 
    
         
            +
                @sorted_titles.each_with_index do |st, sel|
         
     | 
| 
       389 
405 
     | 
    
         
             
                  if st == title
         
     | 
| 
       390 
     | 
    
         
            -
                     
     | 
| 
       391 
     | 
    
         
            -
                    idx += 1
         
     | 
| 
       392 
     | 
    
         
            -
                    while idx % @page_height != 0
         
     | 
| 
       393 
     | 
    
         
            -
                      idx += 1
         
     | 
| 
       394 
     | 
    
         
            -
                    end
         
     | 
| 
       395 
     | 
    
         
            -
                    return selected, idx
         
     | 
| 
      
 406 
     | 
    
         
            +
                    return sel, get_line_count(sel)
         
     | 
| 
       396 
407 
     | 
    
         
             
                  end
         
     | 
| 
       397 
408 
     | 
    
         
             
                end
         
     | 
| 
       398 
409 
     | 
    
         
             
              end
         
     | 
| 
       399 
410 
     | 
    
         | 
| 
       400 
     | 
    
         
            -
              def  
     | 
| 
      
 411 
     | 
    
         
            +
              def draw_selected
         
     | 
| 
      
 412 
     | 
    
         
            +
                @line_count = get_line_count(@selected)
         
     | 
| 
      
 413 
     | 
    
         
            +
                redraw
         
     | 
| 
      
 414 
     | 
    
         
            +
              end
         
     | 
| 
      
 415 
     | 
    
         
            +
             
     | 
| 
      
 416 
     | 
    
         
            +
              def draw_by_title title
         
     | 
| 
       401 
417 
     | 
    
         
             
                @selected, @line_count = sort_selected(title)
         
     | 
| 
       402 
418 
     | 
    
         
             
                redraw
         
     | 
| 
       403 
419 
     | 
    
         
             
              end
         
     | 
| 
         @@ -405,7 +421,7 @@ class InOurTime 
     | 
|
| 
       405 
421 
     | 
    
         
             
              def list_key
         
     | 
| 
       406 
422 
     | 
    
         
             
                title = @playing ? @playing : (@sorted_titles[@last_selected || 0])
         
     | 
| 
       407 
423 
     | 
    
         
             
                if top_or_end?
         
     | 
| 
       408 
     | 
    
         
            -
                   
     | 
| 
      
 424 
     | 
    
         
            +
                  draw_by_title title
         
     | 
| 
       409 
425 
     | 
    
         
             
                else
         
     | 
| 
       410 
426 
     | 
    
         
             
                  @last_selected = @selected
         
     | 
| 
       411 
427 
     | 
    
         
             
                  list_top_or_end
         
     | 
| 
         @@ -427,20 +443,20 @@ class InOurTime 
     | 
|
| 
       427 
443 
     | 
    
         | 
| 
       428 
444 
     | 
    
         
             
              def list_top
         
     | 
| 
       429 
445 
     | 
    
         
             
                @last_selected = @selected
         
     | 
| 
       430 
     | 
    
         
            -
                 
     | 
| 
       431 
     | 
    
         
            -
                 
     | 
| 
      
 446 
     | 
    
         
            +
                @selected = 0
         
     | 
| 
      
 447 
     | 
    
         
            +
                draw_selected
         
     | 
| 
       432 
448 
     | 
    
         
             
              end
         
     | 
| 
       433 
449 
     | 
    
         | 
| 
       434 
450 
     | 
    
         
             
              def list_end
         
     | 
| 
       435 
451 
     | 
    
         
             
                @last_selected = @selected
         
     | 
| 
       436 
     | 
    
         
            -
                 
     | 
| 
       437 
     | 
    
         
            -
                 
     | 
| 
      
 452 
     | 
    
         
            +
                @selected = @titles_count - 1
         
     | 
| 
      
 453 
     | 
    
         
            +
                draw_selected
         
     | 
| 
       438 
454 
     | 
    
         
             
              end
         
     | 
| 
       439 
455 
     | 
    
         | 
| 
       440 
456 
     | 
    
         
             
              def sort_key
         
     | 
| 
       441 
457 
     | 
    
         
             
                title = @sorted_titles[@selected]
         
     | 
| 
       442 
458 
     | 
    
         
             
                toggle_sort
         
     | 
| 
       443 
     | 
    
         
            -
                 
     | 
| 
      
 459 
     | 
    
         
            +
                draw_by_title title
         
     | 
| 
       444 
460 
     | 
    
         
             
              end
         
     | 
| 
       445 
461 
     | 
    
         | 
| 
       446 
462 
     | 
    
         
             
              def toggle_sort
         
     | 
| 
         @@ -451,7 +467,8 @@ class InOurTime 
     | 
|
| 
       451 
467 
     | 
    
         
             
              end
         
     | 
| 
       452 
468 
     | 
    
         | 
| 
       453 
469 
     | 
    
         
             
              def redraw
         
     | 
| 
       454 
     | 
    
         
            -
                 
     | 
| 
      
 470 
     | 
    
         
            +
                @line_count -= @page_height
         
     | 
| 
      
 471 
     | 
    
         
            +
                draw_page
         
     | 
| 
       455 
472 
     | 
    
         
             
              end
         
     | 
| 
       456 
473 
     | 
    
         | 
| 
       457 
474 
     | 
    
         
             
              def date
         
     | 
| 
         @@ -473,11 +490,16 @@ class InOurTime 
     | 
|
| 
       473 
490 
     | 
    
         
             
                @config[:mpg_player] == :mpg123
         
     | 
| 
       474 
491 
     | 
    
         
             
              end
         
     | 
| 
       475 
492 
     | 
    
         | 
| 
      
 493 
     | 
    
         
            +
              def get_player
         
     | 
| 
      
 494 
     | 
    
         
            +
                return 'afplay' if @config[:mpg_player] == :afplay
         
     | 
| 
      
 495 
     | 
    
         
            +
                @config[:mpg_player].to_s
         
     | 
| 
      
 496 
     | 
    
         
            +
              end
         
     | 
| 
      
 497 
     | 
    
         
            +
             
     | 
| 
       476 
498 
     | 
    
         
             
              def player_cmd
         
     | 
| 
       477 
499 
     | 
    
         
             
                if use_mpg123?
         
     | 
| 
       478 
500 
     | 
    
         
             
                  "mpg123 --remote-err -Cqk#{pre_delay}"
         
     | 
| 
       479 
501 
     | 
    
         
             
                else
         
     | 
| 
       480 
     | 
    
         
            -
                   
     | 
| 
      
 502 
     | 
    
         
            +
                  get_player
         
     | 
| 
       481 
503 
     | 
    
         
             
                end
         
     | 
| 
       482 
504 
     | 
    
         
             
              end
         
     | 
| 
       483 
505 
     | 
    
         | 
| 
         @@ -525,7 +547,7 @@ class InOurTime 
     | 
|
| 
       525 
547 
     | 
    
         
             
                @key = KeyboardEvents.new
         
     | 
| 
       526 
548 
     | 
    
         
             
                begin
         
     | 
| 
       527 
549 
     | 
    
         
             
                  if choice.to_i > 0 && choice.to_i < 6
         
     | 
| 
       528 
     | 
    
         
            -
                     
     | 
| 
      
 550 
     | 
    
         
            +
                    draw_by_title(results[choice.to_i - 1][0])
         
     | 
| 
       529 
551 
     | 
    
         
             
                    return
         
     | 
| 
       530 
552 
     | 
    
         
             
                  end
         
     | 
| 
       531 
553 
     | 
    
         
             
                end
         
     | 
| 
         @@ -568,48 +590,73 @@ class InOurTime 
     | 
|
| 
       568 
590 
     | 
    
         
             
                display_search_choice results, choice
         
     | 
| 
       569 
591 
     | 
    
         
             
              end
         
     | 
| 
       570 
592 
     | 
    
         | 
| 
       571 
     | 
    
         
            -
              def  
     | 
| 
       572 
     | 
    
         
            -
                 
     | 
| 
       573 
     | 
    
         
            -
             
     | 
| 
       574 
     | 
    
         
            -
             
     | 
| 
       575 
     | 
    
         
            -
             
     | 
| 
       576 
     | 
    
         
            -
             
     | 
| 
       577 
     | 
    
         
            -
             
     | 
| 
       578 
     | 
    
         
            -
             
     | 
| 
       579 
     | 
    
         
            -
             
     | 
| 
       580 
     | 
    
         
            -
             
     | 
| 
       581 
     | 
    
         
            -
             
     | 
| 
       582 
     | 
    
         
            -
             
     | 
| 
       583 
     | 
    
         
            -
             
     | 
| 
       584 
     | 
    
         
            -
             
     | 
| 
       585 
     | 
    
         
            -
                    end
         
     | 
| 
       586 
     | 
    
         
            -
                    case res
         
     | 
| 
       587 
     | 
    
         
            -
                    when Net::HTTPFound
         
     | 
| 
       588 
     | 
    
         
            -
                      iot_puts 'redirecting...', @system_colour
         
     | 
| 
       589 
     | 
    
         
            -
                      render
         
     | 
| 
       590 
     | 
    
         
            -
                      @doc = Oga.parse_xml(res.body)
         
     | 
| 
       591 
     | 
    
         
            -
                      redirect = @doc.css("body p a").text
         
     | 
| 
       592 
     | 
    
         
            -
                      break if download_audio(prg, redirect)
         
     | 
| 
       593 
     | 
    
         
            -
                      sleep 2
         
     | 
| 
       594 
     | 
    
         
            -
                    else
         
     | 
| 
       595 
     | 
    
         
            -
                      print_error_and_delay 'Error! Failed to be redirected!'
         
     | 
| 
       596 
     | 
    
         
            -
                      render
         
     | 
| 
       597 
     | 
    
         
            -
                      @no_play = true
         
     | 
| 
       598 
     | 
    
         
            -
                    end
         
     | 
| 
       599 
     | 
    
         
            -
                    retries += 1
         
     | 
| 
      
 593 
     | 
    
         
            +
              def download prg
         
     | 
| 
      
 594 
     | 
    
         
            +
                return if prg[:have_locally]
         
     | 
| 
      
 595 
     | 
    
         
            +
                retries = 0
         
     | 
| 
      
 596 
     | 
    
         
            +
                clear_content
         
     | 
| 
      
 597 
     | 
    
         
            +
                iot_puts "Fetching #{prg[:title]}", @system_colour
         
     | 
| 
      
 598 
     | 
    
         
            +
                render
         
     | 
| 
      
 599 
     | 
    
         
            +
                10.times do
         
     | 
| 
      
 600 
     | 
    
         
            +
                  begin
         
     | 
| 
      
 601 
     | 
    
         
            +
                    res = Net::HTTP.get_response(URI.parse(prg[:link]))
         
     | 
| 
      
 602 
     | 
    
         
            +
                  rescue SocketError => e
         
     | 
| 
      
 603 
     | 
    
         
            +
                    print_error_and_delay "Error: Failed to connect to Internet! (#{e.class})"
         
     | 
| 
      
 604 
     | 
    
         
            +
                    render
         
     | 
| 
      
 605 
     | 
    
         
            +
                    @no_play = true
         
     | 
| 
      
 606 
     | 
    
         
            +
                    break
         
     | 
| 
       600 
607 
     | 
    
         
             
                  end
         
     | 
| 
       601 
     | 
    
         
            -
                   
     | 
| 
       602 
     | 
    
         
            -
             
     | 
| 
      
 608 
     | 
    
         
            +
                  case res
         
     | 
| 
      
 609 
     | 
    
         
            +
                  when Net::HTTPFound
         
     | 
| 
      
 610 
     | 
    
         
            +
                    iot_puts 'redirecting...', @system_colour
         
     | 
| 
      
 611 
     | 
    
         
            +
                    render
         
     | 
| 
      
 612 
     | 
    
         
            +
                    @doc = Oga.parse_xml(res.body)
         
     | 
| 
      
 613 
     | 
    
         
            +
                    redirect = @doc.css("body p a").text
         
     | 
| 
      
 614 
     | 
    
         
            +
                    break if download_audio(prg, redirect)
         
     | 
| 
      
 615 
     | 
    
         
            +
                    sleep 2
         
     | 
| 
      
 616 
     | 
    
         
            +
                  else
         
     | 
| 
      
 617 
     | 
    
         
            +
                    print_error_and_delay 'Error! Failed to be redirected!'
         
     | 
| 
       603 
618 
     | 
    
         
             
                    render
         
     | 
| 
       604 
619 
     | 
    
         
             
                    @no_play = true
         
     | 
| 
       605 
620 
     | 
    
         
             
                  end
         
     | 
| 
      
 621 
     | 
    
         
            +
                  retries += 1
         
     | 
| 
       606 
622 
     | 
    
         
             
                end
         
     | 
| 
      
 623 
     | 
    
         
            +
                if retries >= 10
         
     | 
| 
      
 624 
     | 
    
         
            +
                  print_error_and_delay "Max retries downloading #{prg[:title]}"
         
     | 
| 
      
 625 
     | 
    
         
            +
                  render
         
     | 
| 
      
 626 
     | 
    
         
            +
                  @no_play = true
         
     | 
| 
      
 627 
     | 
    
         
            +
                end
         
     | 
| 
      
 628 
     | 
    
         
            +
              end
         
     | 
| 
      
 629 
     | 
    
         
            +
             
     | 
| 
      
 630 
     | 
    
         
            +
              # Cross-platform way of finding an executable in the $PATH.
         
     | 
| 
      
 631 
     | 
    
         
            +
              #
         
     | 
| 
      
 632 
     | 
    
         
            +
              #   which('ruby') #=> /usr/bin/ruby
         
     | 
| 
      
 633 
     | 
    
         
            +
             
     | 
| 
      
 634 
     | 
    
         
            +
              def which(cmd)
         
     | 
| 
      
 635 
     | 
    
         
            +
                exts = ENV['PATHEXT'] ? ENV['PATHEXT'].split(';') : ['']
         
     | 
| 
      
 636 
     | 
    
         
            +
                ENV['PATH'].split(File::PATH_SEPARATOR).each do |path|
         
     | 
| 
      
 637 
     | 
    
         
            +
                  exts.each { |ext|
         
     | 
| 
      
 638 
     | 
    
         
            +
                    exe = File.join(path, "#{cmd}#{ext}")
         
     | 
| 
      
 639 
     | 
    
         
            +
                    return exe if File.executable?(exe) && !File.directory?(exe)
         
     | 
| 
      
 640 
     | 
    
         
            +
                  }
         
     | 
| 
      
 641 
     | 
    
         
            +
                end
         
     | 
| 
      
 642 
     | 
    
         
            +
                return nil
         
     | 
| 
      
 643 
     | 
    
         
            +
              end
         
     | 
| 
      
 644 
     | 
    
         
            +
             
     | 
| 
      
 645 
     | 
    
         
            +
              def unknown_player cmd
         
     | 
| 
      
 646 
     | 
    
         
            +
                @error_msg = "Error: Unknown MPG Player: #{cmd}\r"
         
     | 
| 
      
 647 
     | 
    
         
            +
                quit 1
         
     | 
| 
      
 648 
     | 
    
         
            +
              end
         
     | 
| 
      
 649 
     | 
    
         
            +
             
     | 
| 
      
 650 
     | 
    
         
            +
              def run_program prg
         
     | 
| 
      
 651 
     | 
    
         
            +
                download prg
         
     | 
| 
       607 
652 
     | 
    
         
             
                unless @no_play
         
     | 
| 
       608 
653 
     | 
    
         
             
                  @playing = prg[:title]
         
     | 
| 
      
 654 
     | 
    
         
            +
                  player = player_cmd.split(' ').first
         
     | 
| 
      
 655 
     | 
    
         
            +
                  unknown_player(player) unless which(player)
         
     | 
| 
       609 
656 
     | 
    
         
             
                  window_title prg[:title]
         
     | 
| 
       610 
     | 
    
         
            -
                   
     | 
| 
      
 657 
     | 
    
         
            +
                  cmd = player_cmd + ' ' + filename_from_title(@playing)
         
     | 
| 
       611 
658 
     | 
    
         
             
                  @messages = []
         
     | 
| 
       612 
     | 
    
         
            -
                  @p_out, @p_in, @pid = PTY.spawn( 
     | 
| 
      
 659 
     | 
    
         
            +
                  @p_out, @p_in, @pid = PTY.spawn(cmd)
         
     | 
| 
       613 
660 
     | 
    
         
             
                end
         
     | 
| 
       614 
661 
     | 
    
         
             
                @no_play = nil
         
     | 
| 
       615 
662 
     | 
    
         
             
              end
         
     | 
| 
         @@ -716,24 +763,6 @@ class InOurTime 
     | 
|
| 
       716 
763 
     | 
    
         
             
                render
         
     | 
| 
       717 
764 
     | 
    
         
             
              end
         
     | 
| 
       718 
765 
     | 
    
         | 
| 
       719 
     | 
    
         
            -
              def display_list action
         
     | 
| 
       720 
     | 
    
         
            -
                case action
         
     | 
| 
       721 
     | 
    
         
            -
                when :next_page
         
     | 
| 
       722 
     | 
    
         
            -
                  draw_page
         
     | 
| 
       723 
     | 
    
         
            -
                when :previous_page
         
     | 
| 
       724 
     | 
    
         
            -
                  if @line_count > 0
         
     | 
| 
       725 
     | 
    
         
            -
                    @line_count -= (@page_height * 2)
         
     | 
| 
       726 
     | 
    
         
            -
                  else
         
     | 
| 
       727 
     | 
    
         
            -
                    @line_count = @titles_count
         
     | 
| 
       728 
     | 
    
         
            -
                    @selected = @line_count
         
     | 
| 
       729 
     | 
    
         
            -
                  end
         
     | 
| 
       730 
     | 
    
         
            -
                  draw_page
         
     | 
| 
       731 
     | 
    
         
            -
                when :same_page
         
     | 
| 
       732 
     | 
    
         
            -
                  @line_count -= @page_height
         
     | 
| 
       733 
     | 
    
         
            -
                  draw_page
         
     | 
| 
       734 
     | 
    
         
            -
                end
         
     | 
| 
       735 
     | 
    
         
            -
              end
         
     | 
| 
       736 
     | 
    
         
            -
             
     | 
| 
       737 
766 
     | 
    
         
             
              def help_option?
         
     | 
| 
       738 
767 
     | 
    
         
             
                ARGV[0] == '-h' || ARGV[0] == '--help' || ARGV[0] == '-?'
         
     | 
| 
       739 
768 
     | 
    
         
             
              end
         
     | 
| 
         @@ -757,6 +786,7 @@ class InOurTime 
     | 
|
| 
       757 
786 
     | 
    
         
             
                  " Theme Toggle   - T              "  <<
         
     | 
| 
       758 
787 
     | 
    
         
             
                  " List Top/End   - L              "  <<
         
     | 
| 
       759 
788 
     | 
    
         
             
                  " Update         - U              "  <<
         
     | 
| 
      
 789 
     | 
    
         
            +
                  " Download       - D              "  <<
         
     | 
| 
       760 
790 
     | 
    
         
             
                  " Info           - I              "  <<
         
     | 
| 
       761 
791 
     | 
    
         
             
                  " Help           - H              "  <<
         
     | 
| 
       762 
792 
     | 
    
         
             
                  " Quit           - Q              "  <<
         
     | 
| 
         @@ -770,11 +800,11 @@ class InOurTime 
     | 
|
| 
       770 
800 
     | 
    
         | 
| 
       771 
801 
     | 
    
         
             
              def help_partial x,y; help_screen[x..y]   end
         
     | 
| 
       772 
802 
     | 
    
         
             
              def help_title; help_partial(0, 1)        end
         
     | 
| 
       773 
     | 
    
         
            -
              def help_main; help_partial(2,  
     | 
| 
       774 
     | 
    
         
            -
              def help_cfg;  help_partial( 
     | 
| 
      
 803 
     | 
    
         
            +
              def help_main; help_partial(2, 13)        end
         
     | 
| 
      
 804 
     | 
    
         
            +
              def help_cfg;  help_partial(18, -1)       end
         
     | 
| 
       775 
805 
     | 
    
         | 
| 
       776 
806 
     | 
    
         
             
              def help_mpg
         
     | 
| 
       777 
     | 
    
         
            -
                scr = help_partial( 
     | 
| 
      
 807 
     | 
    
         
            +
                scr = help_partial(14,17)
         
     | 
| 
       778 
808 
     | 
    
         
             
                scr[0].rstrip! << ' (enabled)      ' if     use_mpg123?
         
     | 
| 
       779 
809 
     | 
    
         
             
                scr[0].rstrip! << ' (disabled)     ' unless use_mpg123?
         
     | 
| 
       780 
810 
     | 
    
         
             
                scr
         
     | 
| 
         @@ -954,44 +984,36 @@ class InOurTime 
     | 
|
| 
       954 
984 
     | 
    
         
             
              def page_forward
         
     | 
| 
       955 
985 
     | 
    
         
             
                return unless @line_count < @titles_count
         
     | 
| 
       956 
986 
     | 
    
         
             
                @selected = @line_count
         
     | 
| 
       957 
     | 
    
         
            -
                 
     | 
| 
      
 987 
     | 
    
         
            +
                draw_selected
         
     | 
| 
       958 
988 
     | 
    
         
             
              end
         
     | 
| 
       959 
989 
     | 
    
         | 
| 
       960 
990 
     | 
    
         
             
              def page_back
         
     | 
| 
       961 
991 
     | 
    
         
             
                @selected = @line_count - @page_height * 2
         
     | 
| 
       962 
992 
     | 
    
         
             
                @selected = @selected < 0 ? 0 : @selected
         
     | 
| 
       963 
     | 
    
         
            -
                 
     | 
| 
      
 993 
     | 
    
         
            +
                draw_selected
         
     | 
| 
       964 
994 
     | 
    
         
             
              end
         
     | 
| 
       965 
995 
     | 
    
         | 
| 
       966 
996 
     | 
    
         
             
              def previous
         
     | 
| 
       967 
     | 
    
         
            -
                 
     | 
| 
       968 
     | 
    
         
            -
                 
     | 
| 
       969 
     | 
    
         
            -
             
     | 
| 
       970 
     | 
    
         
            -
                  redraw
         
     | 
| 
       971 
     | 
    
         
            -
                else
         
     | 
| 
       972 
     | 
    
         
            -
                  display_list :previous_page
         
     | 
| 
       973 
     | 
    
         
            -
                end
         
     | 
| 
      
 997 
     | 
    
         
            +
                return if @selected <= 0
         
     | 
| 
      
 998 
     | 
    
         
            +
                @selected -= 1
         
     | 
| 
      
 999 
     | 
    
         
            +
                draw_selected
         
     | 
| 
       974 
1000 
     | 
    
         
             
              end
         
     | 
| 
       975 
1001 
     | 
    
         | 
| 
       976 
1002 
     | 
    
         
             
              def next
         
     | 
| 
       977 
1003 
     | 
    
         
             
                return if @selected >= (@titles_count - 1)
         
     | 
| 
       978 
1004 
     | 
    
         
             
                @selected += 1
         
     | 
| 
       979 
     | 
    
         
            -
                 
     | 
| 
       980 
     | 
    
         
            -
                  redraw
         
     | 
| 
       981 
     | 
    
         
            -
                else
         
     | 
| 
       982 
     | 
    
         
            -
                  display_list :next_page
         
     | 
| 
       983 
     | 
    
         
            -
                end
         
     | 
| 
      
 1005 
     | 
    
         
            +
                draw_selected
         
     | 
| 
       984 
1006 
     | 
    
         
             
              end
         
     | 
| 
       985 
1007 
     | 
    
         | 
| 
       986 
1008 
     | 
    
         
             
              def play
         
     | 
| 
       987 
     | 
    
         
            -
                if @playing
         
     | 
| 
       988 
     | 
    
         
            -
                  kill_audio
         
     | 
| 
       989 
     | 
    
         
            -
                else
         
     | 
| 
      
 1009 
     | 
    
         
            +
                if(@playing != @sorted_titles[@selected]) || (! @playing)
         
     | 
| 
       990 
1010 
     | 
    
         
             
                  kill_audio
         
     | 
| 
       991 
1011 
     | 
    
         
             
                  title = @sorted_titles[@selected]
         
     | 
| 
       992 
1012 
     | 
    
         
             
                  pr = select_program title
         
     | 
| 
       993 
1013 
     | 
    
         
             
                  run_program pr
         
     | 
| 
       994 
1014 
     | 
    
         
             
                  redraw
         
     | 
| 
      
 1015 
     | 
    
         
            +
                else
         
     | 
| 
      
 1016 
     | 
    
         
            +
                  kill_audio
         
     | 
| 
       995 
1017 
     | 
    
         
             
                end
         
     | 
| 
       996 
1018 
     | 
    
         
             
              end
         
     | 
| 
       997 
1019 
     | 
    
         | 
| 
         @@ -999,9 +1021,15 @@ class InOurTime 
     | 
|
| 
       999 
1021 
     | 
    
         
             
                  update
         
     | 
| 
       1000 
1022 
     | 
    
         
             
                  parse_rss
         
     | 
| 
       1001 
1023 
     | 
    
         
             
                  sort_titles
         
     | 
| 
       1002 
     | 
    
         
            -
                  @line_count = 0
         
     | 
| 
       1003 
1024 
     | 
    
         
             
                  @selected = 0
         
     | 
| 
       1004 
     | 
    
         
            -
                   
     | 
| 
      
 1025 
     | 
    
         
            +
                  draw_selected
         
     | 
| 
      
 1026 
     | 
    
         
            +
              end
         
     | 
| 
      
 1027 
     | 
    
         
            +
             
     | 
| 
      
 1028 
     | 
    
         
            +
              def download_key
         
     | 
| 
      
 1029 
     | 
    
         
            +
                title = @sorted_titles[@selected]
         
     | 
| 
      
 1030 
     | 
    
         
            +
                pr = select_program title
         
     | 
| 
      
 1031 
     | 
    
         
            +
                download pr
         
     | 
| 
      
 1032 
     | 
    
         
            +
                draw_selected
         
     | 
| 
       1005 
1033 
     | 
    
         
             
              end
         
     | 
| 
       1006 
1034 
     | 
    
         | 
| 
       1007 
1035 
     | 
    
         
             
              def quit_key
         
     | 
| 
         @@ -1013,7 +1041,7 @@ class InOurTime 
     | 
|
| 
       1013 
1041 
     | 
    
         
             
                case ip
         
     | 
| 
       1014 
1042 
     | 
    
         
             
                when :pause, :forward, :rewind, :list_key, :page_forward, :page_back,
         
     | 
| 
       1015 
1043 
     | 
    
         
             
                     :previous, :next, :play, :sort_key, :theme_toggle, :update_key,
         
     | 
| 
       1016 
     | 
    
         
            -
                     :info, :help, :quit_key, :search
         
     | 
| 
      
 1044 
     | 
    
         
            +
                     :info, :help, :quit_key, :search, :download_key
         
     | 
| 
       1017 
1045 
     | 
    
         
             
                  self.send ip
         
     | 
| 
       1018 
1046 
     | 
    
         
             
                end
         
     | 
| 
       1019 
1047 
     | 
    
         
             
              end
         
     | 
    
        data/lib/iot/keyboard_events.rb
    CHANGED
    
    | 
         @@ -72,30 +72,30 @@ class KeyboardEvents 
     | 
|
| 
       72 
72 
     | 
    
         
             
                  when "\e"
         
     | 
| 
       73 
73 
     | 
    
         
             
                    @mode = :escape
         
     | 
| 
       74 
74 
     | 
    
         
             
                    :no_event
         
     | 
| 
       75 
     | 
    
         
            -
                  when  
     | 
| 
      
 75 
     | 
    
         
            +
                  when 'd', 'D'
         
     | 
| 
      
 76 
     | 
    
         
            +
                    :download_key
         
     | 
| 
      
 77 
     | 
    
         
            +
                  when 'f', 'F'
         
     | 
| 
      
 78 
     | 
    
         
            +
                    :forward
         
     | 
| 
      
 79 
     | 
    
         
            +
                  when 'h', 'H'
         
     | 
| 
      
 80 
     | 
    
         
            +
                    :help
         
     | 
| 
      
 81 
     | 
    
         
            +
                  when 'i', 'I'
         
     | 
| 
      
 82 
     | 
    
         
            +
                    :info
         
     | 
| 
      
 83 
     | 
    
         
            +
                  when 'l', 'L'
         
     | 
| 
       76 
84 
     | 
    
         
             
                    :list_key
         
     | 
| 
       77 
     | 
    
         
            -
                  when  
     | 
| 
       78 
     | 
    
         
            -
                    :update_key
         
     | 
| 
       79 
     | 
    
         
            -
                  when ' '
         
     | 
| 
      
 85 
     | 
    
         
            +
                  when 'p', 'P', ' '
         
     | 
| 
       80 
86 
     | 
    
         
             
                    :pause
         
     | 
| 
       81 
     | 
    
         
            -
                  when  
     | 
| 
      
 87 
     | 
    
         
            +
                  when 'q', 'Q', "\u0003", "\u0004"
         
     | 
| 
       82 
88 
     | 
    
         
             
                    :quit_key
         
     | 
| 
       83 
     | 
    
         
            -
                  when 'p', 'P'
         
     | 
| 
       84 
     | 
    
         
            -
                    :pause
         
     | 
| 
       85 
     | 
    
         
            -
                  when 'f', 'F'
         
     | 
| 
       86 
     | 
    
         
            -
                    :forward
         
     | 
| 
       87 
89 
     | 
    
         
             
                  when 'r', 'R'
         
     | 
| 
       88 
90 
     | 
    
         
             
                    :rewind
         
     | 
| 
       89 
91 
     | 
    
         
             
                  when 's', 'S'
         
     | 
| 
       90 
92 
     | 
    
         
             
                    :sort_key
         
     | 
| 
       91 
93 
     | 
    
         
             
                  when 't', 'T'
         
     | 
| 
       92 
94 
     | 
    
         
             
                    :theme_toggle
         
     | 
| 
      
 95 
     | 
    
         
            +
                  when 'u', 'U'
         
     | 
| 
      
 96 
     | 
    
         
            +
                    :update_key
         
     | 
| 
       93 
97 
     | 
    
         
             
                  when 'x', 'X', "\r"
         
     | 
| 
       94 
98 
     | 
    
         
             
                    :play
         
     | 
| 
       95 
     | 
    
         
            -
                  when 'i', 'I'
         
     | 
| 
       96 
     | 
    
         
            -
                    :info
         
     | 
| 
       97 
     | 
    
         
            -
                  when 'h', 'H'
         
     | 
| 
       98 
     | 
    
         
            -
                    :help
         
     | 
| 
       99 
99 
     | 
    
         
             
                  when '?'
         
     | 
| 
       100 
100 
     | 
    
         
             
                    :search
         
     | 
| 
       101 
101 
     | 
    
         
             
                  else
         
     |