Posts tagged ‘modify Spotify app to copy text with spicetify-cli’

先日書いたspicetify-cliのCSSを改造して できるようにした。結局、Spotifyアプリの実体はHTMLで、元々はコピーできるのだが、なぜか無効にしていたので、それを再度有効にすればいいだけの話だった。

こういうことは今までにも何度も見た(例: Webで右クリック禁止)が、全くクソ馬鹿野郎だと思う。考えが浅はかだ。そうやってユーザーの利便性を落として、どういう意味・価値があるのか。そんなに自分の財産を保護したいなら、公開せずに後生大事に金庫にでも保存していればいいのに! もし意識せずにそうなったのなら、もっと低レベルだ。

文学作品だったら少しは分かるが、単なる技術的とか豆知識とかの類でコピペ禁止にしたって、嫌がらせ以外に何の意味もないよ。

文学作品や歌詞だって、データをコピーするのはユーザーの自由で、それを合法的に使うのには何の問題もないのに、最初から疑ってできないようにするのは ちょっと違うと思う。

CSSは得意でないので結構苦労したが、基本的には、CSS中でコピーしたい要素の user-select プロパティを text などに変更すれば良い。

苦労したのは、以前の版(現行もそうかも)のSpotifyアプリのCSSがぐちゃくちゃで、同じような要素が別のクラスになっているので、「探しては設定する」を何度も繰り返した(そこまでする必要はなかったが、ついムキになったw)。

参考までに、以下に、以前の版(1:1.1.68.632.g2b11de83)のSpotifyアプリに対するspicetify-cli(1.2.1)のデフォルトのテーマ(SpicetifyDefault)の改造版のuser.cssへの追加分を載せる。ただし、他にもいろいろ変更しているので、これだけではうまく行かないかも知れないし、残った(コピーできない)部分があるかも知れない。でも、基本的なアイデアはこれだけ(コードは長く見えるが、主要部分は下から2行目のたった1行だけ)だ。

/* Make texts selectable.: Butty */
/* Not effective/useful in some part (eg. tracks in track list). 
  Because, possibly, the draggable attribute is set by JS.: TODO */
[draggable] {
  user-select: unset;
}

#document, /* Not enough: Reset later by JS. */
/* For playlist page. */
.glue-page-header__content-inner, 
.playlist-content,
/* For album page. */
.Header__content, 
.AlbumRoot__content .glue-page-wrapper,
/* Sidebar and player control (bottom). */
.LeftSidebar, .view-player, 
/* Others. */
.tracklist-album, .tracklist-chart, .tracklist-basic, .tracklist-playlist, 
  .tracklist-podcast, .tracklist-popular, .tracklist-station, .tracklist-queue, .tracklist-search,
.HomeRoot, .MadeForYouRoot, 
.RadioHubRoot, .RecentlyPlayedPage,
.App__description, .app-content, .App__content, .App,
/* For credits. */
.CreditsModalContent
{
  user-select: text;
}

これで、マウスのドラッグやCtrl-Aで以下のようにテキストが選択でき、当然ながらCtrl-Cでクリップボードにコピーできるようになった。

Spotifyアプリからテキストをコピーできるようにした。(全選択した状態)

なお、サイドバーと下部のプレイヤー制御部が選択されていないが、別の要素のためのようで、どちらかの部分でCtrl-Aを押すと選択できる。

なお、思い付き+勢いでやってみたため、ちょっと不便なことがある。ボタンなどの余計なテキストも選択され、また、曲一覧の部分では思った部分がなかなかマウスで選択できず、特定の曲の選択が難しいのだ。これはHTMLの作り(JSで設定されたdraggable属性はCSSでは解除できない)と僕の未熟さのせいで、基本的にはちゃんとできるはずだ。

あと、全然見ない(ので忘れて居た)のと、一応 日本での取り扱い状況を尊重して、歌詞をコピーできるようにはしていない。

 

実際に使うか使わないかは別として、「(クソみたいな制限なんてせず、)できるものはできるままにしておく」ってのが僕の主義なので やってみた。

  •  0
  •  1
Keys: ,