悪い言葉とそれが誰になるかによる単純なVKテープフィルター

こんにちは、Habr。



リトリート:


この投稿では、すべての病気に同じ薬を見つけることはできませんが、完全に美しいわけではありませんが、原子の問題に対する解決策があります。 この投稿の目的は、より多くのフィードバックを取得し、ディスカッションを開始し、アイデアに感染し、プッシュすることです。 この場合、VKontakteについて話しますが、このソーシャルから抽象化するよう読者にお願いします。 ネットワークを構築し、よりグローバルに見てください。





問題:


VKontakteには、単一の投稿を非表示にし、特定の人、グループ、およびアプリケーションからの投稿の表示をブロックする機能があります。 ただし、不適切なコンテンツを含む投稿を非表示にすることはできません。



簡単な例で説明します。


私は音楽コミュニティに登録しています。定期的にプレイリストを更新したり、新しいグループをランダムに学習したりしています。 しかし、私は同じ広告の投稿を1日に数回見たくありません。 再投稿では、すべてが簡単です。ソースをブロックできます。 しかし、コミュニティ自体に代わって投稿を広告するのはどうでしょうか? はい、ストリーム内のコミュニティの投稿をブロックし、定期的に新しい音楽のために立ち寄ることができますが、ここでは使いやすさが失われます。 例は、唯一のものではありません。 フィードには興味深い投稿を含む多くのコミュニティや人々がいますが、時々、時には多くの不要な投稿がそれらから散らばっています。



問題から解決策まで:


選択はjavascriptにかかっていました。 コンソールとコードの準備が少しできました:



function setWords() { words = prompt('Enter bad words and phrases. Comma separated (,).',localStorage.getItem('bad_words')); if(typeof(words) == 'string') { localStorage.setItem('bad_words',words); } } function hunt() { if( ! localStorage.getItem('bad_words')) { setWords(); return; } textArr = localStorage.getItem('shit_words').split(','); posts = document.getElementsByClassName('feed_row'); for(ii =0; ii<posts.length; ii++) { for(ll = 0; ll<textArr.length; ll++) { if(posts[ii].innerText.search(textArr[ll].trim()) > 0) { thepost = document.getElementsByClassName('feed_row')[ii].children[0]; idToDel = thepost.getAttribute('id').split('post')[1]; delElement = document.getElementById('post_delete'+idToDel); if(delElement) {delElement.click();} break; } } } setTimeout('hunt()',5000); }; hunt(); if( ! document.getElementById('vk_feed_cleaner')) { menuVK=document.getElementById('side_bar').children[0]; a=document.createElement('a'); a.setAttribute('href','javascript:setWords();'); a.innerText = 'Set Bad Words'; li=document.createElement('li'); li.setAttribute('id','vk_feed_cleaner'); li.appendChild(a); menuVK.appendChild(li); }
      
      







不名誉の原則は簡単です:


コンソールでスクリプトを実行します。

最初の開始時に、「悪い」単語やフレーズを入力するように求められます。 (カンマ区切り)

単語をlocalStorageに保存します。

5秒ごとに、投稿のコンテンツを調べます。クラス「feed_row」のHTML要素

要素テキストに少なくとも1つの悪い単語が見つかった場合、プログラムでHTML要素をクリックして投稿を削除します。

サイドメニューにリンクが配置されます。[悪い単語を設定]をクリックすると、悪い単語のリストを変更できます。



jsfiddle.net/U2r9k/7-ブックマークバーにドラッグしてリンクがあり、クリックしてコードをアクティブにできます。



最適化されていませんか? 木製? セクシーじゃない? 主に機能し、私の問題は解決しました。 私だけでなく多くの人を助けてくれることを本当に願っています。



すぐにプロセスの最適化に関する私の頭の中の考えに入りました。



短所は明らかです:


スクリプトでは、ページを開くたびまたはページを再ロードするたびに起動する必要があります。

大きな辞書はブラウザをロードします。



この問題の可能な解決策:


ブラウザー拡張機能を作成します。

アカウントへのアクセスを許可するオフラインアプリケーションを作成します。 アプリケーションは、24時間テープをフィルターします。



もちろん、2番目のオプションの方が優れています。 1つのアプリケーションがクロスプラットフォームの問題を解決します。 しかし、最初のオプションには、ペアレンタルコントロールという存在する権利もあります。



オフラインアプリケーションがユーザーの個人フィードのみをフィルター処理できる場合、ブラウザー拡張機能はユーザーと共に「歩きます」。 まだ使用していない子供がいますが、すぐにコンピューターを使用する予定です。



アプリケーションがこのようなシンプルなサービスに発展できると想像してください。そこでは、カテゴリごとに辞書/マスクのオンラインデータベースがあります(例:VK 18+、クラスメート広告)

また、複数のソーシャルをサポートするブラウザー拡張機能。 ネットワーク。

拡張機能をインストールし、辞書を選択します。 子はビデオを検索し、彼のニュース、他の人のページ、コミュニティを表示し、コンテンツはフィルターを通過し、不要な要素は非表示/削除されます。

一種のAdBlockアナログ。



別の問題があります-重複。 再投稿についてではなく、特定のコミュニティ/人に代わって同じコンテンツが投稿された場​​合についてです。 状況は非常に一般的です。 おそらく、これはデータベースに一種の投稿のフィンガープリントを保存するアプリケーションです。「すでに見たことがあるので、もう表示することはできません。」 多くの場合、投稿は互いに単にコピーされ、コンテンツがコピーされることはほとんどありません。 ちなみに、このようなアプリケーションを使用すると、フィードに広告が繰り返し投稿される問題は解決されます。



このテーマに関するハブロフスク住民の興味深い意見。



そして最後に、トピックに関する調査。



PSおそらくそのようなアプリケーション/サービスは既に存在しますが、誰かが知っているなら、私はそれを見つけませんでした。



すべてに良い。



All Articles