วิธีการใช้งาน Rhythmbox python console


13

บางทีนี่อาจจะชัดเจนและฉันพลาดไปหรืออาจมีบางคนเขียนคู่มือที่ยอดเยี่ยมแล้วและ googling (ดูครบถ้วนสมบูรณ์) ของฉันไม่สามารถเปิดใช้งานได้ แต่ฉันไม่สามารถคิดออกเกี่ยวกับชีวิตของฉันวิธีรับคอนโซลงูใหญ่ใน rhythmbox ที่จะทำอะไร!

ฉันได้เปิดใช้งานจากเมนูปลั๊กอินแล้วเปิดโดยใช้เครื่องมือ -> Python Console

มันพิมพ์

You can access the main window through the 'shell' variable :
<rb.Shell object at 0xa6cdd24 (RBShell at 0xa14e000)>
>>> 

แต่สิ่งที่ฉันพิมพ์ที่พรอมต์ไม่ทำอะไรเลย ! ฉันได้ลองhelpฉันได้ลองexit()แล้วฉันได้ลองprint "hello world"แล้วไม่ได้ทำอะไรเลย!

แน่นอนว่าสิ่งเหล่านี้ทั้งหมดทำงานได้ในคอนโซลงูหลามปกติ ฉันไม่รู้ว่าปีศาจแตกต่างอยู่ที่นี่! ฉันควรจะทำอย่างอื่นนอกเหนือจากการกดปุ่ม Enter?


ฉันเพิ่งรู้ "rhythmbox-client -h" จาก terminal +1 สำหรับทำให้ตระหนักถึงปลั๊กอินนี้
Rojan

คำตอบ:


8

คู่มือการเขียน Rhythmbox ปลั๊กอินมีหลายตัวอย่างของคำสั่งที่คุณสามารถใช้ในหลามคอนโซลควบคุมการเล่นและปรับเปลี่ยน Rhythmbox:

  • เล่น / หยุดชั่วคราว

    shell.props.shell_player.playpause()
  • หยุด

    shell.props.shell_player.stop()
  • ติดตามต่อไป

    shell.props.shell_player.do_next()
  • เพิ่มเพลงลงใน Play Queue

    shell.add_to_queue("file://awsome_song.ogg")
  • แสดงภาพข้อมูล

    import gst
    goom = gst.element_factory_make ("goom")
    sink = gst.element_factory_make ("ximagesink")
    colour = gst.element_factory_make ("ffmpegcolorspace")
    b = gst.Bin()
    b.add (goom, colour, sink)
    b.add_pad(gst.GhostPad("sink", goom.get_pad("sink")))
    goom.link(colour)
    colour.link(sink)
    shell.get_player().props.player.add_tee(b)

สิ่งนี้มีประโยชน์และจริง ๆ แล้วฉันเคยพบสิ่งนี้มาก่อน แต่สิ่งที่ฉันกำลังมองหาคือวิธีการใช้คอนโซลจริงๆ มันเหมือนกับคอนโซลงูหลามธรรมดาหรือไม่ พิมพ์คำสั่งแล้วกด Enter? ถ้าเป็นเช่นนั้นเหมืองของฉันจะแตก เมื่อฉันพิมพ์คำสั่งและกด Enter ก็แค่สร้างบรรทัดใหม่โดยไม่ต้องดำเนินการบรรทัดรหัส ตราบใดที่ฉันรู้ว่ามันพังแล้วฉันก็สามารถขอความช่วยเหลือเพื่อแก้ไขได้ ฉันแค่อยากจะทำให้แน่ใจว่าฉันไม่ได้ทำอะไรที่เป็นใบ้ (และไม่สามารถหาการใช้เอกสารนี้ได้เลย!)
TJ Ellis

นั่นเสียงเหมือนอะไรบางอย่างเสีย ใน rhythmbox-0.12.8-0ubuntu7 ที่ไม่มีปลั๊กอินอื่นที่เปิดใช้งานคอนโซลทำงานเหมือนกับคอนโซล Python ทั่วไปเช่นพิมพ์print "hello world"จากนั้นกด Enter ฉันไม่เห็นปัญหานี้รายงานที่ใด ๆ ดังนั้นคุณอาจพิจารณาการเปิดข้อผิดพลาดใหม่ในบั๊ก Rhythmbox
ændrük

1
ขอขอบคุณ! ตอนนี้ฉันรู้แล้วว่ามันพังฉันจะแหย่อีกเล็กน้อยแล้วยื่นรายงานข้อผิดพลาด
TJ Ellis

โปรดทราบว่าอย่างน้อยที่สุดของ Ubuntu Trusty 14.04, rhythmbox ฝัง python 3.4.0 ดังนั้นคำสั่ง 'พิมพ์' hello world '' เป็นข้อผิดพลาดทางไวยากรณ์;) ให้ใช้ฟังก์ชันการพิมพ์ Python 3 ใหม่: 'print ("hello world")'
nealmcb

โปรดทราบว่าบางตัวอย่างเหล่านี้ไม่สามารถใช้งานใน Trusty ได้อีกต่อไป ดูคำแนะนำบางอย่างเกี่ยวกับสิ่งที่ต้องทำแทน shell.add_to_queue () นี่ - แม้ว่ามันจะดูมากซับซ้อนมากขึ้นโชคร้าย: mail.gnome.org/archives/rhythmbox-devel/2011-April/...
nealmcb

6

เช่นเดียวกับออบเจ็กต์ Python คุณสามารถค้นหาได้มากโดยใช้เมธอด dir () นี่จะเป็นจุดเริ่มต้นที่ดีสำหรับคุณ

You can access the main window through the 'shell' variable :
<rb.Shell object at 0x9e9675c (RBShell at 0x987b018)>
>>> dir(rb.Shell)
['__class__', '__cmp__', '__copy__', '__deepcopy__', '__delattr__', '__dict__',
'__doc__', '__format__', '__gdoc__', '__getattribute__', '__gobject_init__', 
'__grefcount__', '__gtype__', '__hash__', '__init__', '__module__', '__new__', 
'__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__',
'__subclasshook__', 'add_to_queue', 'add_uri', 'add_widget', 'append_source',
'chain', 'connect', 'connect_after', 'connect_object', 'connect_object_after',
'disconnect', 'disconnect_by_func', 'do_notify', 'emit', 'emit_stop_by_name',
'freeze_notify', 'get_data', 'get_party_mode', 'get_player',
'get_playlist_manager', 'get_properties', 'get_property',
'get_source_by_entry_type', 'get_ui_manager', 'guess_source_for_uri', 
'handler_block', 'handler_block_by_func', 'handler_disconnect',
'handler_is_connected','handler_unblock', 'handler_unblock_by_func', 'load_uri',
'notebook_set_page', 'notify', 'notify_custom', 'present', 'props',
'register_entry_type_for_source', 'remove_from_queue', 'remove_widget',
'set_data', 'set_properties', 'set_property', 'stop_emission', 'thaw_notify',
'toggle_visibility', 'weak_ref']

จากนั้นคุณสามารถ dir () คุณสมบัติที่น่าสนใจเช่น 'get_player' ก็ได้

อีกหนึ่งสถานที่ที่น่ามองคือถ้าคุณเห็นแอตทริบิวต์ __doc__ บนวัตถุ

>>> print rb.Shell.__doc__
Object RBShell

Signals from RBShell:
  visibility-changed (gboolean)
  visibility-changing (gboolean, gboolean) -> gboolean
  create-song-info (RBSongInfo, gboolean)
  removable-media-scan-finished ()
  notify-playing-entry (gboolean)
  notify-custom (guint, gchararray, gchararray, GdkPixbuf, gboolean)

Properties from RBShell:
  no-registration -> gboolean: no-registration
    Whether or not to register
  no-update -> gboolean: no-update
    Whether or not to update the library
  dry-run -> gboolean: dry-run
    Whether or not this is a dry run
  rhythmdb-file -> gchararray: rhythmdb-file
    The RhythmDB file to use
  playlists-file -> gchararray: playlists-file
    The playlists file to use
  selected-source -> RBSource: selected-source
    Source which is currently selected
  db -> RhythmDB: RhythmDB
    RhythmDB object
  ui-manager -> GtkUIManager: GtkUIManager
    GtkUIManager object
  clipboard -> RBShellClipboard: RBShellClipboard
    RBShellClipboard object
  playlist-manager -> RBPlaylistManager: RBPlaylistManager
    RBPlaylistManager object
  removable-media-manager -> RBRemovableMediaManager: RBRemovableMediaManager
    RBRemovableMediaManager object
  shell-player -> RBShellPlayer: RBShellPlayer
    RBShellPlayer object
  window -> GtkWindow: GtkWindow
    GtkWindow object
  prefs -> RBShellPreferences: RBShellPreferences
    RBShellPreferences object
  queue-source -> RBPlayQueueSource: queue-source
    Queue source
  library-source -> RBLibrarySource: library-source
    Library source
  sourcelist-model -> RBSourceListModel: sourcelist-model
    RBSourcelistModel
  sourcelist -> RBSourceList: sourcelist
    RBSourcelist
  source-header -> RBSourceHeader: source header widget
    RBSourceHeader
  visibility -> gboolean: visibility
    Current window visibility

Signals from GObject:
  notify (GParam)

มันมีประโยชน์ถ้าฉันสามารถใช้ gorram console ได้เลย! อย่างที่มันเป็นถ้าฉันพิมพ์dir(rb.Shell)และกด Enter มันแค่เพิ่มตัวแบ่งบรรทัดและไม่ทำอะไรเลย ... เชลล์ของคุณทำงาน OOB หรือไม่ ฉันมีการติดตั้ง rhythmbox เริ่มต้นบน Ubuntu 10.04 .... ฉันไม่สามารถนึกถึงสิ่งที่ฉันเปลี่ยนไปซึ่งจะทำให้เชลล์แตก คอนโซลหลามปกติของฉัน (นอก RB) ทำงานได้ดี ...
TJ เอลลิส

หืมมใช่เปลือกของฉันใช้ได้ดีโดยไม่มีการดัดแปลง
brousch

3

อึศักดิ์สิทธิ์ฉันเพิ่งค้นพบว่าปัญหาคืออะไร (2.5 ปีต่อมา) - ด้วยเหตุผลบางอย่างของฉัน "ป้อน" แผนที่สำคัญสองเหตุการณ์สำคัญที่แตกต่างกันขึ้นอยู่กับว่า numlock เปิดหรือปิด เมื่อ NumLock อยู่บนก็จะส่งกลับKP_ENTERและเมื่อ NumLock Returnปิดก็จะส่งกลับ ฉันมักจะเปิดใช้ numlock เสมอเพราะฉันชอบป้อนตัวเลขด้วยปุ่มกด

น่าเสียดายที่ไพ ธ อนคอนโซลใน Rhythmbox จำได้ว่าReturnรันคำสั่งเท่านั้น - KP_ENTERเหตุการณ์เพิ่งเข้าสู่ตัวแบ่งบรรทัด ...

แต่แก้ไขได้ง่ายเพียงปิด numlock เมื่อใช้คอนโซล ฉันพบปัญหานี้ในแอปพลิเคชั่นอื่น ๆ (โดยทั่วไปจะเป็นเกม) ดังนั้นฉันจะดูวิธีแก้ปัญหาระยะยาวที่ดีขึ้น (อาจบังคับให้ทั้งคู่ทำแผนที่เป็นReturnอย่างใด) ...


1
ในกรณีที่คนอื่นมีปัญหานี้ฉันหาวิธีแก้ปัญหาระยะยาว: xmodmap -pke > ~/.Xmodmap เพื่อสร้างเลย์เอาต์ที่กำหนดเองจากนั้นในตอนท้ายของไฟล์นั้นเพิ่มบรรทัด keysym KP_Enter = Return แล้วเรียกใช้xmodmap ~/.Xmodmapเพื่อเปิดใช้งานเลย์เอาต์ที่กำหนดเองใหม่สำหรับเซสชั่นนี้ หากต้องการทำให้การทำงานอัตโนมัติเป็นไปในอนาคตให้เพิ่มสิ่งต่อไปนี้ลงใน~/.xinitrc:if [ -f $HOME/.Xmodmap ]; then /usr/bin/xmodmap $HOME/.Xmodmap fi
TJ Ellis

ความคิดเห็นคำสาปและการขาดตัวแบ่งบรรทัด! ifงบเพิ่มให้กับ.xinitrcความต้องการที่จะมีการแบ่งบรรทัดหลังและก่อนที่then fi
TJ Ellis

ทำไมคุณไม่ใช้returnกุญแจแทนกุญแจของ numlock enter?
Timo

ฉันใช้ปุ่ม "Enter" หลักไม่ใช่ปุ่มหนึ่งใน numpad; ด้วยเหตุผลบางอย่างที่มีการเปิด / ปิด Numlock ก็สร้างความแตกต่างให้กับสิ่งนั้นเช่นกัน
TJ Ellis

CentOS 6.7 แต่ด้วยงูใหญ่งูใหญ่ปุ่ม Enter บน NumberPad มีผลกระทบที่แตกต่างเล็กน้อยจากปุ่ม Enter บนแป้นพิมพ์หลัก NumLock ไม่มีผลกระทบ แป้นพิมพ์หลัก Enter จะส่งคืนพร้อมต์ '>>>' แต่ NumberPad Enter จะส่งคืนบรรทัดว่าง
rjt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.