Ityক্যের জন্য কুইকলিস্ট স্পটিফাই করুন


10

আমি কীভাবে স্পটিফাইয়ের জন্য একটি ইউনিট "কুইকলিস্ট" যুক্ত করতে পারি (তাদের ওয়েবসাইট থেকে ইনস্টল করা), যাতে আমি যখন আমার ডকের আইকনে ডান ক্লিক করি, তখন আমি পেয়ে যাই: "নেক্সট, পূর্ববর্তী, স্টপ, প্লে" ইত্যাদি?

উত্তর:


5

স্পটফাইফ (নেটিভ লিনাক্স ক্লায়েন্ট)

যেহেতু স্পটফাইটিতে এর কয়েকটি ফাংশন নিয়ন্ত্রণের জন্য একটি সূচক অন্তর্ভুক্ত তাই এটি আমাদের dbusইভেন্টগুলি প্রেরণে ব্যবহার করতে দেয় ।

উবুন্টুফর্মগুলিতে একটি দুর্দান্ত স্ক্রিপ্ট রয়েছে যা এটি কভার করে।

প্রথমে একটি পূর্বশর্ত ইনস্টল করুন:

sudo apt-get install libnet-dbus-perl

এখন স্ক্রিপ্টটি অনুলিপি করে একটি পাঠানো ফাইল বলে spcmdএবং এটি আপনার হোম ফোল্ডারে সংরক্ষণ করুন।

এটিকে কার্যকর করার অধিকার দিন:

chmod +x ~/spcmd

এটিকে আরও কার্যকর ফোল্ডারে স্থানান্তর করতে দিন:

mv ~/spcmd /usr/local/bin

এখন, একটি দ্রুত তালিকা তৈরি করা যাক।

প্রথমে আপনার হোম ফোল্ডারে স্পটিফাই ডেস্কটপ ফাইলটি অনুলিপি করুন:

mkdir -p ~/.local/share/applications
cp /usr/share/applications/spotify.desktop ~/.local/share/applications

ফাইলটি খুলুন এবং ফাইলটির শেষে দ্রুত তালিকাটি অনুলিপি করুন এবং পেস্ট করুন। এটি সংরক্ষণ করুন.

gedit ~/.local/share/applications/spotify.desktop

শেষ ফলাফল

এখানে চিত্র বর্ণনা লিখুন

দ্রুত সূচী

X-Ayatana-Desktop-Shortcuts=PlayPause;Next;Previous;Stop;

[PlayPause Shortcut Group]
Name=PlayPause
Exec=spcmd playpause
TargetEnvironment=Unity

[Next Shortcut Group]
Name=Next
Exec=spcmd next
TargetEnvironment=Unity

[Previous Shortcut Group]
Name=Previous
Exec=spcmd previous
TargetEnvironment=Unity

[Stop Shortcut Group]
Name=Stop
Exec=spcmd stop
TargetEnvironment=Unity

spcmd

#!/usr/bin/perl

use 5.010;
use strict;
use warnings;
use File::Basename;
use Net::DBus;

# Figure out some dbus stuff
unless ( defined $ENV{'DBUS_SESSION_BUS_ADDRESS'} ) {
&set_DBUS_SESSION_BUS_ADDRESS;
#die "Don't know which dbus to attach to.\nMake sure environment variable DBUS_SESSION_BUS_ADDRESS is set.";
}
#my $bus = Net::DBus->find;
my $bus = Net::DBus->session;
my $spotify = $bus->get_service("org.mpris.MediaPlayer2.spotify");
my $player = $spotify->get_object("/org/mpris/MediaPlayer2", "org.mpris.MediaPlayer2.Player");
my $application = $spotify->get_object("/org/mpris/MediaPlayer2", "org.mpris.MediaPlayer2");
my $getorset = $spotify->get_object("/org/mpris/MediaPlayer2", "org.freedesktop.DBus.Properties");

# Handle command line argument
if (scalar @ARGV == 0) { &print_help; }
given ($ARGV[0]) {
# when ('play') { $player->Play(); } #Does not work for some reason.
when ('pause') { $player->Pause(); }
when ('playpause') { $player->PlayPause(); }
when ('next') { $player->Next(); }
when ('previous') { $player->Previous(); }
when ('stop') { $player->Stop(); }
when ('playstatus') { print $getorset->Get("org.mpris.MediaPlayer2.Player", "PlaybackStatus") . "\n"; }
when (m/\bspotify:(artist|album|track):[0-9a-zA-z]{22}\b/) { $player->OpenUri($_); }
when ('metadata-debug') { &print_debug_metadata; }
default { &print_help; }
}


# Print the help text
sub print_help {
print "USAGE: " . basename($0) . " {pause|playpause|next|previous|stop|playstatus|met adata-debug|<spotify URI>}\n\n";
print "\t" . "pause" . "\t\t" . "Causes spotify to pause current playback." . "\n";
print "\t" . "playpause" . "\t" . "Causes spotify to pause or play current playback." . "\n";
print "\t" . "next" . "\t\t" . "Goes to next song." . "\n";
print "\t" . "previous" . "\t" . "Goes to previous song." . "\n";
print "\t" . "stop" . "\t\t" . "Stops playback." . "\n";
print "\t" . "playstatus" . "\t" . "Prints current playstatus (Playing/Paused)." . "\n";
print "\t" . "<spotify URI>" . "\t" . "Starts playing supplied URI." . "\n";
print "\t" . "metadata-debug" . "\t" . "Shows available data on currently playing song." . "\n";
print "\t" . "\t\t" . "Fairly unformatted, thus \"debug\" data." . "\n";
print "\n";
print "EXAMPLES:\t" . basename($0) . " playpause" . "\n";
print "\t\t" . basename($0) . " spotify:track:5XXAq1r5r73ZyBS0XAiGw0" . "\n";

exit;
}

# Print some raw metadata
sub print_debug_metadata {
# Dereference the metadata hashref by copying it to a local hash
my %metadata = %{ $getorset->Get("org.mpris.MediaPlayer2.Player", "Metadata") };

# Print all metadata
print "Now Playing:\n";
for (keys %metadata) {
print $_ . ":\t" . $metadata{$_} . "\n" unless ($_ eq 'xesam:artist');
}

# Dereference the artist arrayref by copying it to local array
my @artistarray = @{ $metadata{'xesam:artist'} };

# Print all artists.
foreach my $artist (@artistarray) {
print "artist: \t" . $artist . "\n";
}
}

sub set_DBUS_SESSION_BUS_ADDRESS {
my $curruser = `whoami`; chomp $curruser;
my $procname = 'spotify';
my $pid = `pgrep -o -u $curruser $procname`; chomp $pid;
my $environ = '/proc/' . $pid . '/environ';
my $dbussession = `grep -z DBUS_SESSION_BUS_ADDRESS $environ`; $dbussession =~ s/^DBUS_SESSION_BUS_ADDRESS=//;

$ENV{'DBUS_SESSION_BUS_ADDRESS'} = $dbussession;
}

5

আমি মনে করি এ পর্যন্ত দেওয়া উত্তরগুলি কিছুটা জটিল বিষয়। কোনও আলাদা স্ক্রিপ্টের প্রয়োজন নেই, সম্পর্কিত ডিবিাস কমান্ডগুলি সরাসরি মাধ্যমে প্রেরণ করা যায় dbus-senddbusপ্যাকেজ ইনস্টল করা আছে এবং কমান্ড লাইনে নিম্নলিখিত কমান্ডগুলি ইস্যু করে তা নিশ্চিত করুন :

mkdir -p ~/.local/share/applications
cp /usr/share/applications/spotify.desktop ~/.local/share/applications/

~/.local/share/applications/spotify.desktopপড়ার জন্য ফাইলটি সম্পাদনা করুন :

[Desktop Entry]
Name=Spotify
GenericName=Music Player
Comment=Listen to music using Spotify
Icon=spotify-client
Exec=spotify %U
TryExec=spotify
Terminal=false
Type=Application
Categories=Qt;Audio;Music;Player;AudioVideo
MimeType=x-scheme-handler/spotify
# ====> MODIFICATIONS START HERE <=====
Actions=PlayPause;Next;Previous

[Desktop Action PlayPause]
Name=Play/Pause
Exec=dbus-send --print-reply=literal --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause
OnlyShowIn=Messaging Menu;Unity;

[Desktop Action Next]
Name=Next
Exec=dbus-send --print-reply=literal --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Next
OnlyShowIn=Messaging Menu;Unity;

[Desktop Action Previous]
Name=Previous
Exec=dbus-send --print-reply=literal --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Previous
OnlyShowIn=Messaging Menu;Unity;

এবং তুমি করে ফেলেছ.


এটি সেরা উত্তর। যাইহোক, আমি যখন নিজে এটি করার চেষ্টা করেছি তখন আমি মিস হয়ে গেলাম --print-reply=literalএবং এটি কার্যকর হয়নি। আপনার কি ব্যাখ্যা আছে? আমি ডিবিসের প্রায় কিছুই জানি না।
তামাস বার্তা

চমত্কার উত্তর :) অতিরিক্ত প্রশ্ন, "থাম্বস-আপ" এবং "থাম্বস-ডাউন" বোতামটিও (স্পটিফ রেডিওতে যেগুলি রয়েছে :) যোগ করা সম্ভব?
লিনাস

2

স্পটফি_সিএমডি হ'ল ওয়াইনের অধীনে স্পোটাইফাইয়ের চলমান দমন নিয়ন্ত্রণের একটি সরঞ্জাম , এটি উইন্ডোতেও কাজ করা উচিত তবে এটি পরীক্ষা করা হয়নি।

স্পটফাইসিএমডি ডাউনলোড করুন । ডেস্কটপে অনুলিপি করুন। তারপর

cd ~/Desktop/
tar -xvjf spotifycmd-0.5.tar.bz2 
sudo cp -r spotifycmd /usr/bin/

দ্রুত তালিকা Exec=/usr/bin/spotifycmd/spotify_cmd.exe XXXXতৈরি করার সময় এখন ব্যবহার করুন ।

এখানে XXXXহয় playpause, next, prev, stop, voldown, volup, ইত্যাদি

আমার উত্তরটির দিকে তাত্ক্ষণিক তালিকা তৈরির গাইডের জন্য


এই উত্তরটি দুর্দান্ত !!!! যদিও স্পিটিফাই_সিএমডি.এক্স.ই কাজ করে আমার সমস্যা হচ্ছে। এটি Can not find spotify, is it running?টার্মিনালে ফিরে আসে । এটি যদিও সঠিক ট্র্যাক!
রায়ান ম্যাকক্লিউর

ওফ, একটি দেশীয় উপায় আছে?
MarkovCh1

পছন্দ করেছেন :(
রাহুল বিরপাড়া

এইচএমএমএম - ত্রুটি দেওয়া - সম্ভবত ওয়াইন ভিত্তিক এই স্পটফাই_সিএমডি কাজের জন্য আপনাকে ওয়াইনের অধীনে স্পটিফাইয়ের উইন্ডোজ সংস্করণটি চালাতে হবে।
ফসফ্রিডম

@ ফসফ্রিডম আপনি ঠিক বলেছেন সন্ধান করা উত্স। এটিতে windows.hএকটি লাইব্রেরি রয়েছে যা Win32 এপিআই সরবরাহ করে।
রাহুল বিরপাড়া

-1

স্পটিফায়ার প্যানেলে একটি আইকন থাকবে। কেবল এটিতে ক্লিক করুন এবং আপনি খেলুন, থামবেন, বিরতি দিন, পরবর্তী ইত্যাদি (সমস্ত মনে রাখবেন না)। নিশ্চিত না যে এটি আপনার প্রশ্নের উত্তর দেয় কিনা।


2
এই প্রশ্নটি জিজ্ঞাসা করছে যে কীভাবে ইউনিটি লঞ্চারে স্পোটিফির আইকনটিতে সেই কার্যকারিতাটি রাখা যায়।
এলিয়াহ কাগন

ঠিক আছে, কেবল আমিই তার প্রশ্নকে ভুল বুঝেছি।
ব্যবহারকারী 66987
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.